Device Request 10H: Output Until Busy

Chr► OTB► 
 This tells the driver to write data to the device until the device signals
 that it cannot accept any more data.

  Offset Size Contents
  ▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   +0      1  bLen         14H (length of this request packet)
   +1      1  bUnitNo      (not used)
   +2      1  bCmd         10H (command code)
   +3      2  rStatus      OUTPUT: Device Status Word must fill before exit
   +5H     8  res          (reserved)
  +0dH     1  bData        (not used)
  +0eH     4  pfBuffer     INPUT: buffer address
  +12H     2  wWriteSize   INPUT: number of bytes to write
                           OUTPUT: bytes actually written
          20               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

              It is NOT an error to write fewer than the requested number of
              bytes.  Just set the Done bit, update wWriteSize, and exit.

    pfBuffer  is the address of a buffer containing data to write to the

  wWriteSize  on entry, specifies how much data to transfer from pfBuffer to
              the device.

              On return, fill this with the actual amount of data you
              transferred, in bytes.

   Notes: ■ Only character device drivers capable of Output-Until-Busy need
            support this request (see Device Attribute bit 13).

          ■ The driver must transfer as much data as possible, update the
            wWriteSize field, set bit 8, and return immediately.

          ■ This fn makes it possible for DOS to optimize its device output
            activities and to take advantage of hardware features such as a
            printer's internal input buffer.

            For instance, DOS can pass a large buffer of data, and the
            driver can fill the printer's buffer and return.  Then DOS can
            periodically check the output status (DvRq 0aH) and call this
            fn again (passing only the unprocessed data) when the device is
            not busy.  This avoids tying up the system inside a driver's
            wait loop.

See Also: Device Requests
          Installable Device Drivers