
I'm trying to get a reliable way to read a track, to make a universal disk transfer tool.
So thanks to Fabrice, I'm using the Sedoric routines (at $CFCD in Sedoric kernel - see Sedoric à Nu page 179 for details).
This is done by setting some parameters (drive, track, data storage buffer), then sending a $E0 (read track) command at the FDC with the $CFCD routine.
All seems to be fine except that some bytes, always at value $C2, are either inserted in the reading, either crush existing bytes. Ouch.
I tried this on NightBird's hardware at the last meeting and we had those $C2 bytes too, so my hardware is not to blame (or both are to blame

By using Nibble, which reads tracks too, I noticed this didn't seem to happen.
I took a look at the code and the track reading is similar to the code I used, except there was 1st a $18 command (set the head on the right track). So I modified my code but still have the same problem.
I made a small program counting the $C2 bytes in the reading buffer once the track has been read. Here are the results:
- on Euphoric, both my method and Nibble read the track, 4 bytes at $C2 are read
- on a real Oric, tried twice, with my method 144 (!!!) bytes at $C2 are read
- on a real Oric, tried twice, with Nibble 2.4, 19 or 20 bytes at $C2 are read
I absoutely don't understand why there are such errors ans differences.
Any idea on what happens?