mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
cgenie: Add more DOS versions to the floppy, confirm fdc type and xtal
This commit is contained in:
parent
16828b749a
commit
7772cfc363
@ -5,7 +5,6 @@
|
||||
EACA Colour Genie Floppy Disc Controller
|
||||
|
||||
TODO:
|
||||
- What's the exact FD1793 model?
|
||||
- How does it turn off the motor?
|
||||
- What's the source of the timer and the exact timings?
|
||||
|
||||
@ -33,10 +32,10 @@ DEFINE_DEVICE_TYPE(CGENIE_FDC, cgenie_fdc_device, "cgenie_fdc", "Colour Genie FD
|
||||
void cgenie_fdc_device::mmio(address_map &map)
|
||||
{
|
||||
map(0xe0, 0xe3).mirror(0x10).rw(FUNC(cgenie_fdc_device::irq_r), FUNC(cgenie_fdc_device::select_w));
|
||||
map(0xec, 0xec).mirror(0x10).r("fd1793", FUNC(fd1793_device::status_r)).w(FUNC(cgenie_fdc_device::command_w));
|
||||
map(0xed, 0xed).mirror(0x10).rw("fd1793", FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w));
|
||||
map(0xee, 0xee).mirror(0x10).rw("fd1793", FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w));
|
||||
map(0xef, 0xef).mirror(0x10).rw("fd1793", FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w));
|
||||
map(0xec, 0xec).mirror(0x10).r("wd2793", FUNC(wd2793_device::status_r)).w(FUNC(cgenie_fdc_device::command_w));
|
||||
map(0xed, 0xed).mirror(0x10).rw("wd2793", FUNC(wd2793_device::track_r), FUNC(wd2793_device::track_w));
|
||||
map(0xee, 0xee).mirror(0x10).rw("wd2793", FUNC(wd2793_device::sector_r), FUNC(wd2793_device::sector_w));
|
||||
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 )
|
||||
@ -58,8 +57,21 @@ static void cgenie_floppies(device_slot_interface &device)
|
||||
//-------------------------------------------------
|
||||
|
||||
ROM_START( cgenie_fdc )
|
||||
ROM_REGION(0x3000, "software", 0)
|
||||
ROM_LOAD("cgdos.rom", 0x0000, 0x2000, CRC(2a96cf74) SHA1(6dcac110f87897e1ee7521aefbb3d77a14815893))
|
||||
ROM_REGION(0x2000, "software", 0)
|
||||
ROM_DEFAULT_BIOS("unk1")
|
||||
|
||||
// from cgemu
|
||||
ROM_SYSTEM_BIOS(0, "unk1", "Unknown 1")
|
||||
ROMX_LOAD("cgdos.rom", 0x0000, 0x2000, CRC(2a96cf74) SHA1(6dcac110f87897e1ee7521aefbb3d77a14815893), ROM_BIOS(0))
|
||||
|
||||
// can't read label
|
||||
ROM_SYSTEM_BIOS(1, "unk2", "Unknown 2")
|
||||
ROMX_LOAD("cgdos_a.c", 0x0000, 0x1000, CRC(6164e9d1) SHA1(c42ab4e73173893918abc871d01b63a3030cf6cc), ROM_BIOS(1))
|
||||
ROMX_LOAD("cgdos_a.d", 0x1000, 0x1000, CRC(b09eb5d1) SHA1(80db78f665a488ad8cbffea696274b53fb90e492), ROM_BIOS(1))
|
||||
|
||||
// typed in from source code
|
||||
ROM_SYSTEM_BIOS(2, "v2", "Version 2")
|
||||
ROMX_LOAD("cgdos-v2.rom", 0x0000, 0x2000, BAD_DUMP CRC(9dace9c1) SHA1(513fef9fea81bee8f5edcf831095e90941e7cd69), ROM_BIOS(2))
|
||||
ROM_END
|
||||
|
||||
const tiny_rom_entry *cgenie_fdc_device::device_rom_region() const
|
||||
@ -74,13 +86,13 @@ const tiny_rom_entry *cgenie_fdc_device::device_rom_region() const
|
||||
MACHINE_CONFIG_START(cgenie_fdc_device::device_add_mconfig)
|
||||
TIMER(config, "timer").configure_periodic(FUNC(cgenie_fdc_device::timer_callback), attotime::from_msec(25));
|
||||
|
||||
FD1793(config, m_fdc, 1_MHz_XTAL);
|
||||
WD2793(config, m_fdc, 4_MHz_XTAL / 4);
|
||||
m_fdc->intrq_wr_callback().set(FUNC(cgenie_fdc_device::intrq_w));
|
||||
|
||||
FLOPPY_CONNECTOR(config, "fd1793:0", cgenie_floppies, "ssdd", cgenie_fdc_device::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, "fd1793:1", cgenie_floppies, "ssdd", cgenie_fdc_device::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, "fd1793:2", cgenie_floppies, nullptr, cgenie_fdc_device::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, "fd1793:3", cgenie_floppies, nullptr, cgenie_fdc_device::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, "wd2793:0", cgenie_floppies, "ssdd", cgenie_fdc_device::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, "wd2793:1", cgenie_floppies, "ssdd", cgenie_fdc_device::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, "wd2793:2", cgenie_floppies, nullptr, cgenie_fdc_device::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, "wd2793:3", cgenie_floppies, nullptr, cgenie_fdc_device::floppy_formats);
|
||||
|
||||
// SOFTWARE_LIST(config, "floppy_list").set_original("cgenie_flop");
|
||||
|
||||
@ -103,11 +115,11 @@ MACHINE_CONFIG_END
|
||||
cgenie_fdc_device::cgenie_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
device_t(mconfig, CGENIE_FDC, tag, owner, clock),
|
||||
device_cg_exp_interface(mconfig, *this),
|
||||
m_fdc(*this, "fd1793"),
|
||||
m_floppy0(*this, "fd1793:0"),
|
||||
m_floppy1(*this, "fd1793:1"),
|
||||
m_floppy2(*this, "fd1793:2"),
|
||||
m_floppy3(*this, "fd1793:3"),
|
||||
m_fdc(*this, "wd2793"),
|
||||
m_floppy0(*this, "wd2793:0"),
|
||||
m_floppy1(*this, "wd2793:1"),
|
||||
m_floppy2(*this, "wd2793:2"),
|
||||
m_floppy3(*this, "wd2793:3"),
|
||||
m_socket(*this, "socket"),
|
||||
m_floppy(nullptr),
|
||||
m_irq_status(0)
|
||||
|
@ -51,7 +51,7 @@ private:
|
||||
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
|
||||
required_device<fd1793_device> m_fdc;
|
||||
required_device<wd2793_device> m_fdc;
|
||||
required_device<floppy_connector> m_floppy0;
|
||||
required_device<floppy_connector> m_floppy1;
|
||||
required_device<floppy_connector> m_floppy2;
|
||||
|
Loading…
Reference in New Issue
Block a user