When writing software and devloping on an emulator, it's all too easy to forget that real disks age and data gets lost occasionally. It would be useful (and arguably an authentic emulation) if the disks would slowly and randomly corrupt data over time as a test tool, and an aid to testing the error-handling codepaths.
My suggestion would not be to overwrite the original image itself, obviously, but to maintain a file alongside the original which records data about which sectors have been corrupted, how, and when (so we can track when the corruption occurred. We could set a MTBF of a few weeks or so, such that reads from the disk may cause CRC errors, missing address marks, etc... To restore the disk, either rename the additional file, or delete it.
The handling of writes to the disk pose an interesting issue, however, as the presence of an error could cause data to be written which was different to what would have been written had there been no errors. So it's not clear whether the updates should be written to the real image (where it risks corrupting valid data) or write to the new file (where it could be lost if the disk is "reverted" to its uncorrupted, unwritten state).
As an aside, I think it would also be really cool if fuse could emulate the disk drive noises as well for the +3. Nothing would strike fear into my very soul more than the sound the drive made just before the dreaded "Missing address mark" error was printed. Then all I'll need is a way to emulate removing the disk from the drive and hitting it on the table to see if that clears the error... ahem.
Thanks for your suggestions.
Seems like a niche functionality to me. Being random makes error-handling difficult to trace (through code) and reproduce as errors are unexpected.
It would be like simulating tape issues and the "R Tape loading error" message.
Sounds interesting. I think there are already emulators doing this. Fuse aims to correctly emulate timings in a floppy disk drive and some mechanical movements could have a sound, e.g.,