diff options
Diffstat (limited to 'src/devices/bus/bbc/internal/cumana68k.cpp')
-rw-r--r-- | src/devices/bus/bbc/internal/cumana68k.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/devices/bus/bbc/internal/cumana68k.cpp b/src/devices/bus/bbc/internal/cumana68k.cpp index 2b8afcace06..4a2d7c71e2e 100644 --- a/src/devices/bus/bbc/internal/cumana68k.cpp +++ b/src/devices/bus/bbc/internal/cumana68k.cpp @@ -16,11 +16,13 @@ **********************************************************************/ - #include "emu.h" #include "cumana68k.h" #include "machine/nscsi_bus.h" #include "bus/nscsi/devices.h" +#include "softlist_dev.h" + +#include "formats/os9_dsk.h" //************************************************************************** @@ -46,6 +48,7 @@ void bbc_cumana68k_device::cumana68k_mem(address_map &map) void bbc_cumana68k_device::floppy_formats(format_registration &fr) { + fr.add_mfm_containers(); fr.add(FLOPPY_OS9_FORMAT); } @@ -94,18 +97,17 @@ void bbc_cumana68k_device::device_add_mconfig(machine_config &config) downcast<nscsi_callback_device&>(*device).req_callback().append(m_pia_sasi, FUNC(pia6821_device::ca1_w)); }); - PIA6821(config, m_pia_sasi, 0); + PIA6821(config, m_pia_sasi); m_pia_sasi->readpa_handler().set(m_sasi, FUNC(nscsi_callback_device::read)); m_pia_sasi->writepa_handler().set(m_sasi, FUNC(nscsi_callback_device::write)); m_pia_sasi->writepb_handler().set(FUNC(bbc_cumana68k_device::pia_sasi_pb_w)); - m_pia_sasi->readca1_handler().set(m_sasi, FUNC(nscsi_callback_device::req_r)); - m_pia_sasi->readcb1_handler().set_constant(1); // tied to +5V + m_pia_sasi->cb1_w(1); // tied to +5V m_pia_sasi->ca2_handler().set(m_sasi, FUNC(nscsi_callback_device::ack_w)); m_pia_sasi->cb2_handler().set(m_sasi, FUNC(nscsi_callback_device::rst_w)); m_pia_sasi->irqa_handler().set(m_irqs, FUNC(input_merger_device::in_w<0>)); m_pia_sasi->irqb_handler().set(m_irqs, FUNC(input_merger_device::in_w<1>)); - PIA6821(config, m_pia_rtc, 0); + PIA6821(config, m_pia_rtc); m_pia_rtc->readpa_handler().set([this]() { return m_mc146818_data; }); m_pia_rtc->writepa_handler().set([this](uint8_t data) { m_mc146818_data = data; }); m_pia_rtc->writepb_handler().set(FUNC(bbc_cumana68k_device::pia_rtc_pb_w)); @@ -196,13 +198,13 @@ void bbc_cumana68k_device::device_reset_after_children() // IMPLEMENTATION //************************************************************************** -WRITE_LINE_MEMBER(bbc_cumana68k_device::reset68008_w) +void bbc_cumana68k_device::reset68008_w(int state) { m_m68008->set_input_line(INPUT_LINE_HALT, state); m_m68008->set_input_line(INPUT_LINE_RESET, state); } -WRITE_LINE_MEMBER(bbc_cumana68k_device::irq6502_w) +void bbc_cumana68k_device::irq6502_w(int state) { m_m68008->set_input_line(M68K_IRQ_2, state); } @@ -254,7 +256,7 @@ void bbc_cumana68k_device::mem6502_w(offs_t offset, uint8_t data) } -WRITE_LINE_MEMBER(bbc_cumana68k_device::rtc_ce_w) +void bbc_cumana68k_device::rtc_ce_w(int state) { m_mc146818_ce = !state; } @@ -267,7 +269,7 @@ void bbc_cumana68k_device::mc146818_set(int as, int ds, int rw) /* if address select is set then set the address in the 146818 */ if (m_mc146818_as & !as) { - m_rtc->write(0, m_mc146818_data); + m_rtc->address_w(m_mc146818_data); //logerror("addr_w: %02x\n", m_mc146818_data); } @@ -276,12 +278,12 @@ void bbc_cumana68k_device::mc146818_set(int as, int ds, int rw) { if (m_mc146818_rw) { - m_mc146818_data = m_rtc->read(1); + m_mc146818_data = m_rtc->data_r(); //logerror("data_r: %02x\n", m_mc146818_data); } else { - m_rtc->write(1, m_mc146818_data); + m_rtc->data_w(m_mc146818_data); //logerror("data_w: %02x\n", m_mc146818_data); } } |