summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/acorn/atom/discpack.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/acorn/atom/discpack.cpp')
-rw-r--r--src/devices/bus/acorn/atom/discpack.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/devices/bus/acorn/atom/discpack.cpp b/src/devices/bus/acorn/atom/discpack.cpp
index fd33ec293a6..ec0505d2da8 100644
--- a/src/devices/bus/acorn/atom/discpack.cpp
+++ b/src/devices/bus/acorn/atom/discpack.cpp
@@ -6,10 +6,11 @@
**********************************************************************/
-
#include "emu.h"
#include "discpack.h"
+#include "formats/acorn_dsk.h"
+
//**************************************************************************
// DEVICE DEFINITIONS
@@ -21,9 +22,11 @@ DEFINE_DEVICE_TYPE(ATOM_DISCPACK, atom_discpack_device, "atom_discpack", "Acorn
// MACHINE_DRIVER( discpack )
//-------------------------------------------------
-FLOPPY_FORMATS_MEMBER(atom_discpack_device::floppy_formats )
- FLOPPY_ACORN_SSD_FORMAT
-FLOPPY_FORMATS_END
+void atom_discpack_device::floppy_formats(format_registration &fr)
+{
+ fr.add_mfm_containers();
+ fr.add(FLOPPY_ACORN_SSD_FORMAT);
+}
static void atom_floppies(device_slot_interface &device)
{
@@ -84,11 +87,12 @@ void atom_discpack_device::device_start()
address_space &space = m_bus->memspace();
space.install_device(0x0a00, 0x0a03, *m_fdc, &i8271_device::map);
- space.install_readwrite_handler(0x0a04, 0x0a04, 0, 0x1f8, 0, read8smo_delegate(FUNC(i8271_device::data_r), m_fdc.target()), write8smo_delegate(FUNC(i8271_device::data_w), m_fdc.target()));
- space.install_ram(0x2000, 0x23ff);
- space.install_ram(0x2400, 0x27ff);
- space.install_ram(0x3c00, 0x3fff);
+ space.install_readwrite_handler(0x0a04, 0x0a04, 0, 0x1f8, 0, read8smo_delegate(*m_fdc, FUNC(i8271_device::data_r)), write8smo_delegate(*m_fdc, FUNC(i8271_device::data_w)));
+ space.install_ram(0x2000, 0x27ff, m_ram);
+ space.install_ram(0x3c00, 0x3fff, m_ram+0x800);
space.install_rom(0xe000, 0xefff, m_dos_rom->base());
+
+ save_item(NAME(m_ram));
}
@@ -96,20 +100,20 @@ void atom_discpack_device::device_start()
// IMPLEMENTATION
//**************************************************************************
-WRITE_LINE_MEMBER(atom_discpack_device::motor_w)
+void atom_discpack_device::motor_w(int state)
{
if (m_floppy[0]->get_device()) m_floppy[0]->get_device()->mon_w(!state);
if (m_floppy[1]->get_device()) m_floppy[1]->get_device()->mon_w(!state);
m_fdc->ready_w(!state);
}
-WRITE_LINE_MEMBER(atom_discpack_device::side_w)
+void atom_discpack_device::side_w(int state)
{
if (m_floppy[0]->get_device()) m_floppy[0]->get_device()->ss_w(state);
if (m_floppy[1]->get_device()) m_floppy[1]->get_device()->ss_w(state);
}
-WRITE_LINE_MEMBER(atom_discpack_device::fdc_intrq_w)
+void atom_discpack_device::fdc_intrq_w(int state)
{
m_bus->nmi_w(state);
}