diff --git a/src/mame/sanyo/mbc200.cpp b/src/mame/sanyo/mbc200.cpp index ea3d61cdbdc..ff7d1d14fd9 100644 --- a/src/mame/sanyo/mbc200.cpp +++ b/src/mame/sanyo/mbc200.cpp @@ -40,6 +40,7 @@ TODO: a MEMORY ERROR. CP/M now loads. 2016-07-16 Added keyboard and sound. +2023-04-13 Floppy drive selection fix ****************************************************************************/ @@ -78,8 +79,7 @@ public: , m_beep(*this, "beeper") , m_speaker(*this, "speaker") , m_fdc(*this, "fdc") - , m_floppy0(*this, "fdc:0") - , m_floppy1(*this, "fdc:1") + , m_floppy(*this, "fdc:%u", 0) { } void mbc200(machine_config &config); @@ -114,8 +114,7 @@ private: required_device m_beep; required_device m_speaker; required_device m_fdc; - required_device m_floppy0; - required_device m_floppy1; + required_device_array m_floppy; }; @@ -140,12 +139,11 @@ void mbc200_state::pm_portb_w(u8 data) { floppy_image_device *floppy = nullptr; - // to be verified - switch (data & 0x01) - { - case 0: floppy = m_floppy0->get_device(); break; - case 1: floppy = m_floppy1->get_device(); break; - } + // The BIOS supports up tp 4 drives, (2 internal + 2 external) + // E: and F: are virtual swaps of A: and B: + u8 tmp = (data & 0x70)>>4; + if (tmp < 4) + floppy = m_floppy[tmp]->get_device(); m_fdc->set_floppy(floppy); @@ -353,8 +351,11 @@ void mbc200_state::mbc200(machine_config &config) I8251(config, "uart2", 0); // INS8251A MB8876(config, m_fdc, 8_MHz_XTAL / 8); // guess - FLOPPY_CONNECTOR(config, "fdc:0", mbc200_floppies, "qd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "fdc:1", mbc200_floppies, "qd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); + + FLOPPY_CONNECTOR(config, m_floppy[0], mbc200_floppies, "qd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[1], mbc200_floppies, "qd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[2], mbc200_floppies, "qd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[3], mbc200_floppies, "qd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); /* Keyboard */ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));