diff options
Diffstat (limited to 'src/devices/bus/plus4/c1551.cpp')
-rw-r--r-- | src/devices/bus/plus4/c1551.cpp | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/src/devices/bus/plus4/c1551.cpp b/src/devices/bus/plus4/c1551.cpp index 333dea55fb0..999faed9108 100644 --- a/src/devices/bus/plus4/c1551.cpp +++ b/src/devices/bus/plus4/c1551.cpp @@ -9,6 +9,9 @@ #include "emu.h" #include "c1551.h" +#include "formats/d64_dsk.h" +#include "formats/g64_dsk.h" + //************************************************************************** @@ -16,8 +19,6 @@ //************************************************************************** #define M6510T_TAG "u2" -#define M6523_0_TAG "u3" -#define M6523_1_TAG "ci_u2" #define C64H156_TAG "u6" #define PLA_TAG "u1" @@ -325,10 +326,11 @@ void c1551_device::c1551_mem(address_map &map) // FLOPPY_FORMATS( floppy_formats ) //------------------------------------------------- -FLOPPY_FORMATS_MEMBER( c1551_device::floppy_formats ) - FLOPPY_D64_FORMAT, - FLOPPY_G64_FORMAT -FLOPPY_FORMATS_END +void c1551_device::floppy_formats(format_registration &fr) +{ + fr.add(FLOPPY_D64_FORMAT); + fr.add(FLOPPY_G64_FORMAT); +} //------------------------------------------------- @@ -341,15 +343,14 @@ void c1551_device::device_add_mconfig(machine_config &config) 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_pb_cb().set(m_ga, FUNC(c64h156_device::yb_r)); + m_tpi0->out_pb_cb().set(m_ga, 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)); @@ -361,7 +362,7 @@ void c1551_device::device_add_mconfig(machine_config &config) 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)); + m_ga->byte_callback().set(m_ga, FUNC(c64h156_device::atni_w)); floppy_connector &connector(FLOPPY_CONNECTOR(config, C64H156_TAG":0", 0)); connector.option_add("525ssqd", FLOPPY_525_SSQD); @@ -369,7 +370,7 @@ void c1551_device::device_add_mconfig(machine_config &config) connector.set_fixed(true); connector.set_formats(c1551_device::floppy_formats); - PLUS4_EXPANSION_SLOT(config, m_exp, 0); + PLUS4_EXPANSION_SLOT(config, m_exp, DERIVED_CLOCK(1, 1)); 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)); @@ -413,12 +414,12 @@ c1551_device::c1551_device(const machine_config &mconfig, const char *tag, devic : device_t(mconfig, C1551, tag, owner, clock) , device_plus4_expansion_card_interface(mconfig, *this) , m_maincpu(*this, M6510T_TAG) - , m_tpi0(*this, M6523_0_TAG) - , m_tpi1(*this, M6523_1_TAG) + , m_tpi0(*this, "u3") + , m_tpi1(*this, "ci_u2") , m_ga(*this, C64H156_TAG) , m_pla(*this, PLA_TAG) , m_floppy(*this, C64H156_TAG":0:525ssqd") - , m_exp(*this, PLUS4_EXPANSION_SLOT_TAG) + , m_exp(*this, "exp") , m_jp1(*this, "JP1") , m_leds(*this, "led%u", 0U) , m_tcbm_data(0xff) @@ -440,7 +441,7 @@ void c1551_device::device_start() m_leds.resolve(); // allocate timers - m_irq_timer = timer_alloc(); + m_irq_timer = timer_alloc(FUNC(c1551_device::irq_timer_tick), this); m_irq_timer->adjust(attotime::zero, CLEAR_LINE); // install image callbacks @@ -476,10 +477,10 @@ void c1551_device::device_reset() //------------------------------------------------- -// device_timer - handler timer events +// irq_timer_tick - update IRQ line state //------------------------------------------------- -void c1551_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +TIMER_CALLBACK_MEMBER(c1551_device::irq_timer_tick) { m_maincpu->set_input_line(M6502_IRQ_LINE, param); |