diff options
Diffstat (limited to 'src/devices/bus/isa/omti8621.cpp')
-rw-r--r-- | src/devices/bus/isa/omti8621.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/devices/bus/isa/omti8621.cpp b/src/devices/bus/isa/omti8621.cpp index 4c6225baa9f..e9c80e126d3 100644 --- a/src/devices/bus/isa/omti8621.cpp +++ b/src/devices/bus/isa/omti8621.cpp @@ -253,8 +253,15 @@ void omti8621_device::device_add_mconfig(machine_config &config) m_fdc->intrq_wr_callback().set(FUNC(omti8621_device::fdc_irq_w)); m_fdc->drq_wr_callback().set(FUNC(omti8621_device::fdc_drq_w)); FLOPPY_CONNECTOR(config, m_floppy[0], pc_hd_floppies, "525hd", omti8621_device::floppy_formats); -// Apollo workstations never have more then 1 floppy drive -// FLOPPY_CONNECTOR(config, m_floppy[1], pc_hd_floppies, nullptr, omti8621_device::floppy_formats); + FLOPPY_CONNECTOR(config, m_floppy[1], pc_hd_floppies, nullptr, omti8621_device::floppy_formats); +} + +void omti8621_apollo_device::device_add_mconfig(machine_config &config) +{ + omti8621_device::device_add_mconfig(config); + + // Apollo workstations never have more then 1 floppy drive + config.device_remove(OMTI_FDC_TAG":1"); } const tiny_rom_entry *omti8621_device::device_rom_region() const @@ -1326,8 +1333,7 @@ void omti8621_device::fd_moten_w(uint8_t data) m_moten = data; - if (!BIT(data, 2)) - m_fdc->soft_reset(); + m_fdc->reset_w(!BIT(data, 2)); for (int i = 0; i < 2; i++) { @@ -1342,8 +1348,11 @@ void omti8621_device::fd_moten_w(uint8_t data) void omti8621_device::fd_rate_w(uint8_t data) { - // Bit 1 = FD_MINI (TODO) - // Bit 0 = FD_RATE (TODO) + // Bit 1 = FD_MINI (connects to pin 3 of FDC9239) + // Bit 0 = FD_RATE (inverted output connects to pin 4 of 74F163) + u32 fdc_clk = (48_MHz_XTAL / (BIT(data, 0) ? 5 : 3) / (BIT(data, 1) ? 4 : 2)).value(); + m_fdc->set_unscaled_clock(fdc_clk); + m_fdc->set_rate(fdc_clk / 16); } void omti8621_device::fd_extra_w(uint8_t data) |