*** 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).