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.


Copyright © 1985 to 2022 Beta Systems                            Last modified: Wednesday, January 05, 2022 .