summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/imagedev
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/imagedev')
-rw-r--r--src/devices/imagedev/floppy.cpp41
-rw-r--r--src/devices/imagedev/floppy.h3
2 files changed, 41 insertions, 3 deletions
diff --git a/src/devices/imagedev/floppy.cpp b/src/devices/imagedev/floppy.cpp
index 3a674ea47f8..deaf8400aec 100644
--- a/src/devices/imagedev/floppy.cpp
+++ b/src/devices/imagedev/floppy.cpp
@@ -100,6 +100,9 @@ DEFINE_DEVICE_TYPE(SONY_OA_D31V, sony_oa_d31v, "sony_oa_d31v", "Sony OA-D31V Mic
DEFINE_DEVICE_TYPE(SONY_OA_D32W, sony_oa_d32w, "sony_oa_d32w", "Sony OA-D32W Micro Floppydisk Drive")
DEFINE_DEVICE_TYPE(SONY_OA_D32V, sony_oa_d32v, "sony_oa_d32v", "Sony OA-D32V Micro Floppydisk Drive")
+// TEAC 3" drives
+DEFINE_DEVICE_TYPE(TEAC_FD_30A, teac_fd_30a, "teac_fd_30a", "TEAC FD-30A FDD")
+
// TEAC 5.25" drives
#if 0
DEFINE_DEVICE_TYPE(TEAC_FD_55A, teac_fd_55a, "teac_fd_55a", "TEAC FD-55A FDD")
@@ -785,8 +788,9 @@ attotime floppy_image_device::get_next_transition(const attotime &from_when)
// TODO: Implement a proper spin-up ramp for transition times, also in order
// to cover potential copy protection measures that have direct device
// access (mz)
- if (ready_counter > 0)
- return attotime::never;
+ // MORE TODO: this breaks the tandy2k and pcjr. needs investigation.
+ //if (ready_counter > 0)
+ // return attotime::never;
std::vector<uint32_t> &buf = image->get_buffer(cyl, ss, subcyl);
uint32_t cells = buf.size();
@@ -2150,6 +2154,39 @@ void sony_oa_d32v::handled_variants(uint32_t *variants, int &var_count) const
}
//-------------------------------------------------
+// TEAC FD-30A
+//
+// track to track: 12 ms
+// average: 171 ms
+// setting time: 15 ms
+// motor start time: 400 ms
+//
+//-------------------------------------------------
+
+teac_fd_30a::teac_fd_30a(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ floppy_image_device(mconfig, TEAC_FD_30A, tag, owner, clock)
+{
+}
+
+teac_fd_30a::~teac_fd_30a()
+{
+}
+
+void teac_fd_30a::setup_characteristics()
+{
+ form_factor = floppy_image::FF_3;
+ tracks = 40;
+ sides = 1;
+ set_rpm(300);
+}
+
+void teac_fd_30a::handled_variants(uint32_t *variants, int &var_count) const
+{
+ var_count = 0;
+ variants[var_count++] = floppy_image::SSSD;
+}
+
+//-------------------------------------------------
// TEAC FD-55E
//
// track to track: 3 ms
diff --git a/src/devices/imagedev/floppy.h b/src/devices/imagedev/floppy.h
index 5954e72883f..9e458b141cc 100644
--- a/src/devices/imagedev/floppy.h
+++ b/src/devices/imagedev/floppy.h
@@ -131,7 +131,7 @@ public:
void seek_phase_w(int phases);
void stp_w(int state);
void dir_w(int state) { dir = state; }
- void ss_w(int state) { ss = state; }
+ void ss_w(int state) { if (sides > 1) ss = state; }
void inuse_w(int state) { }
void dskchg_w(int state) { if (dskchg_writable) dskchg = state; }
void ds_w(int state) { ds = state; check_led(); }
@@ -261,6 +261,7 @@ DECLARE_FLOPPY_IMAGE_DEVICE(EPSON_SD_321, epson_sd_321, "floppy_5_
DECLARE_FLOPPY_IMAGE_DEVICE(SONY_OA_D31V, sony_oa_d31v, "floppy_3_5")
DECLARE_FLOPPY_IMAGE_DEVICE(SONY_OA_D32W, sony_oa_d32w, "floppy_3_5")
DECLARE_FLOPPY_IMAGE_DEVICE(SONY_OA_D32V, sony_oa_d32v, "floppy_3_5")
+DECLARE_FLOPPY_IMAGE_DEVICE(TEAC_FD_30A, teac_fd_30a, "floppy_3")
DECLARE_FLOPPY_IMAGE_DEVICE(TEAC_FD_55E, teac_fd_55e, "floppy_5_25")
DECLARE_FLOPPY_IMAGE_DEVICE(TEAC_FD_55F, teac_fd_55f, "floppy_5_25")
DECLARE_FLOPPY_IMAGE_DEVICE(TEAC_FD_55G, teac_fd_55g, "floppy_5_25")