fsck on FAT32 filesystem?

perryh at pluto.rain.com perryh at pluto.rain.com
Mon Jul 23 07:53:04 UTC 2012


Robert Bonomi <bonomi at mail.r-bonomi.com> wrote:

> > MSDOS/PCDOS had no _documented_ functions to directly access the
> > disks, bypassing the file system, but the functions _did_ exist.
>
> I'm sure you can provide the DOS 'function number' for those calls,
> and cites to published data confirming.

They may have involved a dedicated INT or two, e.g. INT 25H and/or
INT 26H, rather than INT 21H with a function number in AX.

I could have provided specifics 25 years ago :) when I was involved
with this stuff on a daily basis.  I have no idea whether it was
ever published, but it was well known to those of us who were using
it in system-level utilities.

> > The debugger's "read sector" and "write sector" commands used them,
> > and I suspect chkdsk, scandisk, and format probably also used them
> > although I never had occasion to verify one way or the other.
>
> My experince in porting MSDOS 3.1 to a non pc-clone architecture was 
> that fdisk, format, chkdsk, debug, and sys all invoked INT 13H directly.

I've got you beat in seniority :)  I was mostly working on 2.x, and
got out of the business somewhere around 3.1 or 3.2.

I think I'd remember if our stuff had quit working when 3.x came
along, but it's possible that those interfaces were only retained
for compatibility -- to avoid breaking old 3rd-party code -- and
that the MS userland had been revised to call the BIOS directly
(since by then the market consisted almost entirely of PCs and
clones -- decidedly not the case in the 2.0-2.1 timeframe).

BTW fdisk _would_ always have had to use BIOS calls, or some other
platform-specific mechanism, since the direct disk access in DOS was
restricted to the DOS partition(s).  The parameters were something
like buffer address, logical drive number (0 => A:, 2 => C:, etc.),
starting sector within the logical drive, and number of sectors.


More information about the freebsd-questions mailing list