sanyo/mbc200.cpp: Fixed floppy drive selection (was stuck on A:). (#11099)

This commit is contained in:
Stefano 2023-04-13 22:24:57 +02:00 committed by GitHub
parent c6817fd918
commit c925ffe986
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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