summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/plus4/c1551.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/plus4/c1551.cpp')
-rw-r--r--src/devices/bus/plus4/c1551.cpp78
1 files changed, 41 insertions, 37 deletions
diff --git a/src/devices/bus/plus4/c1551.cpp b/src/devices/bus/plus4/c1551.cpp
index 0190a0b922e..63cda307f2b 100644
--- a/src/devices/bus/plus4/c1551.cpp
+++ b/src/devices/bus/plus4/c1551.cpp
@@ -322,16 +322,6 @@ void c1551_device::c1551_mem(address_map &map)
//-------------------------------------------------
-// SLOT_INTERFACE( c1551_floppies )
-//-------------------------------------------------
-
-static void c1551_floppies(device_slot_interface &device)
-{
- device.option_add("525ssqd", FLOPPY_525_SSQD);
-}
-
-
-//-------------------------------------------------
// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
@@ -345,33 +335,47 @@ FLOPPY_FORMATS_END
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(c1551_device::device_add_mconfig)
- MCFG_DEVICE_ADD(M6510T_TAG, M6510T, XTAL(16'000'000)/8)
- MCFG_DEVICE_PROGRAM_MAP(c1551_mem)
- MCFG_M6510T_PORT_CALLBACKS(READ8(*this, c1551_device, port_r), WRITE8(*this, 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(*this, c1551_device, tcbm_data_r))
- MCFG_TPI6525_OUT_PA_CB(WRITE8(*this, c1551_device, tcbm_data_w))
- MCFG_TPI6525_IN_PB_CB(READ8(C64H156_TAG, c64h156_device, yb_r))
- MCFG_TPI6525_OUT_PB_CB(WRITE8(C64H156_TAG, c64h156_device, yb_w))
- MCFG_TPI6525_IN_PC_CB(READ8(*this, c1551_device, tpi0_pc_r))
- MCFG_TPI6525_OUT_PC_CB(WRITE8(*this, c1551_device, tpi0_pc_w))
- MCFG_DEVICE_ADD(M6523_1_TAG, TPI6525, 0)
- MCFG_TPI6525_IN_PA_CB(READ8(*this, c1551_device, tcbm_data_r))
- MCFG_TPI6525_OUT_PA_CB(WRITE8(*this, c1551_device, tcbm_data_w))
- MCFG_TPI6525_IN_PB_CB(READ8(*this, c1551_device, tpi1_pb_r))
- MCFG_TPI6525_IN_PC_CB(READ8(*this, c1551_device, tpi1_pc_r))
- MCFG_TPI6525_OUT_PC_CB(WRITE8(*this, c1551_device, tpi1_pc_w))
-
- MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL(16'000'000))
- MCFG_64H156_BYTE_CALLBACK(WRITELINE(C64H156_TAG, c64h156_device, atni_w))
- MCFG_FLOPPY_DRIVE_ADD_FIXED(C64H156_TAG":0", c1551_floppies, "525ssqd", c1551_device::floppy_formats)
-
- MCFG_PLUS4_PASSTHRU_EXPANSION_SLOT_ADD()
-MACHINE_CONFIG_END
+void c1551_device::device_add_mconfig(machine_config &config)
+{
+ M6510T(config, m_maincpu, XTAL(16'000'000)/8);
+ m_maincpu->set_addrmap(AS_PROGRAM, &c1551_device::c1551_mem);
+ m_maincpu->read_callback().set(FUNC(c1551_device::port_r));
+ m_maincpu->write_callback().set(FUNC(c1551_device::port_w));
+ config.m_perfect_cpu_quantum = subtag(M6510T_TAG);
+
+ PLS100(config, m_pla);
+
+ TPI6525(config, m_tpi0, 0);
+ m_tpi0->in_pa_cb().set(FUNC(c1551_device::tcbm_data_r));
+ m_tpi0->out_pa_cb().set(FUNC(c1551_device::tcbm_data_w));
+ m_tpi0->in_pb_cb().set(C64H156_TAG, FUNC(c64h156_device::yb_r));
+ m_tpi0->out_pb_cb().set(C64H156_TAG, FUNC(c64h156_device::yb_w));
+ m_tpi0->in_pc_cb().set(FUNC(c1551_device::tpi0_pc_r));
+ m_tpi0->out_pc_cb().set(FUNC(c1551_device::tpi0_pc_w));
+
+ TPI6525(config, m_tpi1, 0);
+ m_tpi1->in_pa_cb().set(FUNC(c1551_device::tcbm_data_r));
+ m_tpi1->out_pa_cb().set(FUNC(c1551_device::tcbm_data_w));
+ m_tpi1->in_pb_cb().set(FUNC(c1551_device::tpi1_pb_r));
+ m_tpi1->in_pc_cb().set(FUNC(c1551_device::tpi1_pc_r));
+ m_tpi1->out_pc_cb().set(FUNC(c1551_device::tpi1_pc_w));
+
+ C64H156(config, m_ga, XTAL(16'000'000));
+ m_ga->byte_callback().set(C64H156_TAG, FUNC(c64h156_device::atni_w));
+
+ floppy_connector &connector(FLOPPY_CONNECTOR(config, C64H156_TAG":0", 0));
+ connector.option_add("525ssqd", FLOPPY_525_SSQD);
+ connector.set_default_option("525ssqd");
+ connector.set_fixed(true);
+ connector.set_formats(c1551_device::floppy_formats);
+
+ PLUS4_EXPANSION_SLOT(config, m_exp, 0);
+ m_exp->irq_wr_callback().set(DEVICE_SELF_OWNER, FUNC(plus4_expansion_slot_device::irq_w));
+ m_exp->cd_rd_callback().set(DEVICE_SELF_OWNER, FUNC(plus4_expansion_slot_device::dma_cd_r));
+ m_exp->cd_wr_callback().set(DEVICE_SELF_OWNER, FUNC(plus4_expansion_slot_device::dma_cd_w));
+ m_exp->aec_wr_callback().set(DEVICE_SELF_OWNER, FUNC(plus4_expansion_slot_device::aec_w));
+ plus4_expansion_cards(*m_exp);
+}
//-------------------------------------------------