Device Request 00H: Initialize device

Blk► Chr► 
 This tells the driver to initialize itself and the device and to describe
 how much memory it needs.

  Offset Size Contents
  ▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   +0      1  bLen         19H (length of this request packet)
   +1      1  bUnitNo      (not used)
   +2      1  bCmd         00H (command code)
   +3      2  rStatus      OUTPUT: Device Status Word must fill before exit
   +5H     8  res          (reserved)
  +0dH     1  bUnits       OUTPUT: number of units you support
  +0eH     4  pfEndAddr    INPUT:  end of available memory for driver
                           OUTPUT: end of resident code
  +12H     4  pfParms      INPUT:  addr of DEVICE= line in CONFIG.SYS (3.0+)
                           OUTPUT: addr of BPB pointer array
  +16H     1  bDrvNo       INPUT:  first drive number
  +17H     2  wErrMsgFlag  OUTPUT: 0000H=no error message (4.0+)
          25               size of this structure

     rStatus  On exit, the driver must place a DevStatusWord here.  Always
              set the Done bit (bit 8).  On an error, set the Done bit and
              the Error bit (bit 15) and put a Device Error Code in the low

      bUnits  On exit, set this to the number of block devices supported by
              this driver.

   pfEndAddr  On entry, this contains the address (segment:offset) of the
              end of memory available to the driver.

              On exit, you must set this to the address of the byte
              immediate after the last byte your driver wants to keep
              resident in memory.

              If you exit without installing, set this to your load addr.

     pfParms  (DOS 3.0+) On entry, this is the address of the text directly
              following the "DEVICE=" or "DEVICEHIGH [/L:nn,mm]=" in the
              line of CONFIG.SYS that loads the driver.  The text ends with
              a linefeed (0aH) or carriage return (0dH).

              On exit, block device drivers should fill this field with the
              far address of bUnits 25-byte BPBRec structures.

      bDrvNo  On entry, this tells you the first available drive number
              (0=A, 1=B, etc.)  Your block device(s) will be given bUnits of
              these drive numbers.

 wErrMsgFlag  On exit, if your driver fails to install, place 0001H in this
              field and set bit 15 of rStatus.  DOS will display:

                 Config.Sys Error in line ##

   Notes: ■ It's OK to use DOS fns 01H-0cH, 25H (set int vector), 30H (get
            version) and 35H (get int vector) during initialization.

          ■ This command will be used only once--directly after the driver
            is loaded via CONFIG.SYS.  You can free up some memory by
            placing the code that handles this request at the end of the
            driver and setting pfEndAddr to not include that code.

          ■ Block device drivers can use the bDrvNo field when displaying a
            message (e.g, "TAPE drive installed as drive d:").

See Also: Device Requests
          Installable Device Drivers