MakerCentral blog

Introducing FloppyControlApp

Apr 26 2017
Maker blog >>

The FloppyControlApp is the software part of a hardware/software combination that allows reading of any floppy disk flux transition data and transfer it to the PC using USB.

The main focus in contrast with what’s on the market which mainly focuses on preservation, is recovery of data.

Features:

  • Capture flux transition data from disk
  • Control the disk head stepper motor to read between tracks
  • Convert flux data to sectors and ultimately into a disk image
  • Supported disk formats so far are AmigaDOS/PFS, Amiga DiskSpare, PCDOS single sided, double sided DD and HD disks.
  • Supports Rigol DS1054 oscilloscope to capture analogue flux transitions directly from the floppy drive head on a track by track basis.
  • Visualization of every minute detail of sectors, tracks, flux data in a scatter plot and histogram, oscilloscope waveform graph.
  • Context between sectors, flux data and graph data for easy identification of problem areas visually.
  • Error correction of about 1-3 bytes of sector data, about 1-13 flux transitions for short burst errors.
  • Deep scanning for sectors which trades off time for more sectors detected.
  • Tools to narrow down the problem areas and process the minimum amount of data to quickly find proper sector data.
  • Loads and writes scp files as well as project files, bin files (flux stream data) and oscilloscope captures.

For recovery the most important thing is to never throw away any captured data. This can result in a large dataset. However it’s very important to realize that the first read may be the only good read you’ve got of a floppy that’s at the point of disintegrating.

The recovery strategy is as follows:

  • Keep all captured data for reprocessing later
  • Combine different captures into a single image
  • Recapture for longer periods of time to get weak sectors to recover
  • Deep scanning for sectors
  • Use oscilloscope captures to get a detailed view of problem areas and use the editor to fix them if the signal is weak but still recognizable.

Performance

First I’ll tell a bit of the backstory why I started this project. In the late eighties and early nineties I’ve owned MSX and Amiga computers that used floppy disks. I’ve kept about 300 disks with personal data like 3d objects and scenes, text, music, images etc, and non personal data like demos, music disks, applications and some games. The condition of the disks were very poor, lots of debris on the disk surface mainly caused by fungus. My expectation was that if I could recover 10-20% I would be glad indeed.
The personal data still contained on these disks were the most important to me, they are unique, created by me and no other copies exists. Luckily I made more than one copy of my data spread over several disks.

Unfortunately Amiga disks can’t be directly read using a PC without a floppy controller (even with a floppy controller it's hard and unreliable), as most modern PCs are. What was needed is a microcontroller based floppy controller, connected over usb, controlled by Windows software. That’s exactly what I ended up doing.

It turned out I could recover more than 80% of the disks completely, and the disks that were not 100%, I could still get more than 90% of all the sectors. On average I’ve been able to recover more than 98% of all the sectors on the disks which completely blew my expectations away.

All in all I’m very satisfied with the performance. I’ve developed numerous tools to recover more sectors when things are less than ideal. Every time when I thought that I couldn’t possibly recover any more sectors I developed a way that did just that. Problem disks that I captured a couple of years ago would now recover without any problem.

Video of the basic process of capturing a disk:

I would like to extend special thanks to DrCoolzic over at info-choach.fr and Keith Monahan over at techtravels.org. Dr Coolzic kindly provided me with his C# version of a DPLL class from his Aufit application that I've used to check my own decoding methods. Keith provided ideas for error correction that are now implemented in FloppyControlApp. A big thank you to you guys, also for the inspiration and information that got me started on this huge but very satisfying project.

 

In the next installments I plan to demonstrate the capabilities of FloppyControlApp in more detail and about floppy disk recovery in general. Stay tuned!

Last changed: May 16 2017 at 1:27 PM

Back to Overview

Comments

No comment found

Add Comment
Google+