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, 59 insertions, 64 deletions
diff --git a/src/mame/drivers/coco12.cpp b/src/mame/drivers/coco12.cpp
index 45e0049cbef..2c4131efb74 100644
--- a/src/mame/drivers/coco12.cpp
+++ b/src/mame/drivers/coco12.cpp
@@ -378,28 +378,27 @@ void t4426_cart(device_slot_interface &device)
}
//-------------------------------------------------
-// machine_config( coco_sound )
+// MACHINE_CONFIG_START( coco_sound )
//-------------------------------------------------
-void coco_state::coco_sound(machine_config &config)
-{
+MACHINE_CONFIG_START(coco_state::coco_sound)
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
- 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);
+ 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)
// 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)
@@ -427,17 +426,17 @@ static DEVICE_INPUT_DEFAULTS_START( printer )
DEVICE_INPUT_DEFAULTS_END
//-------------------------------------------------
-// machine_config
+// MACHINE_CONFIG
//-------------------------------------------------
-void coco12_state::coco(machine_config &config)
-{
- this->set_clock(XTAL(14'318'181) / 16);
+MACHINE_CONFIG_START(coco12_state::coco)
+ MCFG_DEVICE_MODIFY(":")
+ MCFG_DEVICE_CLOCK(XTAL(14'318'181) / 16)
// basic machine hardware
- 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));
+ MCFG_DEVICE_ADD(MAINCPU_TAG, MC6809E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(coco_mem)
+ MCFG_DEVICE_DISASSEMBLE_OVERRIDE(coco_state, dasm_override)
// devices
pia6821_device &pia0(PIA6821(config, PIA0_TAG, 0));
@@ -462,11 +461,11 @@ void coco12_state::coco(machine_config &config)
m_sam->res_rd_callback().set(FUNC(coco12_state::sam_read));
// Becker Port device
- COCO_DWSOCK(config, DWSOCK_TAG, 0);
+ MCFG_DEVICE_ADD(DWSOCK_TAG, COCO_DWSOCK, 0)
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(coco_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED);
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(coco_cassette_formats)
+ MCFG_CASSETTE_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));
@@ -478,13 +477,12 @@ void coco12_state::coco(machine_config &config)
cartslot.halt_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
// video hardware
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
+ MCFG_SCREEN_MC6847_NTSC_ADD(SCREEN_TAG, VDG_TAG)
- 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));
+ 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))
// sound hardware
coco_sound(config);
@@ -496,18 +494,19 @@ void coco12_state::coco(machine_config &config)
coco_floating(config);
// software lists
- 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)
-{
+ 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)
coco(config);
- HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
+ MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(coco_mem)
m_ram->set_default_size("64K");
-}
+MACHINE_CONFIG_END
void coco12_state::cocoe(machine_config &config)
{
@@ -516,17 +515,16 @@ 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, m_maincpu);
- COCO_VHD(config, m_vhd_1, 0, m_maincpu);
+ COCO_VHD(config, m_vhd_0, 0);
+ COCO_VHD(config, m_vhd_1, 0);
}
-void coco12_state::cocoeh(machine_config &config)
-{
+MACHINE_CONFIG_START(coco12_state::cocoeh)
cocoe(config);
- HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
+ MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(coco_mem)
m_ram->set_default_size("64K");
-}
+MACHINE_CONFIG_END
void coco12_state::coco2(machine_config &config)
{
@@ -535,35 +533,32 @@ 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, m_maincpu);
- COCO_VHD(config, m_vhd_1, 0, m_maincpu);
+ COCO_VHD(config, m_vhd_0, 0);
+ COCO_VHD(config, m_vhd_1, 0);
}
-void coco12_state::coco2h(machine_config &config)
-{
+MACHINE_CONFIG_START(coco12_state::coco2h)
coco2(config);
- HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
+ MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(coco_mem)
m_ram->set_default_size("64K");
-}
+MACHINE_CONFIG_END
-void coco12_state::coco2b(machine_config &config)
-{
+MACHINE_CONFIG_START(coco12_state::coco2b)
coco2(config);
- 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)
-{
+ 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)
coco2b(config);
- HD6309E(config.replace(), m_maincpu, DERIVED_CLOCK(1, 1));
- m_maincpu->set_addrmap(AS_PROGRAM, &coco12_state::coco_mem);
+ MCFG_DEVICE_REPLACE(MAINCPU_TAG, HD6309E, DERIVED_CLOCK(1, 1))
+ MCFG_DEVICE_PROGRAM_MAP(coco_mem)
m_ram->set_default_size("64K");
-}
+MACHINE_CONFIG_END
void coco12_state::cp400(machine_config &config)
{