Mail Archives: djgpp/1997/10/07/09:25:21
I took a look at the last release 55 of Ralf Brown's Interrupt List,
and it includes some info about FAT32 volumes. It seems that there
are some incompatibilities between a few DJGPP library functions and
FAT32.
But I don't have access to a machine with a FAT32 volume, so I cannot
test anything about it.
If anybody has such access, please test the following and report the
results:
(1) Can FAT32 drives be accessed from plain DOS (no Windows 9X)?
The Interrupt List seems to imply they can (e.g., look at
function 6Ch, Extended Open/Create File).
(2) The `_open' function in DJGPP library seems to be incompatible
with FAT32, both under LFN (on Windows 9X) and in plain DOS (if
the answer to (1) above is YES). For LFN, the problem is that
`_open' zeroes BH, where a bit should be set for FAT32 access,
whereas for DOS it should use function 6Ch instead of 3Dh.
Please see if modifying the code of `_open' works with FAT32
and also with usual volumes. The FAT32-specific problems will
only surface when referencing files larger than 2GB, so please
test this with such large files. Specific functions that seem
to depend on this and should therefore be tested are 40h
(`_write' in DJGPP's library calls it), 42h (`lseek') and 36h
(`statfs'); the latter should show problems when the FAT32 disk
is larger than 2GB (see also functions 7303h of Interrupt 21h).
(3) If testing reveals that library functions should know when they
are called for FAT32 volume (i.e., if there is no code that
will work for both FAT32 and FAT16), please see how it is
possible to detect the type of volume. Function 7302h of
Interrupt 21h seems to be a good starting point, but it seems
that it is only supported on Windows 9X, not in plain DOS.
You will need the latest Interrupt List; it is available from any
SimTel.NET mirror. The following is the primary mirror site:
ftp://ftp.simtel.net/pub/simtelnet/msdos/info/inter55?.zip
Thanks in advance to all of you who would like to contribute to this
effort.
- Raw text -