A byte hasn't been read until bit 7 is set:

76543210 <- bit #'s in regular byte

Disk hardware shifts bits to the left.  It appears to zero the shift
register after it has been read and bit 7 was set.

DOS 3.3
=======

Bit stream of five self-sync bytes

        *         *         *         *         *
????????11111111001111111100111111110011111111001111111100
       7012345670 <- possible starting locations
                  11111111  22222222  33333333  44444444
               11111111222222223333333344444444 55555555
              11111111222222223333333344444444  55555555
             111111112222222233333333 44444444  55555555
            111111112222222233333333  44444444  55555555
           1111111122222222 33333333  44444444  55555555
          1111111122222222  33333333  44444444  55555555
         11111111 22222222  33333333  44444444  55555555
        11111111  22222222  33333333  44444444  55555555
       1111111122222222333333334444444455555555 66666666
      1111111122222222333333334444444455555555  66666666
     11111111222222223333333344444444 55555555  66666666
    11111111222222223333333344444444  55555555  66666666
   111111112222222233333333 44444444  55555555  66666666
  111111112222222233333333  44444444  55555555  66666666
 1111111122222222 33333333  44444444  55555555  66666666
1111111122222222  33333333  44444444  55555555  66666666

Start bit 7:

10011111
11100111
11111001
11111110 (0)  <- looks to be in sync after this? only 4 self-sync needed?
11111111 (00)

DOS 3.2
=======

Bit stream of eight self-sync bytes (3.2 uses nine?):

*        *        *        *        *        *        *        *
111111110111111110111111110111111110111111110111111110111111110111111110

01234567

Start bit 7:

10111111
11011111
11101111
11110111
11111011
11111101
11111110
11111111 (0)

----------------------------------------------------------------------------

What would cause four self sync bytes to fail?

        *         *         *         *
xxxxxxxx1111111100111111110011111111001111111100dddddddd

x = unknown     d=data

Is there a way to read the data incorrectly as well as started reading in
the x's?

xxxxxxxx1111111100111111110011111111001111111100dddddddd
 77777777666666665555555544444444333333332222222211111111
                 ^--would not have started reading here
                  v-would have started reading here
                  55555555  44444444  33333333  22222222 <=2s are valid data
xxxxxxxx1111111100111111110011111111001111111100dddddddd
               11111111222222223333333344444444 55555555


DOS 3.3 Encoding
================

1. Five 10-bit (40-cycle) self sync bytes
2. Address Header (3 bytes)
3. Volume,Track,Sector numbers (6 bytes - 2 each)
4. Checksum (2 bytes) (exclusive-OR of unencoded volume,track and sector #s)
5. End of Address Header (3 bytes)
6. 10 self-sync bytes
7. Start of Sector
8. Sector Data (? bytes)
9. End of Sector (3 bytes)

3 & 4 are encoded by shifting the data right 1 bit and setting the odd
bits to 1.  This is the first byte.  The second byte is found by NOT shifting
the data, and setting the odd bits to 1.

Bits are numbered 7-0 from left to right

Sector numbers:

Soft Sector: 0 7 E 6 D 5 C 4 B 3 A 2 9 1 8 F
Hard Sector: 0 1 2 3 4 5 6 7 8 9 A B C D E F

Encoded sector numbers are hard sector numbers.

DOS 3.2: encoded sector number = hard sector = DOS sector
DOS 3.3: encoded sector number = hard sector -> soft sector = DOS sector

i.e. encoded sector 4 = hard sector 4 = DOS3.2 sector 4 = DOS3.3 sector D

1. FF FF FF FF FF
2. D5 AA 96
3. Volumne : FF FE = 11111111 11111110
                      7 5 3 1  6 4 2 0 <-data bits
                   = 11111110 = 254

   Track   : AA AA = 10101010 10101010 = 0
   Sector  : AA AA = 10101010 10101010 = 0
4. Checksum: FF FE = 11111111 11111110 = 254
5. DE AA EB
6. FF FF FF FF FF FF FF FF FF FF
7. D5 AA AD
8.
9. DE AA EB


Data Byte Translation

96 97 9A 9B <- disk bytes        10010110 10010111 10011010 10011011

00 01 02 03 <- translated bytes  00000000 00000001 00000010 00000011
                                 111111   11  2222 2222  33   333333

                                 11111111 22222222 33333333
  00 10 83  <- data bytes        00000000 00010000 10000011

D1 = 6L|2R  (? 6L(1)|2L(2))
D2 = 4L|4R  (? 4R(2)|4L(3))
D3 = 2L|6R  (? 2R(3)|6R(4))

6L = translated byte 1 (D1)
2R = translated byte 2 (D1)
4L = translated byte 2 (D2)
4R = translated byte 3 (D2)
2L = translated byte 3 (D3)
6R = trabslated byte 4 (D3)


Club Info Disk using Copy ][+ 5.5:

D5 AA 96-FF FE-AA AA-AA AA-FF FE-DE AA EB-...-D5 AA AD
-> TRACK 00 SECTOR 00

RAW DISK BYTES:
B6 F3 DC F4 B9 F5 F7 EB B5 EF FC FC DF DA E6 D9 AB AB D9 D9 A6 97 EB B3 AF BD

DOS DISK BYTES:
01 A5 27 C9 09 D0 18 A5 2B 4A 4A 4A 4A 09 C0 85 3F A9 5C 85 3E 18 AD FE

Read B6 convert ->48
Read F3 convert ->03
48|3 = 4B
