|
| |
INSTALLING BLOCK DEVICES
Block devices are installed in the same way as character devices.
The difference is that block devices return additional
information. Block devices must also return:
A) The number of units in the block device. This number
determines the logical names the devices will have. For
example, if the current logical device letter is F at the
time of the install call, and the block device driver INIT
routine returns three logical units, the letters G, H, and I
are assigned to the units. The mapping is determined by the
position of the driver in the device list and the number of
units in the device. The number of units returned by INIT
overrides the value in the name/unit field of the device
header.
B) A pointer to a BPB (BIOS parameter block) pointer array.
This is a pointer to an array of *n* word pointers there *n*
is the number of units defined. These word pointers point to
BPBs. This way, if all of the units are the same, the entire
array can point to the same BPB to save space. The BPB
contains information pertinent to the devices such as the
sector size, number of sectors per allocation unit, and so
forth. The sector size of the BPB cannot be greater than the
maximum allotted size set at DOS initialization time. NOTE:
This array must be protected below the free pointer set by
the return.
C) The media descriptor byte. This byte is passed to devices so
that they know what parameters DOS is currently using for a
particular drive unit.
Block devices can take several approaches. They can be *dumb* or
*smart*. A dumb device would define a unit (and therefore a BPB)
for each possible media drive combination. Unit 0=drive 0;single
side, unit 1=drive 0;double side, etc.
For this approach, the media descriptor bytes would mean nothing.
A smart device would allow multiple media per unit. In this case,
the BPB table returned at INIT must define space large enough to
acommodate the largest possible medias supported (sector size in
BPB must be as large as maximum sector size DOS is currently
using). Smart drivers will use the media byte to pass information
about what media is currently in a unit. |