This is an old revision of this page, as edited by Thumperward (talk | contribs) at 13:49, 22 June 2011 (Added {{unreferenced}} tag to article (TW)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Revision as of 13:49, 22 June 2011 by Thumperward (talk | contribs) (Added {{unreferenced}} tag to article (TW))(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)This article does not cite any sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Floppy disk hardware emulator" – news · newspapers · books · scholar · JSTOR (June 2011) (Learn how and when to remove this message) |
Old PCs, keyboards and industrial automation equipment such as programmable machinery and industrial robots may not have a USB interface. Data and programs are still loaded from a floppy disk, which can be damaged in industrial environments. This outdated equipment may not be replaced due to cost, or requirement for continuous availability.
Hardware emulators with USB / SD / MMC interface
Unlike general-purpose desktop personal computers, existing software emulation and virtualization tools can't solve this problem:
- because of the lack of an operating system
- because of the use of a customized / non-standard operating system
A hardware floppy disk emulator interfaces directly to a floppy disk controller (FDC), allowing users:
- to plug it in like a common floppy drive
- to load and save data using USB keys / SD cards / MMCs / CF cards
FDC interface
PC and numeric control FDC standard interfaces differ in some signals, on which hosts may depend. Emulators, unlike real drives, can be designed to interact with both standards and even with other non-standard / custom FDC interfaces (e.g.: Japanese NEC PCs).
Pin | Type | PC | NC | Type | Laptop 26pin | Type | Yamaha 24pin |
1 | Gnd | +5V | +5V | ||||
2 | Out | Density Select | Disk Change | Out | Index Hole | +5V | |
3 | Gnd | +5V | nc | ||||
4 | nc | - | - | In | Drive Select | +5V | |
5 | Gnd | +5V | +5V | ||||
6 | nc | - | - | Out | Disk Change | Out | Ready |
7 | Gnd | ? | Reserved | Gnd | |||
8 | Out | Index Hole | Index Hole | Out | Ready | Gnd | |
9 | Gnd | ? | Media | In | Head Select | ||
10 | In | Motor A | Drive Select 0 | In | Motor | Gnd | |
11 | Gnd | Out | Density Select | Out | Read Data | ||
12 | In | Drive Select B | Drive Select 1 | In | Step Direction | Out | Write Protect |
13 | Gnd | ? | Reserved | Out | Track 0 | ||
14 | In | Drive Select A | - | In | Step Pulse | In | Write Enable |
15 | Gnd | Gnd | Gnd | ||||
16 | In | Motor B | Motor | In | Write Data | In | Write Data |
17 | Gnd | Gnd | Gnd | ||||
18 | In | Step Direction | Step Direction | In | Write Enable | In | Step Pulse |
19 | Gnd | Gnd | In | Step Direction | |||
20 | In | Step Pulse | Step Pulse | Out | Track 0 | In | Motor |
21 | Gnd | Gnd | nc | ||||
22 | In | Write Data | Write Data | Out | Write Protect | In | Drive Select |
23 | Gnd | Gnd | Out | Index Hole | |||
24 | In | Write Enable | Write Enable | Out | Read Data | Out | Disk Change |
25 | Gnd | Gnd | |||||
26 | Out | Track 0 | Track 0 | In | Head Select | ||
27 | Gnd | ||||||
28 | Out | Write Protect | Write Protect | ||||
29 | Gnd | ||||||
30 | Out | Read Data | Read Data | ||||
31 | Gnd | ||||||
32 | In | Head Select | Head Select | ||||
33 | Gnd | ||||||
34 | Out | Disk Change | Ready |
Raw data, received from the Write Data pin and sent to the Read Data pin, is MFM / FM / GCR encoded. A hardware PLL or a software-based filter component translates encoded data into physical sectors (identified by TRACK:SECTOR:SIDE), more compact and suitable for storage.
Numeric control signals are often affected by strong and regular disturbing sources. Emulators designed to handle such a high amount of glitches usually rely on software-based filters.
Data storage
Raw tracks (all sectors belonging to both sides of a track) are read from and written to a fast volatile internal RAM track buffer. The emulator, upon receiving a Step Pulse:
- saves the current modified track to a permanent storage or sends it to a remote storage
- changes the current track number according to the Step Direction
- loads the new track from local or remote storage
Simple emulators are not equipped with an internal permanent storage and directly send data to a remote storage or to the data exchange module. Complete stand-alone emulators instead are equipped with flash memory with no need of a remote link or an external memory device always plugged in. Simple and complete emulators, however, share an intrinsic limit: a big seek time (> 12ms), due to current track saving and new track loading operations. Some hosts could reject any of these emulators.
Best emulators are equipped with FRAM memory, that replaces both RAM track buffer and flash memory, allowing permanent internal storage and minimum (< 1ms) seek time.
Data exchange
Data exchange from and to a user memory device can be implemented as:
- direct access to a special partition (e.g.: a 1.44Mb partition on a USB key)
- floppy file system translation (e.g.: FAT12 floppy ←→ USB key folder)
- ISO floppy image support (e.g.: raw floppy ←→ .iso USB key file)
All of these implementation can be extended to a multi-floppy support.
Direct access and ISO image implementations can also emulate system / non-standard floppies, whose file system can't be simply translated.
ISO image implementation can also be coupled with a virtual floppy drive to seamlessly emulate floppy drives on a laptop.
External links - emulators
- EMUFDD hardware emulator — Read & Write
- QHSFD hardware emulator — Read & Write
- HxC hardware emulator — Read & Write
- Virtual Floppy Drive (VFD)
External links - reviews
- Floppy hardware emulators review
- Floppy user guide
- Magnetic recording fundamentals
- Floppy drives PC guide