formats index
	*** F64 (a companion file to certain D64's)

** Document revision 1.1

  Created by a program called FCOPY, written  by  M.  Edzes  in  the  early
1990's, these files contain some extra information about the associated D64
files like the low-level disk ID, sector checksum, valid  sector  flag  and
header ID. Some of what you are about to read is  pure  conjecture  on  the
part of the author to explain what these files are. These files  appear  to
be very rare, but are available from a CD called "C64 CD 96", also known as
the "Unicorn" CD.

  They all appear to be the same size, 2051 bytes, and seem to  start  with
the DISK ID from the D64 image.

      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F        ASCII
      -----------------------------------------------   ----------------
0000: 30 34 .. .. .. .. .. .. .. .. .. .. .. .. .. ..   04..............

  Here the DISK ID is "04", and is likely obtained from the  sector  header
ID for track 18/0 (not the one visible on the BAM sector).

  Once we take into account the first two bytes, this leaves the  remaining
2049 bytes. Dividing this number  by  683  (the  number  of  sectors  in  a
standard 35 track D64 image) leaves us a grouping of 3  bytes  per  sector.
Below is a dump of the first few bytes  of  the  F64  files,  and  we  will
examine a few of the 3-byte descriptions.

      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F        ASCII
      -----------------------------------------------   ----------------
0000: .. .. 2D 07 01 2B 07 8D 2B 07 47 2B 07 AE 2B 07   ..-++G++
0010: 80 2B 07 C3 2B 07 1C 2B 07 4E 2B 07 EC 2B 07 47   +++N++G
0020: 2B 07 FE 2B 07 5F 2B 07 69 2B 07 F3 2B 07 90 2B   ++_+i+++
0030: 07 22 2B 07 4D 2D 07 01 2D 07 01 2D 07 01 2D 07   "+M----

  The first sector has a description of "2D 07 01".

    Byte: 00 - "2D". This byte likely represents whether  the  sector  data
               was read or not. This  value  can  be  either  "2D"  (a  "-"
               character, meaning data not valid) or "2B" (a "+" character,
               meaning data valid).

          01 - "07". This is the "data descriptor byte" meaning the  sector
               is OK, and exists. If it was a value other than 07, we  have
               an error 22 ("data block not found").

          02 - "01". This is the checksum for the sector. It is arrived  at
               by XOR'ing all the  bytes  contained  in  the  sector,  from
               position 00 to position FF.

  The second sector has a description of "2B 07 8D". From the above layout,
this means the sector data is ok, the data header is ok ("07"), and  has  a
checksum of "8D" (calculated and verified from the D64).