MFMvsGCR

        Briefing put, MFM format inserts clock bits between
        each data bit written to disk.  If two consecutive
        data bits are zero, a 1 clock bit is inserted
        between them.  If either of two consecutive bits is
        a 1, a 0 clock pulse in put between them.  Using
        this coding method, the amount of data written to a
        disk is doubled, but the accuracy of reading the
        data is increased.  You see, the disk controller has
        an easier time synchronizing on data that changes
        states rather than data that repeats such as a long
        string of 1's or 0's.

        GCR format handles synchronization problems by
        encoding every four bits or data into five bits.
        The result is a binary number with no more than two
        adjacent 0 bits and no more than eight adjacent 1
        bits.  (This format is used on the Commodore 1541
        drives on the C64.) The following table shows the 5
        bit GCR equivalents of the binary numbers 0000-1111.

         Binary   GCR
         ------   ---
          0000   01010     Note that with GCR, no more than
          0001   01011     8 on bits or 2 off bits are
          0010   10010     possible.
          0011   10011
          0100   01110
          0101   01111
          0110   10110
          0111   10111
          1000   01001
          1001   11001
          1010   11010
          1011   11011
          1100   01101
          1101   11101
          1110   11110
          1111   10101
Interesting links: