This morning I added MFM decoding, header and data checksumming and checking to the java client. I was somewhat worried about doing the MFM decoding, but it was all worry for nothing.
Once you wrap your head around how the Amiga does MFM, it’s really not too bad. I wrote the MFM decoding routines myself. The splitting of ODD and EVEN bits across a sector is goofy. And I’ve read about the reasoning behind it, and understand them, but in 2007 it’s hard to appreciate it. Memory, speed, storage, etc is just so plentiful these days, that you don’t have to jump through hoops to do basic tasks.
Right now, I’m just doing a single sector, but a loop can make that a track, and another loop can make that a disk.
I’ve got to put the “read disk” code into some other portion of the code because it’s sitting in “main()” right now. And I’ve got to create an object?/structure?/class? for a track. And perhaps for the whole disk. I’ve really got to brush up on my Java skills.