[9fans] dossrv vs. camera sd fat
it seems that the check in dossrv/dossubs.c:/^isdosfs does not
agree with the layout on the sd stick in my camera.
it turns out that although the first and last bytes of the magic
(jump instruction) have traditional values, the jump offset is
0. i suspect this is an oversight. (who boots from a camera
this is the change i made last night that at the time seemed
a bit over-agressive:
; diff -c dossubs.c /n/dump/2008/0913/sys/src/cmd/dossrv/dossubs.c
dossubs.c:22,31 - /n/dump/2008/0913/sys/src/cmd/dossrv/dossubs.c:22,29
* Check if the jump displacement (magic) is too short for a FAT.
- if(buf == 0xEB && buf == 0x90 /*&& buf >= 0x30*/)
+ if(buf == 0xEB && buf == 0x90 && buf >= 0x30)
i thought perhaps the test should be
- if(buf == 0xEB && buf == 0x90 && (buf >= 0x30 || buf == 0))
however, after a bit more digging, the ecma-107 standard says:
([url]http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-107.pdf[/url], page 11.)
"This field shall be reserved for system use.
Its content is not specified by this ECMA Standard
and shall be ignored in interchange."
it seems like the isdosfs checks are actually contrary
to the standard, though they generally seem to work
i assume since most fat are ment to be bootable.
anyone with any perspective on this?