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.
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<beep_device> m_beep;
required_device<speaker_sound_device> m_speaker;
required_device<mb8876_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_device_array<floppy_connector, 4> 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));