summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/dragon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/dragon.cpp')
-rw-r--r--src/mame/drivers/dragon.cpp141
1 files changed, 74 insertions, 67 deletions
diff --git a/src/mame/drivers/dragon.cpp b/src/mame/drivers/dragon.cpp
index 17d373ef071..c336b62b628 100644
--- a/src/mame/drivers/dragon.cpp
+++ b/src/mame/drivers/dragon.cpp
@@ -187,13 +187,13 @@ static void dragon_alpha_floppies(device_slot_interface &device)
device.option_add("dd", FLOPPY_35_DD);
}
-MACHINE_CONFIG_START(dragon_state::dragon_base)
- MCFG_DEVICE_MODIFY(":")
- MCFG_DEVICE_CLOCK(14.218_MHz_XTAL / 16)
+void dragon_state::dragon_base(machine_config &config)
+{
+ this->set_clock(14.218_MHz_XTAL / 16);
// basic machine hardware
- MCFG_DEVICE_ADD("maincpu", MC6809E, DERIVED_CLOCK(1, 1))
- MCFG_DEVICE_PROGRAM_MAP(dragon_mem)
+ MC6809E(config, m_maincpu, DERIVED_CLOCK(1, 1));
+ m_maincpu->set_addrmap(AS_PROGRAM, &dragon_state::dragon_mem);
// devices
pia6821_device &pia0(PIA6821(config, PIA0_TAG, 0));
@@ -216,20 +216,21 @@ MACHINE_CONFIG_START(dragon_state::dragon_base)
SAM6883(config, m_sam, 14.218_MHz_XTAL, m_maincpu);
m_sam->res_rd_callback().set(FUNC(dragon_state::sam_read));
- MCFG_CASSETTE_ADD("cassette")
- MCFG_CASSETTE_FORMATS(coco_cassette_formats)
- MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
- MCFG_CASSETTE_INTERFACE("dragon_cass")
+ CASSETTE(config, m_cassette);
+ m_cassette->set_formats(coco_cassette_formats);
+ m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED);
+ m_cassette->set_interface("dragon_cass");
- MCFG_DEVICE_ADD(PRINTER_TAG, PRINTER, 0)
+ PRINTER(config, m_printer, 0);
// video hardware
- MCFG_SCREEN_MC6847_PAL_ADD(SCREEN_TAG, VDG_TAG)
+ SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER);
- MCFG_DEVICE_ADD(VDG_TAG, MC6847_PAL, 4.433619_MHz_XTAL)
- MCFG_MC6847_HSYNC_CALLBACK(WRITELINE(*this, dragon_state, horizontal_sync))
- MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(*this, dragon_state, field_sync))
- MCFG_MC6847_INPUT_CALLBACK(READ8(m_sam, sam6883_device, display_read))
+ MC6847_PAL(config, m_vdg, 4.433619_MHz_XTAL);
+ m_vdg->set_screen(SCREEN_TAG);
+ m_vdg->hsync_wr_callback().set(FUNC(dragon_state::horizontal_sync));
+ m_vdg->fsync_wr_callback().set(FUNC(dragon_state::field_sync));
+ m_vdg->input_callback().set(m_sam, FUNC(sam6883_device::display_read));
// sound hardware
coco_sound(config);
@@ -238,13 +239,14 @@ MACHINE_CONFIG_START(dragon_state::dragon_base)
coco_floating(config);
// software lists
- MCFG_SOFTWARE_LIST_ADD("dragon_cart_list", "dragon_cart")
- MCFG_SOFTWARE_LIST_ADD("dragon_cass_list", "dragon_cass")
- MCFG_SOFTWARE_LIST_ADD("dragon_flop_list", "dragon_flop")
- MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("coco_cart_list", "coco_cart")
-MACHINE_CONFIG_END
+ SOFTWARE_LIST(config, "dragon_cart_list").set_original("dragon_cart");
+ SOFTWARE_LIST(config, "dragon_cass_list").set_original("dragon_cass");
+ SOFTWARE_LIST(config, "dragon_flop_list").set_original("dragon_flop");
+ SOFTWARE_LIST(config, "coco_cart_list").set_compatible("coco_cart");
+}
-MACHINE_CONFIG_START(dragon_state::dragon32)
+void dragon_state::dragon32(machine_config &config)
+{
dragon_base(config);
// internal ram
RAM(config, m_ram).set_default_size("32K").set_extra_options("64K");
@@ -254,9 +256,10 @@ MACHINE_CONFIG_START(dragon_state::dragon32)
cartslot.cart_callback().set([this] (int state) { cart_w(state != 0); }); // lambda because name is overloaded
cartslot.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
cartslot.halt_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(dragon64_state::dragon64)
+void dragon64_state::dragon64(machine_config &config)
+{
dragon_base(config);
// internal ram
RAM(config, m_ram).set_default_size("64K");
@@ -272,34 +275,36 @@ MACHINE_CONFIG_START(dragon64_state::dragon64)
acia.set_xtal(1.8432_MHz_XTAL);
// software lists
- MCFG_SOFTWARE_LIST_ADD("dragon_flex_list", "dragon_flex")
- MCFG_SOFTWARE_LIST_ADD("dragon_os9_list", "dragon_os9")
-MACHINE_CONFIG_END
+ SOFTWARE_LIST(config, "dragon_flex_list").set_original("dragon_flex");
+ SOFTWARE_LIST(config, "dragon_os9_list").set_original("dragon_os9");
+}
-MACHINE_CONFIG_START(dragon64_state::dragon64h)
+void dragon64_state::dragon64h(machine_config &config)
+{
dragon64(config);
// Replace M6809 with HD6309
- MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
- MCFG_DEVICE_PROGRAM_MAP(dragon_mem)
+ HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
+ m_maincpu->set_addrmap(AS_PROGRAM, &dragon64_state::dragon_mem);
m_ram->set_default_size("64K");
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(dragon200e_state::dragon200e)
+void dragon200e_state::dragon200e(machine_config &config)
+{
dragon64(config);
// video hardware
- MCFG_DEVICE_MODIFY(VDG_TAG)
- MCFG_MC6847_CHARROM_CALLBACK(dragon200e_state, char_rom_r)
-MACHINE_CONFIG_END
+ m_vdg->set_get_char_rom(FUNC(dragon200e_state::char_rom_r));
+}
-MACHINE_CONFIG_START(d64plus_state::d64plus)
+void d64plus_state::d64plus(machine_config &config)
+{
dragon64(config);
// video hardware
- MCFG_SCREEN_ADD("plus_screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(640, 264)
- MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 264-1)
- MCFG_SCREEN_UPDATE_DEVICE("crtc", hd6845_device, screen_update)
+ screen_device &plus_screen(SCREEN(config, "plus_screen", SCREEN_TYPE_RASTER));
+ plus_screen.set_refresh_hz(50);
+ plus_screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ plus_screen.set_size(640, 264);
+ plus_screen.set_visarea_full();
+ plus_screen.set_screen_update("crtc", FUNC(hd6845_device::screen_update));
PALETTE(config, m_palette, palette_device::MONOCHROME);
// crtc
@@ -308,9 +313,10 @@ MACHINE_CONFIG_START(d64plus_state::d64plus)
m_crtc->set_show_border_area(false);
m_crtc->set_char_width(8);
m_crtc->set_update_row_callback(FUNC(d64plus_state::crtc_update_row), this);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(dragon_alpha_state::dgnalpha)
+void dragon_alpha_state::dgnalpha(machine_config &config)
+{
dragon_base(config);
// internal ram
RAM(config, RAM_TAG).set_default_size("64K");
@@ -330,14 +336,10 @@ MACHINE_CONFIG_START(dragon_alpha_state::dgnalpha)
m_fdc->intrq_wr_callback().set(FUNC(dragon_alpha_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(dragon_alpha_state::fdc_drq_w));
- MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":0", dragon_alpha_floppies, "dd", dragon_alpha_state::dragon_formats)
- MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":1", dragon_alpha_floppies, "dd", dragon_alpha_state::dragon_formats)
- MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":2", dragon_alpha_floppies, nullptr, dragon_alpha_state::dragon_formats)
- MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":3", dragon_alpha_floppies, nullptr, dragon_alpha_state::dragon_formats)
- MCFG_FLOPPY_DRIVE_SOUND(true)
+ FLOPPY_CONNECTOR(config, WD2797_TAG ":0", dragon_alpha_floppies, "dd", dragon_alpha_state::dragon_formats).enable_sound(true);
+ FLOPPY_CONNECTOR(config, WD2797_TAG ":1", dragon_alpha_floppies, "dd", dragon_alpha_state::dragon_formats).enable_sound(true);
+ FLOPPY_CONNECTOR(config, WD2797_TAG ":2", dragon_alpha_floppies, nullptr, dragon_alpha_state::dragon_formats).enable_sound(true);
+ FLOPPY_CONNECTOR(config, WD2797_TAG ":3", dragon_alpha_floppies, nullptr, dragon_alpha_state::dragon_formats).enable_sound(true);
// sound hardware
ay8912_device &ay8912(AY8912(config, AY8912_TAG, 1000000));
@@ -352,32 +354,37 @@ MACHINE_CONFIG_START(dragon_alpha_state::dgnalpha)
pia2.irqb_handler().set(FUNC(dragon_alpha_state::pia2_firq_b));
// software lists
- MCFG_SOFTWARE_LIST_ADD("dgnalpha_flop_list", "dgnalpha_flop")
- MCFG_SOFTWARE_LIST_ADD("dragon_flex_list", "dragon_flex")
- MCFG_SOFTWARE_LIST_ADD("dragon_os9_list", "dragon_os9")
-MACHINE_CONFIG_END
+ SOFTWARE_LIST(config, "dgnalpha_flop_list").set_original("dgnalpha_flop");
+ SOFTWARE_LIST(config, "dragon_flex_list").set_original("dragon_flex");
+ SOFTWARE_LIST(config, "dragon_os9_list").set_original("dragon_os9");
+}
-MACHINE_CONFIG_START(dragon64_state::tanodr64)
+void dragon64_state::tanodr64(machine_config &config)
+{
dragon64(config);
- MCFG_DEVICE_MODIFY(":")
- MCFG_DEVICE_CLOCK(14.318181_MHz_XTAL / 4)
+ this->set_clock(14.318181_MHz_XTAL / 16);
+
+ m_sam->set_clock(14.318181_MHz_XTAL);
// video hardware
- MCFG_SCREEN_MODIFY(SCREEN_TAG)
- MCFG_SCREEN_REFRESH_RATE(60)
+ MC6847_NTSC(config.replace(), m_vdg, 14.318181_MHz_XTAL / 4);
+ m_vdg->set_screen(SCREEN_TAG);
+ m_vdg->hsync_wr_callback().set(FUNC(dragon_state::horizontal_sync));
+ m_vdg->fsync_wr_callback().set(FUNC(dragon_state::field_sync));
+ m_vdg->input_callback().set(m_sam, FUNC(sam6883_device::display_read));
// cartridge
- MCFG_DEVICE_MODIFY(CARTRIDGE_TAG)
- MCFG_DEVICE_SLOT_INTERFACE(dragon_cart, "sdtandy_fdc", false)
-MACHINE_CONFIG_END
+ subdevice<cococart_slot_device>(CARTRIDGE_TAG)->set_default_option("sdtandy_fdc");
+}
-MACHINE_CONFIG_START(dragon64_state::tanodr64h)
+void dragon64_state::tanodr64h(machine_config &config)
+{
tanodr64(config);
// Replace M6809 CPU with HD6309 CPU
- MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
- MCFG_DEVICE_PROGRAM_MAP(dragon_mem)
+ HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
+ m_maincpu->set_addrmap(AS_PROGRAM, &dragon64_state::dragon_mem);
m_ram->set_default_size("64K");
-MACHINE_CONFIG_END
+}
/***************************************************************************