summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/wd_fdc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/wd_fdc.cpp')
-rw-r--r--src/devices/machine/wd_fdc.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/devices/machine/wd_fdc.cpp b/src/devices/machine/wd_fdc.cpp
index 5ae55544f36..a8e49bde845 100644
--- a/src/devices/machine/wd_fdc.cpp
+++ b/src/devices/machine/wd_fdc.cpp
@@ -74,6 +74,7 @@ wd_fdc_t::wd_fdc_t(const machine_config &mconfig, device_type type, const char *
enmf_cb(*this)
{
force_ready = false;
+ disable_motor_control = false;
}
void wd_fdc_t::set_force_ready(bool _force_ready)
@@ -81,6 +82,11 @@ void wd_fdc_t::set_force_ready(bool _force_ready)
force_ready = _force_ready;
}
+void wd_fdc_t::set_disable_motor_control(bool _disable_motor_control)
+{
+ disable_motor_control = _disable_motor_control;
+}
+
void wd_fdc_t::device_start()
{
intrq_cb.resolve();
@@ -177,7 +183,7 @@ void wd_fdc_t::set_floppy(floppy_image_device *_floppy)
int next_ready = floppy ? floppy->ready_r() : 1;
if(floppy) {
- if(motor_control)
+ if(motor_control && !disable_motor_control)
floppy->mon_w(status & S_MON ? 0 : 1);
floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&wd_fdc_t::index_callback, this));
floppy->setup_ready_cb(floppy_image_device::ready_cb(&wd_fdc_t::ready_callback, this));
@@ -1243,7 +1249,7 @@ void wd_fdc_t::spinup()
}
status |= S_MON|S_SPIN;
- if(floppy)
+ if(floppy && !disable_motor_control)
floppy->mon_w(0);
}
@@ -1279,7 +1285,7 @@ void wd_fdc_t::index_callback(floppy_image_device *floppy, int state)
motor_timeout ++;
if(motor_control && motor_timeout >= 5) {
status &= ~S_MON;
- if(floppy)
+ if(floppy && !disable_motor_control)
floppy->mon_w(1);
}