Magic Lantern Firmware Wiki

As we alter EXFAT we need to fix the checksum.


1. Sector 0: write EOS_DEVELOP (from 0x82) and BOOTDISK (from 0x7a)

2. Calculate checksum: chks:=0; for i:=0 to 5631 do if (i<>106) and (i<>107) and (i<>112) then chks:=(chks shr 1)+(chks shl 31)+buf[i];

Note: This is incorrect!  it should be chks ROTATE_RIGHT 1 and chks ROTATE_LEFT 31. Do not use SHIFT!

3. Sector 11: (from 0x1600, 5632 ) write the calculated checksum 128 times (fill the whole sector with the 4 byte checksum value)

4. Sector 12: Copy Sector 0 here

5. Sector 23: Copy Sector 11 here