I have received the board and did my first image and I am now ready to start programming based on the code you have provided, but before I have some questions/remarks about the stream documentation
Before the questions I would like to make 2 remarks on the file format.
I understand that the format is optimized for communication and therefore may look odd for a file.
However I do not understand why you have defined nop2 and nop3. Nop means ignore this byte and nop2 means ignore this byte and the next one so nop2, xyz means skip nop2 and xyz. But you can achieve the exact same thing with nop, nop without definition of an extra encoding marker! Same for nop3. So that would free you two markers (0x09 and 0x0A)!
The other strange encoding is the overflow16 that increase by 0x10000 the cell value. I understand that this is probably not happening very often but as you are claiming to work with 32 bits value in order to get to the max value of 0xFFFFFFFF that’s a lot of overflow16! You might have considered (especially as this is not happening often) to use an extra byte or word that contains the upper part of the 32 bit value.
So now the questions:
- If I understand correctly the KryoFlux DTC program does not interpret the data received from the floppy drives it just write in the stream file two main items: index timing and flux transition timing?
- Looking from a high level at the information in the file (one per track) I presume we have the following sequence of blocks : StreamRead, flux transition data, index, StreamRead, flux transition data, index, …. , StreamEnd, End Is this correct?
- The number of index OOB must be one more than the number of revolution specified?
- Data before the first index are to be ignored?
- I suppose that when you talk about a “new cell” you mean a “new flux transition”?
- Mutiple StreamRead per track: does that mean tha the file contains several data block separated by index?
- One StreamEnd per track: Is it the end of all streamReads or the end of the stream file?
- Is it possible to have an index or other info after StreamEnd?
- End OOB? Why have StreamEnd and End? If StreamEnd is the end of the streamfile then why an End OOB after? Could that have been merged to an End (means end of stream file) followed by stream position and status?
Edit: PS I have some problems with my development environment (SW and machines) will take few days before I can start coding