Amiga Floppy Drive Research – Part 14

Not much done with the floppy stuff over the last few weeks.  To say I’ve had a tough time at work recently would be the understatement of the century.

Managed to sit down last night with a clear head to sort out this problem sector.  Firstly it’s obvious the post from 21 August is slightly erroneous.  The 4 bit cells that are the “massive” 1.125uS out are not out by that much at all!  The table was (wrongly) calculated based on what cell size I had assumed it to be.  Let me explain that:  The 4 bit cells were 6.875uS, and based on my assumption the cell should have been 8uS, the difference is 1.125uS.  Considering the actual cell size should be 6uS the difference is only 0.875uS.  That’s more more workable.

I discovered this problem quite quickly once I started analysing the actual window sizes, rather than the drift.  The following graph shows the problem sector from the original disk:

It’s clear that considering a 6.875us cell as an 8us cell is not so smart, it’s too close.  I have changed my MFM code to consider from 7uS as being an 8uS window.  After re-running the code I can now decode this sector with a valid checksum, etc.

For completeness here are the other graphs I produced:

This graph clearly shows much more consisent cell sizes (as confirmed from my earlier post), and as a result far less of a “grey area”.  And just to finish off here’s the combined graph:

In addition to this I have now started to build my library of 300MB Logic captures, as mentioned before, these will be invaluable later on.  Should I change any code in the MFM decoder I need to re-test everything to date and this is by far the easiest way of achieving that.  There are now 10 discs in the library from my efforts this morning.  All appear to scan OK (i.e. all 1760 blocks checksum OK).  I’ve checked a number of disks that contained LhA archives and they passed their CRC checks OK, another good sign.

However, I’ve seen the disk checksum issues in the past so I think the next sensible step would be to rip them on the Amiga also.  The easiest thing to do would be to create an MD5 or SHA-1 hash of the entire ADF file making comparison very easy.  This is probably a good starting point http://aminet.net/package/dev/c/md5.

So that’s it.  At the moment my code “works”.  I just have to keep capturing and comparing and see what turns up next.  Watch this space.

Leave a Reply

Your email address will not be published. Required fields are marked *