PS. Here is a sample of what I would expect in the data file:
Apple 2 Bit Stream format for the 5.25 bit copy replication of the disk
II bit stream. Note each track is pre-synchronized, the emulator or
hardware would need to keep track of the spinning 'angle' and the track
to track seek time for protected disks only. (See LSB of FlagByte1.)
Header section, 512 bytes:
'Apple 2 Bit stream'
Rev#: two bytes
Image Checksum: 4 bytes (algorithm TBD)
FlagByte0: 1 byte
MSB = High = Write Protect
LSB = Protected disk
other misc flags and bytes available as revisions are made
Track table offset 32 (157 entries, one per possible track):
0: two byte length, one byte checksum
0.25: two byte length, one byte checksum
0.50: two byte length, one byte checksum
0.75: two byte length, one byte checksum
1: two byte length, one byte checksum
1.25: two byte length, one byte checksum
1.50: two byte length, one byte checksum
1.75: two byte length, one byte checksum
2: two byte length, one byte checksum
...
38: two byte length, one byte checksum
38.25: two byte length, one byte checksum
38.50: two byte length, one byte checksum
38.75: two byte length, one byte checksum
39: two byte length, one byte checksum
39.25: two byte length, one byte checksum
39.50: two byte length, one byte checksum
39.75: two byte length, one byte checksum
40: two byte length, one byte checksum
Offset 512bytes: Track 0 bit stream (always)
+ Offset 6.25k: 2nd stored track bit stream
+ Offset 6.25k: third stored track bit stream
...
through the last stored track
File length would vary depending on how many entries in the track table.