Hi, I have updated DEVLOAD:

This version now initializes the block device unit count in the
device header. Most drivers do this themselves already, but as
the DOS kernel has the feature of copying the value returned by
the init call to the device header, DEVLOAD now has the same

Please test if your devices can still be loaded with the new DEVLOAD
version (DEVLOAD allows you to load devices from the prompt which
otherwise would be loaded with DEVICE= or DEVICEHIGH=, but note that
UMB support is limited, memory drivers like HIMEM / EMM386 should not
be loaded with DEVLOAD and that using DEVICE= is still the official
way while DEVLOAD is just a convenient "cheat" to load drivers later).

The update also features somewhat shorter / better-to-compress text
strings, which makes the compressed binary DEVLOAD.COM a bit smaller.

Note that the update is also a WORKAROUND for a bug in the current
FreeDOS kernel IsDevice function: When walking the device chain,
IsDevice must only check names for CHAR devices. For BLOCK devices,
the 8 name bytes have the different meaning of 1 number-of-units
(drive letters) byte followed by 7 OPTIONAL name bytes. Padding can
be with spaces or 00 bytes.

The flaw in devload made it possible to have all-zero "names" for
block devices which in turn matched the "zero size" "name" of the
"\" and "." / ".." directories (for IsDevice, only the size up to
but excluding the first dot counts). In other words, DEVLOADing a
block device driver which did not initialize the unit count itself
resulted in . .. and the root directory all being treated as "char
devices" because of the bad IsDevice implementation in FreeDOS


This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual
core and dual graphics technology at this free one hour event hosted by HP, 
AMD, and NVIDIA.  To register visit http://www.hp.com/go/dualwebinar
Freedos-user mailing list

Reply via email to