Although its ugly, the new code is here.
This shows the entire ISR in assembly now. I do like it much better.
Tonight I happened to transfer a track that has a good sector. The sector header passed checksum, as did the data portion of it. I decoded the data portion (after modifying and combining marco’s code with floppy.c) and displayed it on screen, comparing it with the amiga. Everything was exactly correct, so I have one good complete sector. Now if only all of them could be like that.
For the most part, I appear to only be off in sector size by perhaps 10 bytes or so, although there is an occasional missed or skipped sector. I haven’t manually looked at these yet BUT I’m betting if the size is right the data will be right, and that’s good. Fix my size problem, and go home happy.
I’m going to try David’s idea of using only edge-based interrupts, but I’m not sure yet what indirect complications that might bring up. I’m going to put some thought into it.