Floppy disk hardware emulator
Template:New unreviewed article

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
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 | Direction | PC | NC |
2 | Out | Density Select | Disk Change |
4 | - | - | - |
6 | - | - | - |
8 | Out | Index Hole | Index Hole |
10 | In | Motor A | Drive 0 |
12 | In | Drive B | Drive 1 |
14 | In | Drive A | - |
16 | In | Motor B | Motor |
18 | In | Step Direction | Step Direction |
20 | In | Step Pulse | Step Pulse |
22 | In | Write Data | Write Data |
24 | In | Write Enable | Write Enable |
26 | Out | Track 0 | Track 0 |
28 | Out | Write Protect | Write Protect |
30 | Out | Read Data | Read Data |
32 | In | Head Select | Head Select |
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 an 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.