# Floppy disk hardware emulator

A floppy disk hardware emulator or semi-virtual diskette (SVD) is a device that emulates a floppy disk drive with a solid state or network storage device that is plug compatible with the drive it replaces, similar to how solid-state drives replace mechanical hard disk drives.

## History

Older models of computers, electronic musical instruments and industrial automation often used floppy disk drives for data transfer. Older equipment may be difficult to replace or upgrade because of cost, requirement for continuous availability or unavailable upgrades. Proper operation may require operating system, software and data to be read and written from and to floppies, forcing users to maintain floppy drives on supporting systems.
Floppy disks and floppy drives are gradually going out of production, and replacement of malfunctioning drives, and the systems hosting them, is becoming increasingly difficult. Floppy disks themselves are fragile, or may need to be replaced often. An alternative is to use a floppy disk hardware emulator, a device which appears to be a standard floppy drive to the old equipment by interfacing directly to the floppy disk controller, while storing data in another medium such as a USB thumb drive, Secure Digital card, or a shared drive on a computer network. Emulators can also be used as a higher-performance replacement for mechanical floppy disk drives. A typical application is the replacement of worn-out floppy disk drives of classic digital musical instruments (synthesizers and samplers) so that they can still be used for music production today.

## Emulation process

A typical floppy disk controller sends an MFM / FM / GCR encoded signal to the drive to write data, and expects a similar signal returned when reading the drive. On a write, a hardware PLL or a software-based filter component undoes the encoding, and stores the sector data as logically written by the host. An inverse mechanism translates the stored data back into an encoded signal when the data is read. Noisy raw data signals are filtered and cleaned up before conversion.
Most FDC interfaces do not directly address tracks; instead they provide "step-in" and "step-out" pulses. Those, and the current sector number virtually rotating under the emulated read/write head, are tracked by the emulator in order to determine which sector is to be accessed.
Because the interface to the floppy drive is very low-level, emulators must maintain the approximate timing of floppy disk operations. This may require the emulator to provide buffering, with some delay in updating the permanent storage.
The emulator saves the data written to the floppy in either local storage (stand-alone emulators), or in a remote storage device or data exchange module (stateless emulators).

## Data exchange

The floppy disk emulator can provide other systems access to the data on the emulated floppy in a number of ways:
* Direct access to some dedicated disk partition (e.g.: a 1.44MB partition on a USB key)
* Floppy file system translation (e.g.: FAT12 floppy ↔ USB key folder)
* Floppy disk images (e.g.: raw floppy ↔ .img/.iso USB key file)
Direct access and floppy image implementations can also emulate system / non-standard floppies, whose file system can't be simply translated.
Floppy image implementation can also be coupled with a virtual drive to seamlessly emulate floppy drives on a computer.
Some devices can store multiple floppy images, and provide a mechanism to select which emulated floppy is mounted on the emulated drive.