summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/cgenie/expansion/floppy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/cgenie/expansion/floppy.cpp')
-rw-r--r--src/devices/bus/cgenie/expansion/floppy.cpp35
1 files changed, 18 insertions, 17 deletions
diff --git a/src/devices/bus/cgenie/expansion/floppy.cpp b/src/devices/bus/cgenie/expansion/floppy.cpp
index 6238aaa936f..a52b39a9ea5 100644
--- a/src/devices/bus/cgenie/expansion/floppy.cpp
+++ b/src/devices/bus/cgenie/expansion/floppy.cpp
@@ -14,7 +14,7 @@
#include "floppy.h"
#include "formats/cgenie_dsk.h"
#include "bus/generic/carts.h"
-#include "softlist.h"
+#include "softlist_dev.h"
//**************************************************************************
// CONSTANTS/MACROS
@@ -38,9 +38,11 @@ void cgenie_fdc_device::mmio(address_map &map)
map(0xef, 0xef).mirror(0x10).rw("wd2793", FUNC(wd2793_device::data_r), FUNC(wd2793_device::data_w));
}
-FLOPPY_FORMATS_MEMBER( cgenie_fdc_device::floppy_formats )
- FLOPPY_CGENIE_FORMAT
-FLOPPY_FORMATS_END
+void cgenie_fdc_device::floppy_formats(format_registration &fr)
+{
+ fr.add_mfm_containers();
+ fr.add(FLOPPY_CGENIE_FORMAT);
+}
static void cgenie_floppies(device_slot_interface &device)
{
@@ -155,13 +157,15 @@ void cgenie_fdc_device::device_reset()
// IMPLEMENTATION
//**************************************************************************
-READ8_MEMBER( cgenie_fdc_device::irq_r )
+uint8_t cgenie_fdc_device::irq_r()
{
uint8_t data = m_irq_status;
- m_irq_status &= ~IRQ_TIMER;
- m_slot->int_w(m_irq_status ? ASSERT_LINE : CLEAR_LINE);
-
+ if (!machine().side_effects_disabled())
+ {
+ m_irq_status &= ~IRQ_TIMER;
+ m_slot->int_w(m_irq_status ? ASSERT_LINE : CLEAR_LINE);
+ }
return data;
}
@@ -173,21 +177,18 @@ TIMER_DEVICE_CALLBACK_MEMBER( cgenie_fdc_device::timer_callback )
DEVICE_IMAGE_LOAD_MEMBER( cgenie_fdc_device::socket_load )
{
- uint32_t size = m_socket->common_get_size("rom");
+ uint32_t const size = m_socket->common_get_size("rom");
if (size > 0x1000)
- {
- image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported ROM size");
- return image_init_result::FAIL;
- }
+ return std::make_pair(image_error::INVALIDLENGTH, "Unsupported ROM size (must be no more than 4K)");
m_socket->rom_alloc(0x1000, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
m_socket->common_load_rom(m_socket->get_rom_base(), size, "rom");
- return image_init_result::PASS;
+ return std::make_pair(std::error_condition(), std::string());
}
-WRITE_LINE_MEMBER( cgenie_fdc_device::intrq_w )
+void cgenie_fdc_device::intrq_w(int state)
{
if (VERBOSE)
logerror("cgenie_fdc_device::intrq_w: %d\n", state);
@@ -200,7 +201,7 @@ WRITE_LINE_MEMBER( cgenie_fdc_device::intrq_w )
m_slot->int_w(m_irq_status ? ASSERT_LINE : CLEAR_LINE);
}
-WRITE8_MEMBER( cgenie_fdc_device::select_w )
+void cgenie_fdc_device::select_w(uint8_t data)
{
if (VERBOSE)
logerror("cgenie_fdc_device::motor_w: 0x%02x\n", data);
@@ -221,7 +222,7 @@ WRITE8_MEMBER( cgenie_fdc_device::select_w )
}
}
-WRITE8_MEMBER( cgenie_fdc_device::command_w )
+void cgenie_fdc_device::command_w(uint8_t data)
{
// density select is encoded into this pseudo-command
if ((data & 0xfe) == 0xfe)