summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-09-08 10:05:06 -0400
committer AJR <ajrhacker@users.noreply.github.com>2018-09-08 10:05:06 -0400
commit4a4898a6b29faff9d03c4a7e4b2ff9ef108e54fc (patch)
tree2924e0c09ae39f3f8793904835669d39f0a34ff1
parent80adcb6f16f8d263e109a7d9231a9b7729f8b7d3 (diff)
scn2674/scn2672: Remove MCFG macros (nw)
-rw-r--r--src/devices/video/scn2674.h36
-rw-r--r--src/mame/drivers/ampex210.cpp27
-rw-r--r--src/mame/drivers/cit220.cpp47
-rw-r--r--src/mame/drivers/microterm.cpp60
-rw-r--r--src/mame/drivers/mpu4vid.cpp10
-rw-r--r--src/mame/drivers/octopus.cpp12
-rw-r--r--src/mame/drivers/qvt201.cpp18
-rw-r--r--src/mame/drivers/tr175.cpp45
-rw-r--r--src/mame/drivers/tv955.cpp32
-rw-r--r--src/mame/drivers/tv965.cpp29
-rw-r--r--src/mame/drivers/v550.cpp39
-rw-r--r--src/mame/drivers/vp122.cpp43
-rw-r--r--src/mame/video/pcd.cpp21
13 files changed, 213 insertions, 206 deletions
diff --git a/src/devices/video/scn2674.h b/src/devices/video/scn2674.h
index 0d75ef883ff..b594f0dcb52 100644
--- a/src/devices/video/scn2674.h
+++ b/src/devices/video/scn2674.h
@@ -6,27 +6,8 @@
#pragma once
-#define MCFG_SCN2672_INTR_CALLBACK(_intr) \
- downcast<scn2672_device &>(*device).set_intr_callback(DEVCB_##_intr);
-
-#define MCFG_SCN2672_CHARACTER_WIDTH(_value) \
- downcast<scn2672_device &>(*device).set_character_width(_value);
-
-#define MCFG_SCN2672_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \
- downcast<scn2672_device &>(*device).set_display_callback(scn2672_device::draw_character_delegate(&_class::_method, #_class "::" #_method, this));
-
#define SCN2672_DRAW_CHARACTER_MEMBER(_name) void _name(bitmap_rgb32 &bitmap, int x, int y, uint8_t linecount, uint8_t charcode, uint8_t attrcode, uint16_t address, bool cursor, bool dw, bool lg, bool ul, bool blink)
-
-#define MCFG_SCN2674_INTR_CALLBACK(_intr) \
- downcast<scn2674_device &>(*device).set_intr_callback(DEVCB_##_intr);
-
-#define MCFG_SCN2674_CHARACTER_WIDTH(_value) \
- downcast<scn2674_device &>(*device).set_character_width(_value);
-
-#define MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(_class, _method) \
- downcast<scn2674_device &>(*device).set_display_callback(scn2674_device::draw_character_delegate(&_class::_method, #_class "::" #_method, this));
-
#define SCN2674_DRAW_CHARACTER_MEMBER(_name) void _name(bitmap_rgb32 &bitmap, int x, int y, uint8_t linecount, uint8_t charcode, uint8_t attrcode, uint16_t address, bool cursor, bool dw, bool lg, bool ul, bool blink)
@@ -40,9 +21,22 @@ public:
typedef device_delegate<void (bitmap_rgb32 &bitmap, int x, int y, uint8_t linecount, uint8_t charcode, uint8_t attrcode, uint16_t address, bool cursor, bool dw, bool lg, bool ul, bool blink)> draw_character_delegate;
// static configuration
- template <class Object> devcb_base &set_intr_callback(Object &&cb) { return m_intr_cb.set_callback(std::forward<Object>(cb)); }
+ auto intr_callback() { return m_intr_cb.bind(); }
void set_character_width(int value) { m_hpixels_per_column = value; }
- template <typename Object> void set_display_callback(Object &&cb) { m_display_cb = std::forward<Object>(cb); }
+ template <class FunctionClass>
+ void set_display_callback(void (FunctionClass::*callback)(bitmap_rgb32 &, int, int, uint8_t, uint8_t, uint8_t, uint16_t, bool, bool, bool, bool, bool), const char *name)
+ {
+ set_display_callback(draw_character_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+ template <class FunctionClass>
+ void set_display_callback(const char *devname, void (FunctionClass::*callback)(bitmap_rgb32 &, int, int, uint8_t, uint8_t, uint8_t, uint16_t, bool, bool, bool, bool, bool), const char *name)
+ {
+ set_display_callback(draw_character_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+ void set_display_callback(draw_character_delegate callback)
+ {
+ m_display_cb = callback;
+ }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/mame/drivers/ampex210.cpp b/src/mame/drivers/ampex210.cpp
index ea8f2bbc8ff..62a576a9594 100644
--- a/src/mame/drivers/ampex210.cpp
+++ b/src/mame/drivers/ampex210.cpp
@@ -58,24 +58,25 @@ static INPUT_PORTS_START(ampex210p)
INPUT_PORTS_END
-MACHINE_CONFIG_START(ampex210_state::ampex210p)
- MCFG_DEVICE_ADD("maincpu", Z80, 4'000'000)
- MCFG_DEVICE_PROGRAM_MAP(mem_map)
- MCFG_DEVICE_IO_MAP(io_map)
+void ampex210_state::ampex210p(machine_config &config)
+{
+ Z80(config, m_maincpu, 4'000'000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &ampex210_state::mem_map);
+ m_maincpu->set_addrmap(AS_IO, &ampex210_state::io_map);
mos6551_device &acia(MOS6551(config, "acia", 1'843'200));
acia.irq_handler().set_inputline("maincpu", INPUT_LINE_IRQ0);
- MCFG_DEVICE_ADD("pvtc", SCN2672, 2'178'000)
- MCFG_SCN2672_INTR_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
- MCFG_SCN2672_CHARACTER_WIDTH(10)
- MCFG_SCN2672_DRAW_CHARACTER_CALLBACK_OWNER(ampex210_state, draw_character)
- MCFG_VIDEO_SET_SCREEN("screen")
+ scn2672_device &pvtc(SCN2672(config, "pvtc", 2'178'000));
+ pvtc.intr_callback().set_inputline("maincpu", INPUT_LINE_NMI);
+ pvtc.set_character_width(10);
+ pvtc.set_display_callback(FUNC(ampex210_state::draw_character));
+ pvtc.set_screen("screen");
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(21'780'000, 1000, 0, 800, 363, 0, 300) // clock guessed
- MCFG_SCREEN_UPDATE_DEVICE("pvtc", scn2672_device, screen_update)
-MACHINE_CONFIG_END
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_raw(21'780'000, 1000, 0, 800, 363, 0, 300); // clock guessed
+ screen.set_screen_update("pvtc", FUNC(scn2672_device::screen_update));
+}
ROM_START(ampex210p) // Z80 (+6551,MC2672,3515260-01, 3 xtals, speaker) // 8k ram // amber
diff --git a/src/mame/drivers/cit220.cpp b/src/mame/drivers/cit220.cpp
index 806ddd99cf3..851c8fd4309 100644
--- a/src/mame/drivers/cit220.cpp
+++ b/src/mame/drivers/cit220.cpp
@@ -42,7 +42,7 @@ private:
void keyboard_map(address_map &map);
void kbd_io_map(address_map &map);
- required_device<cpu_device> m_maincpu;
+ required_device<i8085a_cpu_device> m_maincpu;
required_device<screen_device> m_screen;
//required_region_ptr<u8> m_p_chargen;
};
@@ -106,35 +106,36 @@ static INPUT_PORTS_START( cit220p )
INPUT_PORTS_END
-MACHINE_CONFIG_START(cit220_state::cit220p)
- MCFG_DEVICE_ADD("maincpu", I8085A, 6000000)
- MCFG_DEVICE_PROGRAM_MAP(mem_map)
- MCFG_DEVICE_IO_MAP(io_map)
- MCFG_I8085A_SOD(WRITELINE(*this, cit220_state, sod_w))
-
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(24553200, 1580, 0, 1320, 259, 0, 240) // dot clock guessed
- MCFG_SCREEN_UPDATE_DEVICE("avdc", scn2674_device, screen_update)
-
- MCFG_DEVICE_ADD("avdc", SCN2674, 24553200 / 10)
- MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("maincpu", I8085_RST65_LINE))
- MCFG_SCN2674_CHARACTER_WIDTH(10)
- MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(cit220_state, draw_character)
- MCFG_DEVICE_ADDRESS_MAP(0, char_map)
- MCFG_DEVICE_ADDRESS_MAP(1, attr_map)
- MCFG_VIDEO_SET_SCREEN("screen")
+void cit220_state::cit220p(machine_config &config)
+{
+ I8085A(config, m_maincpu, 6000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cit220_state::mem_map);
+ m_maincpu->set_addrmap(AS_IO, &cit220_state::io_map);
+ m_maincpu->out_sod_func().set(FUNC(cit220_state::sod_w));
+
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(24553200, 1580, 0, 1320, 259, 0, 240); // dot clock guessed
+ m_screen->set_screen_update("avdc", FUNC(scn2674_device::screen_update));
+
+ scn2674_device &avdc(SCN2674(config, "avdc", 24553200 / 10));
+ avdc.intr_callback().set_inputline(m_maincpu, I8085_RST65_LINE);
+ avdc.set_character_width(10);
+ avdc.set_display_callback(FUNC(cit220_state::draw_character));
+ avdc.set_addrmap(0, &cit220_state::char_map);
+ avdc.set_addrmap(1, &cit220_state::attr_map);
+ avdc.set_screen(m_screen);
scn2681_device &duart(SCN2681(config, "duart", 3686400));
duart.irq_cb().set_inputline("maincpu", I8085_RST55_LINE);
duart.outport_cb().set("usart", FUNC(i8251_device::write_txc)).bit(3); // 9600 baud?
duart.outport_cb().append("usart", FUNC(i8251_device::write_rxc)).bit(3);
- MCFG_DEVICE_ADD("usart", I8251, 3000000)
+ I8251(config, "usart", 3000000);
- MCFG_DEVICE_ADD("kbdmcu", I8035, 4608000)
- MCFG_DEVICE_PROGRAM_MAP(keyboard_map)
- MCFG_DEVICE_IO_MAP(kbd_io_map)
-MACHINE_CONFIG_END
+ mcs48_cpu_device &kbdmcu(I8035(config, "kbdmcu", 4608000));
+ kbdmcu.set_addrmap(AS_PROGRAM, &cit220_state::keyboard_map);
+ kbdmcu.set_addrmap(AS_IO, &cit220_state::kbd_io_map);
+}
ROM_START( cit220p )
diff --git a/src/mame/drivers/microterm.cpp b/src/mame/drivers/microterm.cpp
index beb1785ff17..a7ba32afebb 100644
--- a/src/mame/drivers/microterm.cpp
+++ b/src/mame/drivers/microterm.cpp
@@ -94,40 +94,42 @@ void microterm_state::mt5510_io_map(address_map &map)
static INPUT_PORTS_START( microterm )
INPUT_PORTS_END
-MACHINE_CONFIG_START(microterm_state::mt420)
- MCFG_DEVICE_ADD("maincpu", Z80, 4'000'000)
- MCFG_DEVICE_PROGRAM_MAP(mt420_mem_map)
- MCFG_DEVICE_IO_MAP(mt420_io_map)
+void microterm_state::mt420(machine_config &config)
+{
+ Z80(config, m_maincpu, 4'000'000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &microterm_state::mt420_mem_map);
+ m_maincpu->set_addrmap(AS_IO, &microterm_state::mt420_io_map);
- scn2681_device &duart(SCN2681(config, "duart", XTAL(3'686'400))); // MC2681
+ scn2681_device &duart(SCN2681(config, "duart", 3.6864_MHz_XTAL)); // MC2681
duart.irq_cb().set_inputline(m_maincpu, 0);
duart.outport_cb().set("eeprom", FUNC(eeprom_serial_93cxx_device::di_write)).bit(5);
duart.outport_cb().append("eeprom", FUNC(eeprom_serial_93cxx_device::cs_write)).bit(4);
duart.outport_cb().append("eeprom", FUNC(eeprom_serial_93cxx_device::clk_write)).bit(3);
- MC2661(config, "aci", XTAL(3'686'400)); // SCN2641
+ MC2661(config, "aci", 3.6864_MHz_XTAL); // SCN2641
EEPROM_93C46_16BIT(config, "eeprom").do_callback().set("duart", FUNC(scn2681_device::ip6_w));
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(XTAL(9'877'680), 612, 0, 480, 269, 0, 250)
- //MCFG_SCREEN_RAW_PARAMS(XTAL(15'300'720), 948, 0, 792, 269, 0, 250)
- MCFG_SCREEN_UPDATE_DEVICE("avdc", scn2674_device, screen_update)
-
- MCFG_DEVICE_ADD("avdc", SCN2674, XTAL(9'877'680) / 6)
- //MCFG_DEVICE_CLOCK(XTAL(15'300'720) / 6)
- MCFG_SCN2674_CHARACTER_WIDTH(6)
- MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(microterm_state, draw_character)
- MCFG_DEVICE_ADDRESS_MAP(0, mt420_vram_map)
- MCFG_VIDEO_SET_SCREEN("screen")
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(microterm_state::mt5510)
- MCFG_DEVICE_ADD("maincpu", Z80, XTAL(6'000'000))
- MCFG_DEVICE_PROGRAM_MAP(mt5510_mem_map)
- MCFG_DEVICE_IO_MAP(mt5510_io_map)
-
- scn2681_device &duart(SCN2681(config, "duart", XTAL(3'686'400)));
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_raw(9.87768_MHz_XTAL, 612, 0, 480, 269, 0, 250);
+ //screen.set_raw(15.30072_MHz_XTAL, 948, 0, 792, 269, 0, 250);
+ screen.set_screen_update("avdc", FUNC(scn2674_device::screen_update));
+
+ scn2674_device &avdc(SCN2674(config, "avdc", 9.87768_MHz_XTAL / 6));
+ //avdc.set_clock(15.30072_MHz_XTAL / 6);
+ avdc.set_character_width(6);
+ avdc.set_display_callback(FUNC(microterm_state::draw_character));
+ avdc.set_addrmap(0, &microterm_state::mt420_vram_map);
+ avdc.set_screen("screen");
+}
+
+void microterm_state::mt5510(machine_config &config)
+{
+ Z80(config, m_maincpu, 6_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &microterm_state::mt5510_mem_map);
+ m_maincpu->set_addrmap(AS_IO, &microterm_state::mt5510_io_map);
+
+ scn2681_device &duart(SCN2681(config, "duart", 3.6864_MHz_XTAL));
duart.irq_cb().set_inputline(m_maincpu, 0);
duart.outport_cb().set("eeprom1", FUNC(eeprom_serial_93cxx_device::di_write)).bit(6);
duart.outport_cb().append("eeprom2", FUNC(eeprom_serial_93cxx_device::di_write)).bit(5);
@@ -140,10 +142,10 @@ MACHINE_CONFIG_START(microterm_state::mt5510)
EEPROM_93C46_16BIT(config, "eeprom2").do_callback().set("duart", FUNC(scn2681_device::ip5_w));
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(XTAL(45'830'400) / 2, 1120, 0, 960, 341, 0, 300) // wild guess at resolution
- MCFG_SCREEN_UPDATE_DRIVER(microterm_state, mt5510_update)
-MACHINE_CONFIG_END
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_raw(45.8304_MHz_XTAL / 2, 1120, 0, 960, 341, 0, 300); // wild guess at resolution
+ screen.set_screen_update(FUNC(microterm_state::mt5510_update));
+}
/**************************************************************************************************************
diff --git a/src/mame/drivers/mpu4vid.cpp b/src/mame/drivers/mpu4vid.cpp
index 2941cdd5dd6..febc474ff65 100644
--- a/src/mame/drivers/mpu4vid.cpp
+++ b/src/mame/drivers/mpu4vid.cpp
@@ -1295,11 +1295,11 @@ MACHINE_CONFIG_START(mpu4vid_state::mpu4_vid)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty)
- MCFG_DEVICE_ADD("scn2674_vid", SCN2674, 0)
- MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("video", M68K_IRQ_3))
- MCFG_SCN2674_CHARACTER_WIDTH(8)
- MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(mpu4vid_state, display_pixels)
- MCFG_DEVICE_ADDRESS_MAP(0, mpu4_vram)
+ SCN2674(config, m_scn2674, 0);
+ m_scn2674->intr_callback().set_inputline("video", M68K_IRQ_3);
+ m_scn2674->set_character_width(8);
+ m_scn2674->set_display_callback(FUNC(mpu4vid_state::display_pixels));
+ m_scn2674->set_addrmap(0, &mpu4vid_state::mpu4_vram);
MCFG_DEVICE_ADD("video", M68000, VIDEO_MASTER_CLOCK )
diff --git a/src/mame/drivers/octopus.cpp b/src/mame/drivers/octopus.cpp
index 9c521fe2bed..c40ef4501af 100644
--- a/src/mame/drivers/octopus.cpp
+++ b/src/mame/drivers/octopus.cpp
@@ -1008,12 +1008,12 @@ MACHINE_CONFIG_START(octopus_state::octopus)
// MCFG_SCREEN_PALETTE("palette")
// MCFG_PALETTE_ADD_MONOCHROME("palette")
- MCFG_DEVICE_ADD("crtc", SCN2674, 0) // character clock can be selectable, either 16MHz or 17.6MHz
- MCFG_SCN2674_INTR_CALLBACK(WRITELINE("pic_slave", pic8259_device, ir0_w))
- MCFG_SCN2674_CHARACTER_WIDTH(8)
- MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(octopus_state, display_pixels)
- MCFG_DEVICE_ADDRESS_MAP(0, octopus_vram)
- MCFG_VIDEO_SET_SCREEN("screen")
+ SCN2674(config, m_crtc, 0); // character clock can be selectable, either 16MHz or 17.6MHz
+ m_crtc->intr_callback().set("pic_slave", FUNC(pic8259_device::ir0_w));
+ m_crtc->set_character_width(8);
+ m_crtc->set_display_callback(FUNC(octopus_state::display_pixels));
+ m_crtc->set_addrmap(0, &octopus_state::octopus_vram);
+ m_crtc->set_screen("screen");
ADDRESS_MAP_BANK(config, "z80_bank").set_map(&octopus_state::octopus_mem).set_options(ENDIANNESS_LITTLE, 8, 32, 0x10000);
diff --git a/src/mame/drivers/qvt201.cpp b/src/mame/drivers/qvt201.cpp
index 8b415757045..49e6add37fb 100644
--- a/src/mame/drivers/qvt201.cpp
+++ b/src/mame/drivers/qvt201.cpp
@@ -118,15 +118,15 @@ MACHINE_CONFIG_START(qvt201_state::qvt201)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // TC5516APL-2 or uPD446C-2 + battery
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(48.654_MHz_XTAL / 3, 102 * 10, 0, 80 * 10, 265, 0, 250)
- //MCFG_SCREEN_RAW_PARAMS(48.654_MHz_XTAL / 2, 170 * 9, 0, 132 * 9, 265, 0, 250)
- MCFG_SCREEN_UPDATE_DEVICE("crtc", scn2672_device, screen_update)
-
- MCFG_DEVICE_ADD("crtc", SCN2672, 48.654_MHz_XTAL / 30)
- MCFG_SCN2672_CHARACTER_WIDTH(10) // 9 in 132-column mode
- MCFG_SCN2672_INTR_CALLBACK(WRITELINE("mainint", input_merger_device, in_w<0>))
- MCFG_VIDEO_SET_SCREEN("screen")
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_raw(48.654_MHz_XTAL / 3, 102 * 10, 0, 80 * 10, 265, 0, 250);
+ //screen.set_raw(48.654_MHz_XTAL / 2, 170 * 9, 0, 132 * 9, 265, 0, 250);
+ screen.set_screen_update("crtc", FUNC(scn2672_device::screen_update));
+
+ scn2672_device &crtc(SCN2672(config, "crtc", 48.654_MHz_XTAL / 30));
+ crtc.set_character_width(10); // 9 in 132-column mode
+ crtc.intr_callback().set("mainint", FUNC(input_merger_device::in_w<0>));
+ crtc.set_screen("screen");
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tr175.cpp b/src/mame/drivers/tr175.cpp
index a2483da9233..88429cf2fef 100644
--- a/src/mame/drivers/tr175.cpp
+++ b/src/mame/drivers/tr175.cpp
@@ -86,27 +86,30 @@ void tr175_state::ramdac_map(address_map &map)
static INPUT_PORTS_START( tr175 )
INPUT_PORTS_END
-MACHINE_CONFIG_START(tr175_state::tr175)
- MCFG_DEVICE_ADD("maincpu", M68000, 12'000'000)
- MCFG_DEVICE_PROGRAM_MAP(mem_map)
-
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(XTAL(28'322'000), 900, 0, 720, 449, 0, 416) // guess
- MCFG_SCREEN_UPDATE_DEVICE("avdc", scn2674_device, screen_update)
-
- MCFG_DEVICE_ADD("avdc", SCN2674, XTAL(28'322'000) / 18) // guess
- MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_2))
- MCFG_SCN2674_CHARACTER_WIDTH(18) // guess
- MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(tr175_state, draw_character)
- MCFG_DEVICE_ADDRESS_MAP(0, vram_map)
- MCFG_VIDEO_SET_SCREEN("screen")
-
- MCFG_DEVICE_ADD("duart", SCN2681, XTAL(11'059'200) / 3) // is this the right clock?
- MCFG_MC68681_IRQ_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_1))
-
- MCFG_PALETTE_ADD("palette", 0x100)
- MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
-MACHINE_CONFIG_END
+void tr175_state::tr175(machine_config &config)
+{
+ M68000(config, m_maincpu, 12'000'000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &tr175_state::mem_map);
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_raw(28.322_MHz_XTAL, 900, 0, 720, 449, 0, 416); // guess
+ screen.set_screen_update("avdc", FUNC(scn2674_device::screen_update));
+
+ scn2674_device &avdc(SCN2674(config, "avdc", 28.322_MHz_XTAL / 18)); // guess
+ avdc.intr_callback().set_inputline("maincpu", M68K_IRQ_2);
+ avdc.set_character_width(18); // guess
+ avdc.set_display_callback(FUNC(tr175_state::draw_character));
+ avdc.set_addrmap(0, &tr175_state::vram_map);
+ avdc.set_screen("screen");
+
+ scn2681_device &duart(SCN2681(config, "duart", 11.0592_MHz_XTAL / 3)); // is this the right clock?
+ duart.irq_cb().set_inputline("maincpu", M68K_IRQ_1);
+
+ PALETTE(config, "palette", 0x100);
+ ramdac_device &ramdac(RAMDAC(config, "ramdac", 0));
+ ramdac.set_addrmap(0, &tr175_state::ramdac_map);
+ ramdac.set_palette("palette");
+}
diff --git a/src/mame/drivers/tv955.cpp b/src/mame/drivers/tv955.cpp
index e95f79084e5..f31cb308372 100644
--- a/src/mame/drivers/tv955.cpp
+++ b/src/mame/drivers/tv955.cpp
@@ -82,29 +82,29 @@ void tv955_state::mem_map(address_map &map)
static INPUT_PORTS_START( tv955 )
INPUT_PORTS_END
-MACHINE_CONFIG_START(tv955_state::tv955)
- MCFG_DEVICE_ADD("maincpu", M65C02, 19.3396_MHz_XTAL / 9)
- MCFG_DEVICE_PROGRAM_MAP(mem_map)
+void tv955_state::tv955(machine_config &config)
+{
+ M65C02(config, m_maincpu, 19.3396_MHz_XTAL / 9);
+ m_maincpu->set_addrmap(AS_PROGRAM, &tv955_state::mem_map);
- MCFG_INPUT_MERGER_ANY_HIGH("mainirq")
- MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", m6502_device::IRQ_LINE))
+ INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, m6502_device::IRQ_LINE);
- MCFG_DEVICE_ADD("keyboard", I8049, 5.7143_MHz_XTAL)
+ I8049(config, "keyboard", 5.7143_MHz_XTAL);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // HM6116LP-4 + 3.2V battery
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(19.3396_MHz_XTAL, 846, 0, 720, 381, 0, 364)
- //MCFG_SCREEN_RAW_PARAMS(31.684_MHz_XTAL, 1386, 0, 1188, 381, 0, 364)
- MCFG_SCREEN_UPDATE_DEVICE("crtc", scn2674_device, screen_update)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_raw(19.3396_MHz_XTAL, 846, 0, 720, 381, 0, 364);
+ //screen.set_raw(31.684_MHz_XTAL, 1386, 0, 1188, 381, 0, 364);
+ screen.set_screen_update("crtc", FUNC(scn2674_device::screen_update));
- MCFG_DEVICE_ADD("crtc", SCN2674, 19.3396_MHz_XTAL / 9)
+ SCN2674(config, m_crtc, 19.3396_MHz_XTAL / 9);
// Character clock is 31.684_MHz_XTAL / 9 in 132-column mode
// Character cells are 9 pixels wide by 14 pixels high
- MCFG_SCN2674_CHARACTER_WIDTH(9)
- MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(tv955_state, draw_character)
- MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("maincpu", m6502_device::NMI_LINE))
- MCFG_VIDEO_SET_SCREEN("screen")
+ m_crtc->set_character_width(9);
+ m_crtc->set_display_callback(FUNC(tv955_state::draw_character));
+ m_crtc->intr_callback().set_inputline(m_maincpu, m6502_device::NMI_LINE);
+ m_crtc->set_screen("screen");
MOS6551(config, m_hostuart, 0);
m_hostuart->set_xtal(3.6864_MHz_XTAL);
@@ -117,7 +117,7 @@ MACHINE_CONFIG_START(tv955_state::tv955)
mos6551_device &keybuart(MOS6551(config, "keybuart", 0));
keybuart.set_xtal(3.6864_MHz_XTAL / 2);
keybuart.irq_handler().set("mainirq", FUNC(input_merger_device::in_w<2>));
-MACHINE_CONFIG_END
+}
/**************************************************************************************************************
diff --git a/src/mame/drivers/tv965.cpp b/src/mame/drivers/tv965.cpp
index 8cb3ae3f92c..35feda20d5c 100644
--- a/src/mame/drivers/tv965.cpp
+++ b/src/mame/drivers/tv965.cpp
@@ -70,30 +70,31 @@ void tv965_state::program_map(address_map &map)
static INPUT_PORTS_START( tv965 )
INPUT_PORTS_END
-MACHINE_CONFIG_START(tv965_state::tv965)
- MCFG_DEVICE_ADD("maincpu", G65816, 44.4528_MHz_XTAL / 10)
- MCFG_DEVICE_DATA_MAP(mem_map)
- MCFG_DEVICE_PROGRAM_MAP(program_map)
+void tv965_state::tv965(machine_config &config)
+{
+ G65816(config, m_maincpu, 44.4528_MHz_XTAL / 10);
+ m_maincpu->set_addrmap(AS_DATA, &tv965_state::mem_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &tv965_state::program_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // CXK5864BP-10L + battery
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(26.9892_MHz_XTAL, 1020, 0, 800, 441, 0, 416)
- //MCFG_SCREEN_RAW_PARAMS(44.4528_MHz_XTAL, 1680, 0, 1320, 441, 0, 416)
- MCFG_SCREEN_UPDATE_DEVICE("crtc", scn2672_device, screen_update)
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(26.9892_MHz_XTAL, 1020, 0, 800, 441, 0, 416);
+ //m_screen->set_raw(44.4528_MHz_XTAL, 1680, 0, 1320, 441, 0, 416);
+ m_screen->set_screen_update("crtc", FUNC(scn2672_device::screen_update));
- MCFG_DEVICE_ADD("crtc", SCN2672, 26.9892_MHz_XTAL / 10)
- MCFG_SCN2672_CHARACTER_WIDTH(10)
- MCFG_SCN2672_DRAW_CHARACTER_CALLBACK_OWNER(tv965_state, draw_character)
- MCFG_SCN2672_INTR_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
- MCFG_VIDEO_SET_SCREEN("screen")
+ scn2672_device &crtc(SCN2672(config, "crtc", 26.9892_MHz_XTAL / 10));
+ crtc.set_character_width(10);
+ crtc.set_display_callback(FUNC(tv965_state::draw_character));
+ crtc.intr_callback().set_inputline("maincpu", INPUT_LINE_NMI);
+ crtc.set_screen("screen");
mos6551_device &acia1(MOS6551(config, "acia1", 0));
acia1.set_xtal(3.6864_MHz_XTAL / 2); // divider not verified, possibly even programmable
mos6551_device &acia2(MOS6551(config, "acia2", 0));
acia2.set_xtal(3.6864_MHz_XTAL / 2); // divider not verified, possibly even programmable
-MACHINE_CONFIG_END
+}
/**************************************************************************************************************
diff --git a/src/mame/drivers/v550.cpp b/src/mame/drivers/v550.cpp
index 546efa12438..eafbd292fbd 100644
--- a/src/mame/drivers/v550.cpp
+++ b/src/mame/drivers/v550.cpp
@@ -107,17 +107,18 @@ void v550_state::machine_start()
m_usart->write_cts(0);
}
-MACHINE_CONFIG_START(v550_state::v550)
- MCFG_DEVICE_ADD("maincpu", Z80, 34.846_MHz_XTAL / 16) // NEC D780C (2.177875 MHz verified)
- MCFG_DEVICE_PROGRAM_MAP(mem_map)
- MCFG_DEVICE_IO_MAP(io_map)
+void v550_state::v550(machine_config &config)
+{
+ Z80(config, m_maincpu, 34.846_MHz_XTAL / 16); // NEC D780C (2.177875 MHz verified)
+ m_maincpu->set_addrmap(AS_PROGRAM, &v550_state::mem_map);
+ m_maincpu->set_addrmap(AS_IO, &v550_state::io_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // NEC D444C-2 + battery
- MCFG_DEVICE_ADD("gdc", UPD7220, 34.846_MHz_XTAL / 16) // NEC D7220D (2.177875 MHz verified)
- MCFG_VIDEO_SET_SCREEN("screen")
+ upd7220_device &gdc(UPD7220(config, "gdc", 34.846_MHz_XTAL / 16)); // NEC D7220D (2.177875 MHz verified)
+ gdc.set_screen("screen");
- MCFG_DEVICE_ADD("ppi", I8255, 0) // NEC D8255AC-5
+ I8255(config, "ppi"); // NEC D8255AC-5
I8251(config, m_usart, 34.846_MHz_XTAL / 16); // NEC D8251AC
m_usart->rxrdy_handler().set("mainint", FUNC(input_merger_device::in_w<1>));
@@ -137,21 +138,21 @@ MACHINE_CONFIG_START(v550_state::v550)
brg2.fr_handler().set("usart", FUNC(i8251_device::write_txc));
brg2.fr_handler().append("usart", FUNC(i8251_device::write_rxc));
- MCFG_DEVICE_ADD("kbdmcu", I8035, 4'608'000)
- MCFG_DEVICE_PROGRAM_MAP(kbd_map)
+ mcs48_cpu_device &kbdmcu(I8035(config, "kbdmcu", 4'608'000));
+ kbdmcu.set_addrmap(AS_PROGRAM, &v550_state::kbd_map);
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(34.846_MHz_XTAL, 19 * 102, 0, 19 * 80, 295, 0, 272)
- MCFG_SCREEN_UPDATE_DRIVER(v550_state, screen_update)
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(34.846_MHz_XTAL, 19 * 102, 0, 19 * 80, 295, 0, 272);
+ m_screen->set_screen_update(FUNC(v550_state::screen_update));
- MCFG_DEVICE_ADD("pvtc", SCN2672, 34.846_MHz_XTAL / 19)
- MCFG_DEVICE_ADDRESS_MAP(0, pvtc_char_map)
- MCFG_DEVICE_ADDRESS_MAP(1, pvtc_attr_map)
- MCFG_SCN2672_CHARACTER_WIDTH(19)
- MCFG_SCN2672_INTR_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
- MCFG_VIDEO_SET_SCREEN("screen")
+ scn2672_device &pvtc(SCN2672(config, "pvtc", 34.846_MHz_XTAL / 19));
+ pvtc.set_addrmap(0, &v550_state::pvtc_char_map);
+ pvtc.set_addrmap(1, &v550_state::pvtc_attr_map);
+ pvtc.set_character_width(19);
+ pvtc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ pvtc.set_screen("screen");
// SCB2673 clock verified at 17.423 MHz
-MACHINE_CONFIG_END
+}
ROM_START( v550 )
diff --git a/src/mame/drivers/vp122.cpp b/src/mame/drivers/vp122.cpp
index 451551c8a9e..4f96e34bd76 100644
--- a/src/mame/drivers/vp122.cpp
+++ b/src/mame/drivers/vp122.cpp
@@ -22,7 +22,8 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_screen(*this, "screen")
- , m_p_chargen(*this, "chargen")
+ , m_avdc(*this, "avdc")
+ , m_chargen(*this, "chargen")
{ }
void vp122(machine_config &config);
@@ -39,7 +40,8 @@ private:
required_device<cpu_device> m_maincpu;
required_device<screen_device> m_screen;
- required_region_ptr<u8> m_p_chargen;
+ required_device<scn2674_device> m_avdc;
+ required_region_ptr<u8> m_chargen;
};
@@ -87,25 +89,26 @@ void vp122_state::attr_map(address_map &map)
static INPUT_PORTS_START( vp122 )
INPUT_PORTS_END
-MACHINE_CONFIG_START(vp122_state::vp122)
- MCFG_DEVICE_ADD("maincpu", I8085A, 8_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(mem_map)
- MCFG_DEVICE_IO_MAP(io_map)
+void vp122_state::vp122(machine_config &config)
+{
+ I8085A(config, m_maincpu, 8_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &vp122_state::mem_map);
+ m_maincpu->set_addrmap(AS_IO, &vp122_state::io_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // MK48Z02
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(14.916_MHz_XTAL, 960, 0, 800, 259, 0, 240)
- //MCFG_SCREEN_RAW_PARAMS(22.096_MHz_XTAL, 1422, 0, 1188, 259, 0, 240)
- MCFG_SCREEN_UPDATE_DEVICE("avdc", scn2674_device, screen_update)
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(14.916_MHz_XTAL, 960, 0, 800, 259, 0, 240);
+ //m_screen->set_raw(22.096_MHz_XTAL, 1422, 0, 1188, 259, 0, 240);
+ m_screen->set_screen_update("avdc", FUNC(scn2674_device::screen_update));
- MCFG_DEVICE_ADD("avdc", SCN2674, 14.916_MHz_XTAL / 10)
- MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("maincpu", I8085_RST65_LINE))
- MCFG_SCN2674_CHARACTER_WIDTH(10) // 9 in 132-column modes
- MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(vp122_state, draw_character)
- MCFG_DEVICE_ADDRESS_MAP(0, char_map)
- MCFG_DEVICE_ADDRESS_MAP(1, attr_map)
- MCFG_VIDEO_SET_SCREEN("screen")
+ SCN2674(config, m_avdc, 14.916_MHz_XTAL / 10);
+ m_avdc->intr_callback().set_inputline(m_maincpu, I8085_RST65_LINE);
+ m_avdc->set_character_width(10); // 9 in 132-column modes
+ m_avdc->set_display_callback(FUNC(vp122_state::draw_character));
+ m_avdc->set_addrmap(0, &vp122_state::char_map);
+ m_avdc->set_addrmap(1, &vp122_state::attr_map);
+ m_avdc->set_screen("screen");
scn2681_device &duart(SCN2681(config, "duart", 3.6864_MHz_XTAL));
duart.irq_cb().set_inputline("maincpu", I8085_RST55_LINE);
@@ -113,11 +116,11 @@ MACHINE_CONFIG_START(vp122_state::vp122)
duart.outport_cb().append("usart", FUNC(i8251_device::write_rxc)).bit(3);
// OP7 = 0 for 80-column modes, 1 for 132-column modes
- MCFG_DEVICE_ADD("usart", I8251, 8_MHz_XTAL / 2)
+ I8251(config, "usart", 8_MHz_XTAL / 2);
- MCFG_DEVICE_ADD("pit", PIT8253, 0)
+ PIT8253(config, "pit", 0);
// Input clocks are video-related and should differ for 80-column and 132-column modes
-MACHINE_CONFIG_END
+}
/**************************************************************************************************************
diff --git a/src/mame/video/pcd.cpp b/src/mame/video/pcd.cpp
index 288de3ae925..2a444997c4e 100644
--- a/src/mame/video/pcd.cpp
+++ b/src/mame/video/pcd.cpp
@@ -115,10 +115,11 @@ MACHINE_CONFIG_START(pcd_video_device::device_add_mconfig)
MCFG_PALETTE_ADD("palette", 3)
MCFG_PALETTE_INIT_OWNER(pcdx_video_device, pcdx)
- MCFG_DEVICE_ADD("crtc", SCN2674, 0)
- MCFG_SCN2674_CHARACTER_WIDTH(16)
- MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(pcd_video_device, display_pixels)
- MCFG_VIDEO_SET_SCREEN("screen")
+ scn2674_device &crtc(SCN2674(config, "crtc", 0));
+ crtc.set_character_width(16);
+ crtc.set_display_callback(FUNC(pcd_video_device::display_pixels));
+ crtc.set_screen("screen");
+
MCFG_TIMER_DRIVER_ADD_PERIODIC("mouse_timer", pcd_video_device, mouse_timer, attotime::from_hz(15000)) // guess
MACHINE_CONFIG_END
@@ -158,12 +159,12 @@ MACHINE_CONFIG_START(pcx_video_device::device_add_mconfig)
MCFG_PALETTE_ADD_MONOCHROME("palette")
- MCFG_DEVICE_ADD("crtc", SCN2674, 0)
- MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("graphics", MCS51_INT0_LINE))
- MCFG_SCN2674_CHARACTER_WIDTH(16)
- MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(pcx_video_device, display_pixels)
- MCFG_VIDEO_SET_SCREEN("screen")
- MCFG_DEVICE_ADDRESS_MAP(0, pcx_vram)
+ scn2674_device &crtc(SCN2674(config, "crtc", 0));
+ crtc.intr_callback().set_inputline("graphics", MCS51_INT0_LINE);
+ crtc.set_character_width(16);
+ crtc.set_display_callback(FUNC(pcx_video_device::display_pixels));
+ crtc.set_screen("screen");
+ crtc.set_addrmap(0, &pcx_video_device::pcx_vram);
MACHINE_CONFIG_END