summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/coco12.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/coco12.cpp')
-rw-r--r--src/mame/drivers/coco12.cpp123
1 files changed, 64 insertions, 59 deletions
diff --git a/src/mame/drivers/coco12.cpp b/src/mame/drivers/coco12.cpp
index 2c4131efb74..45e0049cbef 100644
--- a/src/mame/drivers/coco12.cpp
+++ b/src/mame/drivers/coco12.cpp
@@ -378,27 +378,28 @@ void t4426_cart(device_slot_interface &device)
}
//-------------------------------------------------
-// MACHINE_CONFIG_START( coco_sound )
+// machine_config( coco_sound )
//-------------------------------------------------
-MACHINE_CONFIG_START(coco_state::coco_sound)
+void coco_state::coco_sound(machine_config &config)
+{
SPEAKER(config, "speaker").front_center();
// 6-bit D/A: R10-15 = 10K, 20K, 40.2K, 80.6K, 162K, 324K (according to parts list); output also controls joysticks
- MCFG_DEVICE_ADD("dac", DAC_6BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.125)
- MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
- MCFG_SOUND_ROUTE(0, "sbs", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "sbs", -1.0, DAC_VREF_NEG_INPUT)
+ DAC_6BIT_BINARY_WEIGHTED(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.125);
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
+ vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
+ vref.add_route(0, "sbs", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "sbs", -1.0, DAC_VREF_NEG_INPUT);
// Single-bit sound: R22 = 10K
DAC_1BIT(config, "sbs", 0).add_route(ALL_OUTPUTS, "speaker", 0.125);
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25);
-MACHINE_CONFIG_END
+}
//-------------------------------------------------
-// MACHINE_CONFIG ( coco_floating )
+// machine_config ( coco_floating )
//-------------------------------------------------
void coco_state::coco_floating_map(address_map &map)
@@ -426,17 +427,17 @@ static DEVICE_INPUT_DEFAULTS_START( printer )
DEVICE_INPUT_DEFAULTS_END
//-------------------------------------------------
-// MACHINE_CONFIG
+// machine_config
//-------------------------------------------------
-MACHINE_CONFIG_START(coco12_state::coco)
- MCFG_DEVICE_MODIFY(":")
- MCFG_DEVICE_CLOCK(XTAL(14'318'181) / 16)
+void coco12_state::coco(machine_config &config)
+{
+ this->set_clock(XTAL(14'318'181) / 16);
// basic machine hardware
- MCFG_DEVICE_ADD(MAINCPU_TAG, MC6809E, DERIVED_CLOCK(1, 1))
- MCFG_DEVICE_PROGRAM_MAP(coco_mem)
- MCFG_DEVICE_DISASSEMBLE_OVERRIDE(coco_state, dasm_override)
+ MC6809E(config, m_maincpu, DERIVED_CLOCK(1, 1));
+ m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
+ m_maincpu->set_dasm_override(FUNC(coco_state::dasm_override));
// devices
pia6821_device &pia0(PIA6821(config, PIA0_TAG, 0));
@@ -461,11 +462,11 @@ MACHINE_CONFIG_START(coco12_state::coco)
m_sam->res_rd_callback().set(FUNC(coco12_state::sam_read));
// Becker Port device
- MCFG_DEVICE_ADD(DWSOCK_TAG, COCO_DWSOCK, 0)
+ COCO_DWSOCK(config, DWSOCK_TAG, 0);
- MCFG_CASSETTE_ADD("cassette")
- MCFG_CASSETTE_FORMATS(coco_cassette_formats)
- MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
+ CASSETTE(config, m_cassette);
+ m_cassette->set_formats(coco_cassette_formats);
+ m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED);
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, "printer"));
rs232.dcd_handler().set(PIA1_TAG, FUNC(pia6821_device::ca1_w));
@@ -477,12 +478,13 @@ MACHINE_CONFIG_START(coco12_state::coco)
cartslot.halt_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
// video hardware
- MCFG_SCREEN_MC6847_NTSC_ADD(SCREEN_TAG, VDG_TAG)
+ SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- MCFG_DEVICE_ADD(VDG_TAG, MC6847_NTSC, XTAL(14'318'181) / 4) // VClk output from MC6883
- MCFG_MC6847_HSYNC_CALLBACK(WRITELINE(*this, coco12_state, horizontal_sync))
- MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(*this, coco12_state, field_sync))
- MCFG_MC6847_INPUT_CALLBACK(READ8(m_sam, sam6883_device, display_read))
+ MC6847_NTSC(config, m_vdg, XTAL(14'318'181) / 4); // VClk output from MC6883
+ m_vdg->set_screen("screen");
+ m_vdg->hsync_wr_callback().set(FUNC(coco12_state::horizontal_sync));
+ m_vdg->fsync_wr_callback().set(FUNC(coco12_state::field_sync));
+ m_vdg->input_callback().set(m_sam, FUNC(sam6883_device::display_read));
// sound hardware
coco_sound(config);
@@ -494,19 +496,18 @@ MACHINE_CONFIG_START(coco12_state::coco)
coco_floating(config);
// software lists
- MCFG_SOFTWARE_LIST_ADD("coco_cart_list", "coco_cart")
- MCFG_SOFTWARE_LIST_FILTER("coco_cart_list", "COCO")
- MCFG_SOFTWARE_LIST_ADD("coco_flop_list", "coco_flop")
- MCFG_SOFTWARE_LIST_FILTER("coco_flop_list", "COCO")
- MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("dragon_cart_list", "dragon_cart")
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(coco12_state::cocoh)
+ SOFTWARE_LIST(config, "coco_cart_list").set_original("coco_cart").set_filter("COCO");
+ SOFTWARE_LIST(config, "coco_flop_list").set_original("coco_flop").set_filter("COCO");
+ SOFTWARE_LIST(config, "dragon_cart_list").set_compatible("dragon_cart");
+}
+
+void coco12_state::cocoh(machine_config &config)
+{
coco(config);
- MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
- MCFG_DEVICE_PROGRAM_MAP(coco_mem)
+ HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
+ m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
m_ram->set_default_size("64K");
-MACHINE_CONFIG_END
+}
void coco12_state::cocoe(machine_config &config)
{
@@ -515,16 +516,17 @@ void coco12_state::cocoe(machine_config &config)
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);
- COCO_VHD(config, m_vhd_0, 0);
- COCO_VHD(config, m_vhd_1, 0);
+ COCO_VHD(config, m_vhd_0, 0, m_maincpu);
+ COCO_VHD(config, m_vhd_1, 0, m_maincpu);
}
-MACHINE_CONFIG_START(coco12_state::cocoeh)
+void coco12_state::cocoeh(machine_config &config)
+{
cocoe(config);
- MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
- MCFG_DEVICE_PROGRAM_MAP(coco_mem)
+ HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
+ m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
m_ram->set_default_size("64K");
-MACHINE_CONFIG_END
+}
void coco12_state::coco2(machine_config &config)
{
@@ -533,32 +535,35 @@ void coco12_state::coco2(machine_config &config)
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);
- COCO_VHD(config, m_vhd_0, 0);
- COCO_VHD(config, m_vhd_1, 0);
+ COCO_VHD(config, m_vhd_0, 0, m_maincpu);
+ COCO_VHD(config, m_vhd_1, 0, m_maincpu);
}
-MACHINE_CONFIG_START(coco12_state::coco2h)
+void coco12_state::coco2h(machine_config &config)
+{
coco2(config);
- MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
- MCFG_DEVICE_PROGRAM_MAP(coco_mem)
+ HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
+ m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
m_ram->set_default_size("64K");
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(coco12_state::coco2b)
+void coco12_state::coco2b(machine_config &config)
+{
coco2(config);
- MCFG_DEVICE_REMOVE(VDG_TAG)
- MCFG_DEVICE_ADD(VDG_TAG, MC6847T1_NTSC, XTAL(14'318'181) / 4)
- MCFG_MC6847_HSYNC_CALLBACK(WRITELINE(*this, coco12_state, horizontal_sync))
- MCFG_MC6847_FSYNC_CALLBACK(WRITELINE(*this, coco12_state, field_sync))
- MCFG_MC6847_INPUT_CALLBACK(READ8(m_sam, sam6883_device, display_read))
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(coco12_state::coco2bh)
+ MC6847T1_NTSC(config.replace(), m_vdg, XTAL(14'318'181) / 4);
+ m_vdg->set_screen(SCREEN_TAG);
+ m_vdg->hsync_wr_callback().set(FUNC(coco12_state::horizontal_sync));
+ m_vdg->fsync_wr_callback().set(FUNC(coco12_state::field_sync));
+ m_vdg->input_callback().set(m_sam, FUNC(sam6883_device::display_read));
+}
+
+void coco12_state::coco2bh(machine_config &config)
+{
coco2b(config);
- MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
- MCFG_DEVICE_PROGRAM_MAP(coco_mem)
+ HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
+ m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
m_ram->set_default_size("64K");
-MACHINE_CONFIG_END
+}
void coco12_state::cp400(machine_config &config)
{