来源(CSDN社区 community.csdn.net)

From: http://topic.csdn.net/t/20010610/13/153808.html

int13的新资料,也许对你有帮助,很长
  --------B-1300-------------------------------
  INT   13   -   DISK   -   RESET   DISK   SYSTEM
  AH   =   00h
  DL   =   drive   (if   bit   7   is   set   both   hard   disks   and   floppy   disks   reset)
  Return:   AH   =   status   (see   #00234)
  CF   clear   if   successful   (returned   AH=00h)
  CF   set   on   error
  Note: forces   controller   to   recalibrate   drive   heads   (seek   to   track   0)
  for   PS/2   35SX,   35LS,   40SX   and   L40SX,   as   well   as   many   other   systems,
      both   the   master   drive   and   the   slave   drive   respond   to   the   Reset
      function   that   is   issued   to   either   drive
  SeeAlso:   AH=0Dh,AH=11h,INT   21/AH=0Dh,INT   4D/AH=00h"TI   Professional"
  SeeAlso:   INT   56"Tandy   2000",MEM   0040h:003Eh
  --------B-1301-------------------------------
  INT   13   -   DISK   -   GET   STATUS   OF   LAST   OPERATION
  AH   =   01h
  DL   =   drive   (bit   7   set   for   hard   disk)
  Return:   CF   clear   if   successful   (returned   status   00h)
  CF   set   on   error
  AH   =   status   of   previous   operation   (see   #00234)
  Note: some   BIOSes   return   the   status   in   AL;   the   PS/2   Model   30/286   returns   the
      status   in   both   AH   and   AL
  SeeAlso:   AH=00h,INT   4D/AH=01h,MEM   0040h:0041h,MEM   0040h:0074h

  (Table   00234)
  Values   for   disk   operation   status:
    00h successful   completion
    01h invalid   function   in   AH   or   invalid   parameter
    02h address   mark   not   found
    03h disk   write-protected
    04h sector   not   found/read   error
    05h reset   failed   (hard   disk)
    05h data   did   not   verify   correctly   (TI   Professional   PC)
    06h disk   changed   (floppy)
    07h drive   parameter   activity   failed   (hard   disk)
    08h DMA   overrun
    09h data   boundary   error   (attempted   DMA   across   64K   boundary   or   >80h   sectors)
    0Ah bad   sector   detected   (hard   disk)
    0Bh bad   track   detected   (hard   disk)
    0Ch unsupported   track   or   invalid   media
    0Dh invalid   number   of   sectors   on   format   (PS/2   hard   disk)
    0Eh control   data   address   mark   detected   (hard   disk)
    0Fh DMA   arbitration   level   out   of   range   (hard   disk)
    10h uncorrectable   CRC   or   ECC   error   on   read
    11h data   ECC   corrected   (hard   disk)
    20h controller   failure
    31h no   media   in   drive   (IBM/MS   INT   13   extensions)
    32h incorrect   drive   type   stored   in   CMOS   (Compaq)
    40h seek   failed
    80h timeout   (not   ready)
    AAh drive   not   ready   (hard   disk)
    B0h volume   not   locked   in   drive   (INT   13   extensions)
    B1h volume   locked   in   drive   (INT   13   extensions)
    B2h volume   not   removable   (INT   13   extensions)
    B3h volume   in   use   (INT   13   extensions)
    B4h lock   count   exceeded   (INT   13   extensions)
    B5h valid   eject   request   failed   (INT   13   extensions)
    BBh undefined   error   (hard   disk)
    CCh write   fault   (hard   disk)
    E0h status   register   error   (hard   disk)
    FFh sense   operation   failed   (hard   disk)
  SeeAlso:   #M0022
  --------B-1302-------------------------------
  INT   13   -   DISK   -   READ   SECTOR(S)   INTO   MEMORY
  AH   =   02h
  AL   =   number   of   sectors   to   read   (must   be   nonzero)
  CH   =   low   eight   bits   of   cylinder   number
  CL   =   sector   number   1-63   (bits   0-5)
            high   two   bits   of   cylinder   (bits   6-7,   hard   disk   only)
  DH   =   head   number
  DL   =   drive   number   (bit   7   set   for   hard   disk)
  ES:BX   ->   data   buffer
  Return:   CF   set   on   error
          if   AH   =   11h   (corrected   ECC   error),   AL   =   burst   length
  CF   clear   if   successful
  AH   =   status   (see   #00234)
  AL   =   number   of   sectors   transferred   (only   valid   if   CF   set   for   some
              BIOSes)
  Notes: errors   on   a   floppy   may   be   due   to   the   motor   failing   to   spin   up   quickly
      enough;   the   read   should   be   retried   at   least   three   times,   resetting
      the   disk   with   AH=00h   between   attempts
  most   BIOSes   support   "multitrack"   reads,   where   the   value   in   AL
      exceeds   the   number   of   sectors   remaining   on   the   track,   in   which
      case   any   additional   sectors   are   read   beginning   at   sector   1   on
      the   following   head   in   the   same   cylinder;   the   MSDOS   CONFIG.SYS   command
      MULTITRACK   (or   the   Novell   DOS   DEBLOCK=)   can   be   used   to   force   DOS   to
      split   disk   accesses   which   would   wrap   across   a   track   boundary   into   two
      separate   calls
  the   IBM   AT   BIOS   and   many   other   BIOSes   use   only   the   low   four   bits   of
      DH   (head   number)   since   the   WD-1003   controller   which   is   the   standard
      AT   controller   (and   the   controller   that   IDE   emulates)   only   supports
      16   heads
  AWARD   AT   BIOS   and   AMI   386sx   BIOS   have   been   extended   to   handle   more
      than   1024   cylinders   by   placing   bits   10   and   11   of   the   cylinder   number
      into   bits   6   and   7   of   DH
  under   Windows95,   a   volume   must   be   locked   (see   INT   21/AX=440Dh/CX=084Bh)
      in   order   to   perform   direct   accesses   such   as   INT   13h   reads   and   writes
  all   versions   of   MS-DOS   (including   v7   [Win95])   have   a   bug   which   prevents
      booting   on   hard   disks   with   256   heads,   so   many   modern   BIOSes   provide
      mappings   with   at   most   255   heads
  SeeAlso:   AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1",AH=42h"IBM"
  SeeAlso:   INT   21/AX=440Dh/CX=084Bh,INT   4D/AH=02h
  --------B-1303-------------------------------
  INT   13   -   DISK   -   WRITE   DISK   SECTOR(S)
  AH   =   03h
  AL   =   number   of   sectors   to   write   (must   be   nonzero)
  CH   =   low   eight   bits   of   cylinder   number
  CL   =   sector   number   1-63   (bits   0-5)
            high   two   bits   of   cylinder   (bits   6-7,   hard   disk   only)
  DH   =   head   number
  DL   =   drive   number   (bit   7   set   for   hard   disk)
  ES:BX   ->   data   buffer
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234)
  AL   =   number   of   sectors   transferred
              (only   valid   if   CF   set   for   some   BIOSes)
  Notes: errors   on   a   floppy   may   be   due   to   the   motor   failing   to   spin   up   quickly
      enough;   the   write   should   be   retried   at   least   three   times,   resetting
      the   disk   with   AH=00h   between   attempts
  most   BIOSes   support   "multitrack"   writes,   where   the   value   in   AL
      exceeds   the   number   of   sectors   remaining   on   the   track,   in   which
      case   any   additional   sectors   are   written   beginning   at   sector   1   on
      the   following   head   in   the   same   cylinder;   the   CONFIG.SYS   command
      MULTITRACK   can   be   used   to   force   DOS   to   split   disk   accesses   which
      would   wrap   across   a   track   boundary   into   two   separate   calls
  the   IBM   AT   BIOS   and   many   other   BIOSes   use   only   the   low   four   bits   of
      DH   (head   number)   since   the   WD-1003   controller   which   is   the   standard
      AT   controller   (and   the   controller   that   IDE   emulates)   only   supports
      16   heads
  AWARD   AT   BIOS   and   AMI   386sx   BIOS   have   been   extended   to   handle   more
      than   1024   cylinders   by   placing   bits   10   and   11   of   the   cylinder   number
      into   bits   6   and   7   of   DH
  under   Windows95,   an   application   must   issue   a   physical   volume   lock   on
      the   drive   via   INT   21/AX=440Dh   before   it   can   successfully   write   to
      the   disk   with   this   function
  SeeAlso:   AH=02h,AH=0Bh,AH=07h"V10DISK.SYS",AH=22h"PS/1",AH=43h"IBM"
  SeeAlso:   INT   21/AX=440Dh"DOS   3.2+",INT   4D/AH=03h
  --------B-1304-------------------------------
  INT   13   -   DISK   -   VERIFY   DISK   SECTOR(S)
  AH   =   04h
  AL   =   number   of   sectors   to   verify   (must   be   nonzero)
  CH   =   low   eight   bits   of   cylinder   number
  CL   =   sector   number   1-63   (bits   0-5)
            high   two   bits   of   cylinder   (bits   6-7,   hard   disk   only)
  DH   =   head   number
  DL   =   drive   number   (bit   7   set   for   hard   disk)
  ES:BX   ->   data   buffer   (PC,XT,AT   with   BIOS   prior   to   11/15/85)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234)
  AL   =   number   of   sectors   verified
  Notes: errors   on   a   floppy   may   be   due   to   the   motor   failing   to   spin   up   quickly
      enough;   the   write   should   be   retried   at   least   three   times,   resetting
      the   disk   with   AH=00h   between   attempts
  this   function   does   not   compare   the   disk   with   memory,   it   merely
      checks   whether   the   sector's   stored   CRC   matches   the   data's   actual   CRC
  the   IBM   AT   BIOS   and   many   other   BIOSes   use   only   the   low   four   bits   of
      DH   (head   number)   since   the   WD-1003   controller   which   is   the   standard
      AT   controller   (and   the   controller   that   IDE   emulates)   only   supports
      16   heads
  AWARD   AT   BIOS   and   AMI   386sx   BIOS   have   been   extended   to   handle   more
      than   1024   cylinders   by   placing   bits   10   and   11   of   the   cylinder   number
      into   bits   6   and   7   of   DH
  SeeAlso:   AH=02h,AH=44h,INT   4D/AH=04h,INT   4D/AH=06h
  --------B-1305-------------------------------
  INT   13   -   FLOPPY   -   FORMAT   TRACK
  AH   =   05h
  AL   =   number   of   sectors   to   format
  CH   =   track   number
  DH   =   head   number
  DL   =   drive   number
  ES:BX   ->   address   field   buffer   (see   #00235)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234)
  Notes: on   AT   or   higher,   call   AH=17h   first
  the   number   of   sectors   per   track   is   read   from   the   diskette   parameter
      table   pointed   at   by   INT   1E
  SeeAlso:   AH=05h"FIXED",AH=17h,AH=18h,INT   1E

  Format   of   floppy   format   address   field   buffer   entry   (one   per   sector   in   track):
  Offset Size Description (Table   00235)
    00h BYTE track   number
    01h BYTE head   number   (0-based)
    02h BYTE sector   number
    03h BYTE sector   size   (00h=128   bytes,   01h=256   bytes,   02h=512,   03h=1024)
  --------B-1305-------------------------------
  INT   13   -   FIXED   DISK   -   FORMAT   TRACK
  AH   =   05h
  AL   =   interleave   value   (XT-type   controllers   only)
  ES:BX   ->   512-byte   format   buffer
  the   first   2*(sectors/track)   bytes   contain   F,N   for   each   sector
        F   =   sector   type
  00h   for   good   sector
  20h   to   unassign   from   alternate   location
  40h   to   assign   to   alternate   location
  80h   for   bad   sector
        N   =   sector   number
  CH   =   cylinder   number   (bits   8,9   in   high   bits   of   CL)
  CL   =   high   bits   of   cylinder   number   (bits   7,6)
  DH   =   head
  DL   =   drive
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   code   (see   #00234)
  Notes: AWARD   AT   BIOS   and   AMI   386sx   BIOS   have   been   extended   to   handle   more
      than   1024   cylinders   by   placing   bits   10   and   11   of   the   cylinder   number
      into   bits   6   and   7   of   DH
  for   XT-type   controllers   on   an   AT   or   higher,   AH=0Fh   should   be   called
      first
  the   IBM   AT   BIOS   and   many   other   BIOSes   use   only   the   low   four   bits   of
      DH   (head   number)   since   the   WD-1003   controller   which   is   the   standard
      AT   controller   (and   the   controller   that   IDE   emulates)   only   supports
      16   heads
  not   all   controller   support   sector   types   20h   and   40h
  under   Windows95,   an   application   must   issue   a   physical   volume   lock   on
      the   drive   via   INT   21/AX=440Dh   before   it   can   successfully   write   to
      the   disk   with   this   function
  SeeAlso:   AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
  --------d-1305-------------------------------
  INT   13   -   Future   Domain   SCSI   BIOS   -   SEND   SCSI   MODE   SELECT   COMMAND
  AH   =   05h
  DL   =   hard   drive   ID
  ES:BX   ->   mode   select   data   (see   #00236)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   code   (see   #00234)
  Notes: this   function   can   be   called   before   AH=07h"SCSI"   or   AH=06h"SCSI"   to
      format   a   SCSI   disk   with   the   desired   parameters
  the   mode   select   data   below   is   from   the   SCSI-1   specification
  the   TMC-950   does   not   support   any   Future   Domain   BIOS   calls;   instead,
      it   provides   a   full   CAM   implementation   (see   INT   4F/AX=8100h)
  SeeAlso:   AH=06h"SCSI",AH=07h"SCSI",INT   4F/AX=8100h

  Format   of   Future   Domain   SCSI   mode   select   data:
  Offset Size Description (Table   00236)
    00h BYTE number   of   bytes   of   remaining   data   (12   +   vendor   unique   length)
    01h BYTE reserved   (0)
    02h BYTE medium   type   (0   for   hard   disk)
    03h BYTE reserved   (0)
    04h BYTE block   descriptor   length   (8)
    05h BYTE density   code   (0   for   hard   disk)
    06h     3   BYTEs (big-endian)   number   of   blocks   (000000h   for   entire   disk)
    09h BYTE reserved   (0)
    0Ah     3   BYTEs (big-endian)   block   length   (512   standard,   or   256)
    0Dh ??? vendor-specific   parameter   bytes   (optional)
  --------d-13057FSI324D-----------------------
  INT   13   -   2M   -   FORMAT   TRACK
  AX   =   057Fh
  SI   =   324Dh   ("2M")
  CH   =   track   number
  DH   =   head   number
  DL   =   drive   number
  ES:BX   ->   boot   sector   of   future   2M   diskette
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234)
  Program:   2M   is   a   TSR   developed   by   Ciriaco   Garcia   de   Celis   to   support
      non   standard   diskettes   with   820-902/1476-1558K   (5.25   DD/HD)
      and   984-1066/1804-1886K/3608-3772K   (3.5   DD/HD/ED)
  InstallCheck:   must   search   for   a   "CiriSOFT:2M:1.3"   or   "CiriSOFT:2MX:3.0"   or
      similar   (recomended   ":2M:",   ":2MX:",   or   ":2MB:"   substrings)   in   the
      CiriSOFT   TSR   interface
  Notes: it   is   not   necessary   to   call   AH=17h   or   AH=18h   first   (will   be   ignored)
  the   diskette   format   must   always   begin   on   cylinder   0   head   0
  the   boot   sector   can   be   obtained   from   an   already-formatted   2M   diskette
      (by   calling   AH=02h   with   head   number   00h   in   2M   v1.x   and   with   head
      number   80h   for   2M   v2+)
  since   2M   v2.0,   the   BOOT   sector   is   emulated   using   the   first   physical
      sector   of   FAT2;   the   second-sixth   physical   sectors   of   FAT2   in   HD   or   ED
      diskettes   store   the   SuperBOOT   code.   To   skip   the   FAT2   emulation   (using
      FAT1)   of   2M,   in   order   to   read   the   SuperBOOT   code,   head   number   must   be
      80h-81h   instead   0-1   (bit   7   active)   in   standard   read/write   functions.
      This   lets   diskcopy   programs   format   2M   target   diskettes   copying
      SuperBOOT   code.   If   the   target   diskette   is   already   2MF   formatted
      (containing   boot   code)   this   trick   it   is   not   necessary.
  when   using   STV   technology   (offset   65   of   boot   sector   equal   to   1)   it   is
      necessary   to   write   the   full   track   before   formatting   (except   track   0
      side   0)   to   complete   the   format   and   skip   future   CRC   errors   on   read;   in
      track   0   side   1   the   head   used   must   be   81h   instead   1.   Diskcopy   programs
      may   do   a   format-write-verify   sequential   phases   to   improve   performance
  SeeAlso:   AH=05h"FLOPPY",AH=18h/CX=5055h,INT   2F"CiriSOFT"
  --------B-1306-------------------------------
  INT   13   -   FIXED   DISK   -   FORMAT   TRACK   AND   SET   BAD   SECTOR   FLAGS   (XT,PORT)
  AH   =   06h
  AL   =   interleave   value
  CH   =   cylinder   number   (bits   8,9   in   high   bits   of   CL)
  CL   =   sector   number
  DH   =   head
  DL   =   drive
  Return:   AH   =   status   code   (see   #00234)
  Note: AWARD   AT   BIOS   and   AMI   386sx   BIOS   have   been   extended   to   handle   more
      than   1024   cylinders   by   placing   bits   10   and   11   of   the   cylinder   number
      into   bits   6   and   7   of   DH
  SeeAlso:   AH=05h"FIXED",AH=07h"FIXED"
  --------d-1306-------------------------------
  INT   13   -   Future   Domain   SCSI   BIOS   -   FORMAT   DRIVE   WITH   BAD   SECTOR   MAPPING
  AH   =   06h
  AL   =   interleave
            (0   =   default,   1   =   consecutive   sectors,   2   -   255   =   vendor   unique)
  DL   =   hard   drive   ID
  DH   =   defect   list   info   (see   #00237)
  ES:BX   ->   defect   table   A,   B   or   C   (see   #00238,#00239,#00240)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   code   (see   #00234)
  Notes: block   addresses   must   be   in   ascending   order   (for   table   B,   cylinder   is
      most   significant,   byte   from   index   least   significant;   for   table   C,
      cylinder   is   most   significant,   sector   number   least   significant)
  table   B   defect   bytes   from   index   of   FFFFFFFFh   indicates   that   the   entire
      track   shall   be   reassigned
  table   C   defect   sector   number   of   FFFFFFFFh   indicates   that   the   entire
      track   shall   be   reassigned
  the   TMC-950   does   not   support   any   Future   Domain   BIOS   calls;   instead,
      it   provides   a   full   CAM   implementation   (see   INT   4F/AX=8100h)
  SeeAlso:   AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"

  Bitfields   for   Future   Domain   SCSI   defect   list   info:
  Bit(s) Description (Table   00237)
    7-5 drive   LUN
    4 defect   list   is   available
    3 defect   list   is   complete   (erase   drive's   defect   list)
    2-0 defect   table   format
  (000=use   defect   table   A,   100=use   defect   table   B,
    101=use   defect   table   C)

  Format   of   Future   Domain   SCSI   defect   table   A:
  Offset Size Description (Table   00238)
    00h WORD number   of   bytes   remaining   in   table
    02h BYTE reserved   (0)
    03h BYTE reserved   (0)
    04h WORD (big-endian)   defect   list   length   (4*number   of   defects)
    06h     4   DWORDs (big-endian)   defect   block   addresses

  Format   of   Future   Domain   SCSI   defect   table   B:
  Offset Size Description (Table   00239)
    00h WORD number   of   bytes   remaining   in   table
    02h BYTE reserved   (0)
    03h BYTE reserved   (0)
    04h WORD (big-endian)   defect   list   length   (8*number   of   defects)
    06h   8N   BYTEs defect   list   [array]   (see   #00241)

  Format   of   Future   Domain   SCSI   defect   table   C:
  Offset Size Description (Table   00240)
    00h WORD number   of   bytes   remaining   in   table
    02h BYTE reserved   (0)
    03h BYTE reserved   (0)
    04h WORD (big-endian)   defect   list   length   (8*number   of   defects)
    06h   8N   BYTEs defect   list   [array]   (see   #00241)

  Format   of   Future   Domain   SCSI   defect   list   entry:
  Offset Size Description (Table   00241)
    00h     3   BYTEs (big-endian)   cylinder   number   of   defect
    03h BYTE head   number   of   defect
    04h DWORD (big-endian)   defect   bytes   from   index
  --------d-1306-------------------------------
  INT   13   -   Adaptec   AHA-154xA/Bustek   BT-542   BIOS   -   IDENTIFY   SCSI   DEVICES
  AH   =   06h
  Return:   AH   =   status   code   (see   #00234)
  CF   clear   if   successful
          AL   =   first   drive   supported
  (80h   nonconcurrent   operation,   81h   concurrent   operation)
  CF   set   on   error
  Desc: determine   the   number   of   the   first   supported   SCSI   drive
  Note: the   return   value   is   80h   when   two   SCSI   drives   are   supported,   81h   if
      only   one   SCSI   drive   is   installed
  SeeAlso:   AH=08h"PC",#00732   at   INT   1A/AX=B102h
  --------d-1306-------------------------------
  INT   13   -   V10DISK.SYS   -   READ   DELETED   SECTORS
  AH   =   06h
  AL   =   number   of   sectors
  CH   =   cylinder   number   (bits   8,9   in   high   bits   of   CL)
  CL   =   sector   number
  DH   =   head
  DL   =   drive
  ES:BX   ->   buffer
  Return:   AH   =   status   code   (see   #00234)
  Program:   V10DISK.SYS   is   a   driver   for   the   Flagstaff   Engineering   8"   floppies
  SeeAlso:   AH=02h,AH=07h"V10DISK.SYS"
  --------B-1307-------------------------------
  INT   13   -   FIXED   DISK   -   FORMAT   DRIVE   STARTING   AT   GIVEN   TRACK   (XT,PORT)
  AH   =   07h
  AL   =   interleave   value   (XT   only)
  ES:BX   =   512-byte   format   buffer   (see   AH=05h)
  CH   =   cylinder   number   (bits   8,9   in   high   bits   of   CL)
  CL   =   sector   number
  DH   =   head
  DL   =   drive
  Return:   AH   =   status   code   (see   #00234)
  Note: AWARD   AT   BIOS   and   AMI   386sx   BIOS   have   been   extended   to   handle   more
      than   1024   cylinders   by   placing   bits   10   and   11   of   the   cylinder   number
      into   bits   6   and   7   of   DH
  SeeAlso:   AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
  --------d-1307-------------------------------
  INT   13   -   Future   Domain   SCSI   BIOS   -   FORMAT   DRIVE
  AH   =   07h
  AL   =   interleave   (0   =   default,   1   =   consecutive   sectors,
                2   -   255   =   vendor   unique)
  DL   =   hard   drive   ID
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   code   (see   #00234)
  SeeAlso:   AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
  --------d-1307-------------------------------
  INT   13   -   V10DISK.SYS   -   WRITE   DELETED   SECTORS
  AH   =   07h
  AL   =   number   of   sectors
  CH   =   cylinder   number   (bits   8,9   in   high   bits   of   CL)
  CL   =   sector   number
  DH   =   head
  DL   =   drive
  ES:BX   ->   buffer
  Return:   AH   =   status   code   (see   #00234)
  Program:   V10DISK.SYS   is   a   driver   for   the   Flagstaff   Engineering   8"   floppies
  SeeAlso:   AH=03h,AH=06h"V10DISK.SYS"
  --------B-1308-------------------------------
  INT   13   -   DISK   -   GET   DRIVE   PARAMETERS   (PC,XT286,CONV,PS,ESDI,SCSI)
  AH   =   08h
  DL   =   drive   (bit   7   set   for   hard   disk)
  Return:   CF   set   on   error
          AH   =   status   (07h)   (see   #00234)
  CF   clear   if   successful
          AH   =   00h
          AL   =   00h   on   at   least   some   BIOSes
          BL   =   drive   type   (AT/PS2   floppies   only)   (see   #00242)
          CH   =   low   eight   bits   of   maximum   cylinder   number
          CL   =   maximum   sector   number   (bits   5-0)
    high   two   bits   of   maximum   cylinder   number   (bits   7-6)
          DH   =   maximum   head   number
          DL   =   number   of   drives
          ES:DI   ->   drive   parameter   table   (floppies   only)
  Notes: may   return   successful   even   though   specified   drive   is   greater   than   the
      number   of   attached   drives   of   that   type   (floppy/hard);   check   DL   to
      ensure   validity
  for   systems   predating   the   IBM   AT,   this   call   is   only   valid   for   hard
      disks,   as   it   is   implemented   by   the   hard   disk   BIOS   rather   than   the
      ROM   BIOS
  Toshiba   laptops   with   HardRAM   return   DL=02h   when   called   with   DL=80h,
      but   fail   on   DL=81h.     The   BIOS   data   at   40h:75h   correctly   reports   01h.
  may   indicate   only   two   drives   present   even   if   more   are   attached;   to
      ensure   a   correct   count,   one   can   use   AH=15h   to   scan   through   possible
      drives
  for   BIOSes   which   reserve   the   last   cylinder   for   testing   purposes,   the
      cylinder   count   is   automatically   decremented
  on   PS/1s   with   IBM   ROM   DOS   4,   nonexistent   drives   return   CF   clear,
      BX=CX=0000h,   and   ES:DI   =   0000h:0000h
  the   PC-Tools   PCFORMAT   program   requires   that   AL=00h   before   it   will
      proceed   with   the   formatting
  BUG: several   different   Compaq   BIOSes   incorrectly   report   high-numbered
      drives   (such   as   90h,   B0h,   D0h,   and   F0h)   as   present,   giving   them   the
      same   geometry   as   drive   80h;   as   a   workaround,   scan   through   disk
      numbers,   stopping   as   soon   as   the   number   of   valid   drives   encountered
      equals   the   value   in   0040h:0075h
  SeeAlso:   AH=06h"Adaptec",AH=13h"SyQuest",AH=48h,AH=15h,INT   1E
  SeeAlso:   INT   41"HARD   DISK   0"

  (Table   00242)
  Values   for   diskette   drive   type:
    01h 360K
    02h 1.2M
    03h 720K
    04h 1.44M
    05h ???   (reportedly   an   obscure   drive   type   shipped   on   some   IBM   machines)
  2.88M   on   some   machines   (at   least   AMI   486   BIOS)
    06h 2.88M
    10h ATAPI   Removable   Media   Device
  --------d-1308-------------------------------
  INT   13   -   V10DISK.SYS   -   SET   FORMAT
  AH   =   08h
  AL   =   number   of   sectors
  CH   =   cylinder   number   (bits   8,9   in   high   bits   of   CL)
  CL   =   sector   number
  DH   =   head
  DL   =   drive
  Return:   AH   =   status   code   (see   #00234)
  Program:   V10DISK.SYS   is   a   driver   for   the   Flagstaff   Engineering   8"   floppies
  Note: details   not   available
  SeeAlso:   AH=03h,AH=06h"V10DISK.SYS"
  --------y-130800DLF0-------------------------
  INT   13   -   SecureDrive   -   INSTALLATION   CHECK
  AX   =   08000h
  DL   =   F0h
  Return:   AX   =   EDCBh   for   version   1.0-1.2
  AX   =   EDCCh   for   version   1.3
  CX   =   code   segment
  DX   =   data   address   within   code   segment
  Program:   SecureDrive   by   Mike   Ingle   <mikeingle@delphi.com>   allows   you   to   create
      an   encrypted   partition   on   your   harddisk.
  --------B-1309-------------------------------
  INT   13   -   HARD   DISK   -   INITIALIZE   CONTROLLER   WITH   DRIVE   PARAMETERS   (AT,PS)
  AH   =   09h
  DL   =   drive   (80h   for   first,   81h   for   second)
  Return:   CF   clear   if   successful
  CF   set   on   error
  AH   =   status   (see   #00234)
  Notes: on   the   PC   and   XT,   this   function   uses   the   parameter   table   pointed   at   by
      INT   41
  on   the   AT   and   later,   this   function   uses   the   parameter   table   pointed   at
      by   INT   41   if   DL=80h,   and   the   parameter   table   pointed   at   by   INT   46   if
      DL=81h
  SeeAlso:   INT   41"HARD   DISK   0",INT   46"HARD   DISK   1"
  --------B-130A-------------------------------
  INT   13   -   HARD   DISK   -   READ   LONG   SECTOR(S)   (AT   and   later)
  AH   =   0Ah
  AL   =   number   of   sectors   (01h   may   be   only   value   supported)
  CH   =   low   eight   bits   of   cylinder   number
  CL   =   sector   number   (bits   5-0)
            high   two   bits   of   cylinder   number   (bits   7-6)
  DH   =   head   number
  DL   =   drive   number   (80h   =   first,   81h   =   second)
  ES:BX   ->   data   buffer
  Return:   CF   clear   if   successful
  CF   set   on   error
  AH   =   status   (see   #00234)
  AL   =   number   of   sectors   transferred
  Notes: this   function   reads   in   four   to   seven   bytes   of   error-correcting   code
      along   with   each   sector's   worth   of   information
  data   errors   are   not   automatically   corrected,   and   the   read   is   aborted
      after   the   first   sector   with   an   ECC   error
  used   for   diagnostics   only   on   PS/2   systems;   IBM   officially   classifies
      this   function   as   optional
  SeeAlso:   AH=02h,AH=0Bh,MEM   0040h:0074h
  --------B-130B-------------------------------
  INT   13   -   HARD   DISK   -   WRITE   LONG   SECTOR(S)   (AT   and   later)
  AH   =   0Bh
  AL   =   number   of   sectors   (01h   may   be   only   value   supported)
  CH   =   low   eight   bits   of   cylinder   number
  CL   =   sector   number   (bits   5-0)
            high   two   bits   of   cylinder   number   (bits   7-6)
  DH   =   head   number
  DL   =   drive   number   (80h   =   first,   81h   =   second)
  ES:BX   ->   data   buffer
  Return:   CF   clear   if   successful
  CF   set   on   error
  AH   =   status   (see   #00234)
  AL   =   number   of   sectors   transferred
  Notes: each   sector's   worth   of   data   must   be   followed   by   four   to   seven   bytes   of
      error-correction   information
  used   for   diagnostics   only   on   PS/2   systems;   IBM   officially   classifies
      this   function   as   optional
  SeeAlso:   AH=03h,AH=0Ah,MEM   0040h:0074h
  --------B-130C-------------------------------
  INT   13   -   HARD   DISK   -   SEEK   TO   CYLINDER
  AH   =   0Ch
  CH   =   low   eight   bits   of   cylinder   number
  CL   =   sector   number   (bits   5-0)
          high   two   bits   of   cylinder   number   (bits   7-6)
  DH   =   head   number
  DL   =   drive   number   (80h   =   first,   81h   =   second   hard   disk)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234)
  SeeAlso:   AH=00h,AH=02h,AH=0Ah,AH=47h
  --------B-130D-------------------------------
  INT   13   -   HARD   DISK   -   RESET   HARD   DISKS
  AH   =   0Dh
  DL   =   drive   number   (80h   =   first,   81h   =   second   hard   disk)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234)
  Notes: reinitializes   the   hard   disk   controller,   resets   the   specified   drive's
      parameters,   and   recalibrates   the   drive's   heads   (seek   to   track   0)
  for   PS/2   35SX,   35LS,   40SX   and   L40SX,   as   well   as   many   other   systems,
      both   the   master   drive   and   the   slave   drive   respond   to   the   Reset
      function   that   is   issued   to   either   drive
  not   for   PS/2   ESDI   drives
  SeeAlso:   AH=00h,INT   21/AH=0Dh
  --------B-130E-------------------------------
  INT   13   -   HARD   DISK   -   READ   SECTOR   BUFFER   (XT   only)
  AH   =   0Eh
  DL   =   drive   number   (80h   =   first,   81h   =   second   hard   disk)
  ES:BX   ->   buffer
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   code   (see   #00234)
  Notes: transfers   controller's   sector   buffer.     No   data   is   read   from   the   drive
  used   for   diagnostics   only   on   PS/2   systems
  SeeAlso:   AH=0Ah
  --------B-130F-------------------------------
  INT   13   -   HARD   DISK   -   WRITE   SECTOR   BUFFER   (XT   only)
  AH   =   0Fh
  DL   =   drive   number   (80h   =   first,   81h   =   second   hard   disk)
  ES:BX   ->   buffer
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   code   (see   #00234)
  Notes: does   not   write   data   to   the   drive
  should   be   called   before   formatting   to   initialize   an   XT-type
      controller's   sector   buffer
  used   for   diagnostics   only   on   PS/2   systems
  SeeAlso:   AH=0Bh
  --------B-1310-------------------------------
  INT   13   -   HARD   DISK   -   CHECK   IF   DRIVE   READY
  AH   =   10h
  DL   =   drive   number   (80h   =   first,   81h   =   second   hard   disk)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234   at   AH=01h)
  SeeAlso:   AH=11h
  --------B-1311-------------------------------
  INT   13   -   HARD   DISK   -   RECALIBRATE   DRIVE
  AH   =   11h
  DL   =   drive   number   (80h   =   first,   81h   =   second   hard   disk)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234   at   AH=01h)
  Note: causes   hard   disk   controller   to   seek   the   specified   drive   to   cylinder   0
  SeeAlso:   AH=00h,AH=0Ch,AH=10h,AH=19h"FIXED   DISK",MEM   0040h:003Eh
  --------B-1312-------------------------------
  INT   13   -   HARD   DISK   -   CONTROLLER   RAM   DIAGNOSTIC   (XT,PS)
  AH   =   12h
  DL   =   drive   number   (80h   =   first,   81h   =   second   hard   disk)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   code   (see   #00234   at   AH=01h)
  AL   =   00h
  SeeAlso:   AH=13h,AH=14h
  --------d-1312-------------------------------
  INT   13   -   Future   Domain   SCSI   CONTROLLER   -   STOP   SCSI   DISK
  AH   =   12h
  DL   =   hard   drive   ID
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   code   (see   #00234   at   AH=01h)
  Notes: available   at   least   on   the   TMC-870   8-bit   SCSI   controller   BIOS   v6.0A
  if   the   given   drive   is   a   SCSI   device,   the   SCSI   Stop   Unit   command   is   sent
      and   either   "Disk   prepared   for   shipping"   or   "Disk   Stop   command   failed"
      is   displayed
  the   TMC-950   does   not   support   any   Future   Domain   BIOS   calls;   instead,
      it   provides   a   full   CAM   implementation   (see   INT   4F/AX=8100h)
  --------d-1312-------------------------------
  INT   13   -   SyQuest   -   START/STOP   SCSI   DISK
  AH   =   12h
  AL   =   subfunction
          00h   start   disk
          01h   stop   disk
  CX   =   wait   flag
          00h   wait   for   ready
          01h   don't   wait   for   ready
  DL   =   hard   drive   ID   (bit   7   for   hard   disks   must   be   set)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status
          00h   successful
          01h   invalid   function   request
          80h   timeout
  SeeAlso:   AH=12h"Future   Domain",AH=13h"SyQuest"
  --------B-1313-------------------------------
  INT   13   -   HARD   DISK   -   DRIVE   DIAGNOSTIC   (XT,PS)
  AH   =   13h
  DL   =   drive   number   (80h   =   first,   81h   =   second   hard   disk)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   code   (see   #00234   at   AH=01h)
  AL   =   00h
  SeeAlso:   AH=12h"HARD   DISK",AH=14h"HARD   DISK"
  --------d-1313-------------------------------
  INT   13   -   SyQuest   -   READ   DRIVE   PARAMATERS   (for   DOS   5+)
  AH   =   13h
  DL   =   drive   ID   (bit   7   set   for   hard   disks)
  Return:   CF   set   on   error
          AH   =   status   (07h)   (see   #00234   at   AH=01h)
  CF   clear   if   successful
          AH   =   00h
          BL   =   drive   type   (AT/PS2   floppies   only)   (see   #00242)
          CH   =   low   eight   bits   of   maximum   cylinder   number
          CL   =   maximum   sector   number   (bits   5-0)
    high   two   bits   of   maximum   cylinder   number   (bits   7-6)
          DH   =   maximum   head   number
          DL   =   number   of   drives
          ES:DI   ->   drive   parameter   table   (floppies   only)
  Notes: the   return   values   are   identical   to   the   standard   INT   13/AH=08h,   but   the
      number   of   drives   is   not   limited   to   2,   so
  scanning   all   possible   drive   numbers   with   the   Read   DASD   Type   call
      (AH=15h)   should   generally   be   preferred   to   determine   the   number   of
      drives   attached   to   the   system.
  SeeAlso:   AH=08h"PC",AH=12h"SyQuest",AH=15h,AH=59h"SyQuest"
  --------B-1314-------------------------------
  INT   13   -   HARD   DISK   -   CONTROLLER   INTERNAL   DIAGNOSTIC
  AH   =   14h
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   code   (see   #00234   at   AH=01h)
  AL   =   00h
  SeeAlso:   AH=12h,AH=13h
  --------B-1315-------------------------------
  INT   13   -   DISK   -   GET   DISK   TYPE   (XT   1/10/86   or   later,XT286,AT,PS)
  AH   =   15h
  DL   =   drive   number   (bit   7   set   for   hard   disk)
  Return:   CF   clear   if   successful
          AH   =   type   code
  00h   no   such   drive
  01h   floppy   without   change-line   support
  02h   floppy   (or   other   removable   drive)   with   change-line   support
  03h   hard   disk
          CX:DX   =   number   of   512-byte   sectors
  CF   set   on   error
          AH   =   status   (see   #00234   at   AH=01h)
  Note: SyQuest   can   report   type   01h   or   02h   for   'hard   disks',   since   its   media
      is   removable
  BUGS: many   versions   of   the   Award   486   BIOS   do   not   return   the   sector   count
      because   the   BIOS   exit   code   restores   CX   and   DX   to   their   original
      values   after   the   function   had   already   set   them   to   correct   values
  several   different   Compaq   BIOSes   incorrectly   report   high-numbered
      drives   (such   as   90h,   B0h,   D0h,   and   F0h)   as   present,   giving   them   the
      same   geometry   as   drive   80h;   as   a   workaround,   scan   through   disk
      numbers,   stopping   as   soon   as   the   number   of   valid   drives   encountered
      equals   the   value   in   0040h:0075h
  SeeAlso:   AH=08h,AH=16h,AH=17h,AH=19h"SCSI",MEM   0040h:0075h
  --------B-1316-------------------------------
  INT   13   -   FLOPPY   DISK   -   DETECT   DISK   CHANGE   (XT   1/10/86   or   later,XT286,AT,PS)
  AH   =   16h
  DL   =   drive   number   (00h-7Fh)
  Return:   CF   clear   if   change   line   inactive
          AH   =   00h   (disk   not   changed)
  CF   set   if   change   line   active
          AH   =   status
  01h   invalid   command   (SyQuest)
  06h   change   line   active   or   not   supported
  80h   drive   not   ready   or   not   present
  Notes: call   AH=15h   first   to   determine   whether   the   drive   supports   a   change
      line
  this   call   also   clears   the   media-change   status,   so   that   a   disk   change
      is   only   reported   once
  BUG: some   versions   of   Award   386   Modular   BIOS   and   AMI   BIOS   fail   to   clear
      the   media-change   status
  SeeAlso:   AH=15h,AH=49h
  --------B-1317-------------------------------
  INT   13   -   FLOPPY   DISK   -   SET   DISK   TYPE   FOR   FORMAT   (AT,PS)
  AH   =   17h
  AL   =   format   type
          01h   =   320/360K   disk   in   360K   drive
          02h   =   320/360K   disk   in   1.2M   drive
          03h   =   1.2M   disk   in   1.2M   drive
          04h   =   720K   disk   in   720K   or   1.44M   drive
  DL   =   drive   number
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234   at   AH=01h)
  Note: this   function   does   not   handle   1.44M   drives;   use   AH=18h   instead
  SeeAlso:   AH=15h,AH=18h
  --------d-131700-----------------------------
  INT   13   -   Future   Domain   SCSI   CONTROLLER   -   GET   INQUIRY   INFO   FROM   SCSI   DEVICE
  AX   =   1700h
  CL   =   length   of   buffer
  DL   =   hard   drive   ID
  ES:BX   ->   buffer   for   info   (see   #00243)
  Return:   CF   clear   if   successful
          CH   =   number   of   bytes   returned   in   buffer???
  CF   set   on   error
          AH   =   status   code   (see   #00234   at   AH=01h)
  Notes: this   function   is   not   available   with   8-bit   controller   ROM   versions   <   7.0
  information   block   bytes   5-n   are   vendor-specific   in   older   SCSI   devices
  the   TMC-950   does   not   support   any   Future   Domain   BIOS   calls;   instead,
      it   provides   a   full   CAM   implementation   (see   INT   4F/AX=8100h)
  SeeAlso:   AH=18h"SCSI",AH=1Bh"SCSI"

  Format   of   Future   Domain   SCSI   inquiry   information   block:
  Offset Size Description (Table   00243)
    00h BYTE device   type
  bits   0-4:   peripheral   device   type   (see   #00244)
  bits   5-7:   peripheral   qualifier   (see   #00245)
    01h BYTE device   type   modifier
  bits   0-6:   device   type   modifier
  bit   7:   removable   medium
    02h BYTE SCSI   version   (see   #00246)
    03h BYTE data   format/capabilities   (see   #00247)
    04h BYTE additional   data   length   (total   remaining   bytes)
    05h     2   BYTEs reserved
    07h BYTE device   capabilities   (see   #00248)
    08h     8   BYTEs vendor   identification   (space-padded   ASCII)
    10h     8   BYTEs product   identification   (space-padded   ASCII)
    20h     4   BYTEs product   revision   level   (space-padded   ASCII)
    24h   20   BYTEs vendor   specific
    38h   40   BYTEs reserved
    60h var vendor   specific   parameters

  (Table   00244)
  Values   for   Future   Domain   SCSI   peripheral   device   type:
    00h direct-access   device   (e.g.,   magnetic   disk)
    01h sequential-access   device   (e.g.,   magnetic   tape)
    02h printer   device
    03h processor   device
    04h write-once   device   (e.g.,   some   optical   disks)
    05h CD-ROM   device
    06h scanner   device
    07h optical   memory   device   (e.g.,   some   optical   disks)
    08h medium   changer   device   (e.g.,   jukeboxes)
    09h communications   device
    0Ah (defined   by   ASC   IT8)
    0Bh (defined   by   ASC   IT8)
    0Ch-1Eh   reserved
    1Fh unknown   or   no   device   type

  (Table   00245)
  Values   for   Future   Domain   SCSI   peripheral   qualifier:
    000b device   is   currently   connected   to   this   logical   unit   and   available
    001b target   is   capable   of   supporting   the   specified   peripheral,   but   the
      physical   device   is   not   currently   connected   to   this   logical   unit
    010b reserved
    011b target   can't   support   a   physical   device   on   this   logical   unit
    1xxb vendor   specific

  Bitfields   for   Future   Domain   SCSI   version:
  Bit(s) Description (Table   00246)
    0-2 ANSI-approved   version
  000   device   might   or   might   not   comply   to   ANSI   standard
  001   device   complies   to   ANSI   SCSI-1
  010   device   complies   to   ANSI   SCSI-2
  other   reserved
    3-5 ECMA   version
    6-7 ISO   version

  Bitfields   for   Future   Domain   SCSI   data   format/capabilities:
  Bit(s) Description (Table   00247)
    0-2 response   data   format
  000   information   block   is   as   specified   in   SCSI-1
  001   information   block   is   as   specified   in   CCS
  010   information   block   is   as   specified   in   SCSI-2
  other   reserved
    4-5 reserved
    6 terminate   I/O   process   supported
    7 asynchronous   event   notification   supported

  Bitfields   for   Future   Domain   SCSI   device   capabilities:
  Bit(s) Description (Table   00248)
    0 device   responds   to   RESET   with   a   hard   RESET
    1 tagged   command   queuing   supported
    2 reserved
    3 linked   commands   supported
    4 synchronous   data   transfer   supported
    5 16-transfers   supported
    6 32-transfers   supported
    7 relative   addressing   supported
  --------B-1318-------------------------------
  INT   13   -   DISK   -   SET   MEDIA   TYPE   FOR   FORMAT   (AT   model   3x9,XT2,XT286,PS)
  AH   =   18h
  DL   =   drive   number
  CH   =   lower   8   bits   of   highest   cylinder   number   (number   of   cylinders   -   1)
  CL   =   sectors   per   track   (bits   0-5)
            top   2   bits   of   highest   cylinder   number   (bits   6,7)
  Return:   AH   =   status
          00h   requested   combination   supported
          01h   function   not   available
          0Ch   not   supported   or   drive   type   unknown
          80h   there   is   no   disk   in   the   drive
  ES:DI   ->   11-byte   parameter   table   (see   #01264   at   INT   1E)
  Note: this   function   does   not   set   the   INT   1E   vector   to   point   at   the   returned
      parameter   table;   it   is   the   caller's   responsibility   to   do   so
  SeeAlso:   AH=05h,AH=07h,AH=17h,INT   1E
  --------d-1318-------------------------------
  INT   13   -   Future   Domain   SCSI   BIOS   -   GET   SCSI   CONTROLLER   INFORMATION
  AH   =   18h
  DL   =   hard   drive   ID
  Return:   CF   set   on   error
          AH   =   status   code   (see   #00234   at   AH=01h)
  CF   clear   if   successful
          AX   =   4321h   (magic   number)
          CX   =   controller   family   code   (see   #00249)
          ---if   family   code=0200h
  DH   =   number   of   exclusively   ROM-controlled   SCSI   devices
  DL   =   canonical   SCSI   device   number   for   specified   drive
          ---if   family   code   <>   0200h
  BH   =   number   of   exclusively   ROM-controlled   SCSI   devices
  BL   =   canonical   SCSI   device   number   for   specified   drive
  Notes: also   sets   an   internal   flag   (non-resettable)   which   prevents   some
      controller   messages   from   being   displayed,   allows   writes   to
      removable   devices   (use   caution!),   and   enables   the   INT   13   interface
      for   more   than   one   drive   (i.e.   DL   >=   81h)   in   at   least   some   ROM
      versions
  the   TMC-950   does   not   support   any   Future   Domain   BIOS   calls;   instead,
      it   provides   a   full   CAM   implementation   (see   INT   4F/AX=8100h)
  SeeAlso:   AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT   4F/AX=8100h

  (Table   00249)
  Values   for   Future   Domain   SCSI   controller   family   code:
    0200h TMC-1680/?   (ROM   3.0)
    0203h TMC-1650/1660/1670/1680   (ROM   2.0)
    040Ah TMC-820/830/840/850/860/870/875/880/885   (ROM   <=   6.0A)
    050Dh TMC-840/841/880/881   (ROM   5.2D)
    0700h TMC-830/850/860/875/885   (ROM   7.0)
  --------d-1318--CX5055-----------------------
  INT   13   -   PU_1700.COM   -   INSTALLATION   CHECK
  AH   =   18h
  CX   =   5055h   ('PU')
  DL   =   00h
  Return:   AX   =   7570h   ('up')   if   PU_1700   is   installed
  Program:   PU_1700   is   a   BIOS   enhancer   from   PU   Service   Systems   which   permits
      formatting   diskettes   at   higher   capacity   (1.78M   instead   of   1.44M)
  SeeAlso:   AX=057Fh/SI=324Dh"2M"
  --------d-1318--CXD2C9-----------------------
  INT   13   -   XDF.COM   -   API
  AH   =   18h
  CX   =   D2C9h   ("R"+80h,   "I"+80h   =   Roger   Ivey)
  DX   =   0000h
  BX   =   function
          0000h   installation   check
      Return:   AH   =   0Ch
      CX   =   7269h   ("ri"   =   Roger   Ivey)
      ES   =   segment   of   driver
      CF   set
          2F64h   ("/d")   disable   the   driver
      Return:   AH   =   0Ch
      ES:BX   =   pointer   to   activation   flag   (it   is   set   to   0:
      set   it   to   1   to   enable   the   driver   again)
      CX   =   7269h
      CF   set
          2F75h   ("/u")   unload   the   driver   (restore   interrupts   &   free   memory)
      Return:   AH   =   0Ch
      DL   =   55h   ("U")   if   successful
            =   00h       if   fails
      CX   =   7269h
      ES   =   segment   of   driver
      CF   set
      AL,   BX,   DH,   and   DI   destroyed
  Program:   XDF   is   a   TSR   provided   with   PC-DOS   7.0   to   support   XDF   1.84M   disks,
      developed   by   Roger   D.   Ivey
  Note: After   disabling   or   enabling   the   driver,   a   disk   change   must   be   performed
      or   simulated   to   reset   the   driver.
  --------B-1319-------------------------------
  INT   13   -   FIXED   DISK   -   PARK   HEADS   ON   ESDI   DRIVE   (XT286,PS)
  AH   =   19h
  DL   =   drive
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234   at   AH=01h)
  SeeAlso:   AH=11h
  --------d-1319-------------------------------
  INT   13   -   Future   Domain   SCSI   CONTROLLER   -   REINITIALIZE   DRIVE
  AH   =   19h
  DL   =   hard   drive   ID
  Return:   CF   set   on   error
          AH   =   status   code   (see   #00234   at   AH=01h)
  CF   clear   if   successful
          AH   =   disk   type   (03h   =   fixed   disk)
          CX:DX   =   number   of   512-byte   sectors
  Notes: sends   SCSI   Read   Capacity   command   to   get   number   of   logical   blocks   and
      adjusts   the   result   for   512-byte   sectors
  displays   either   "Error   in   Read   Capacity   Command"   or   "nnn   Bytes   per
      sector"   (nnn=256   or   512,   the   only   sizes   supported   in   the   translation
      code)
  should   probably   be   called   when   a   removable   device   has   its   media   changed
  returns   the   same   values   as   AH=15h
  the   TMC-950   does   not   support   any   Future   Domain   BIOS   calls;   instead,
      it   provides   a   full   CAM   implementation   (see   INT   4F/AX=8100h)
  SeeAlso:   AH=15h,AH=1Ah,INT   4F/AX=8100h
  --------d-131A-------------------------------
  INT   13   -   ESDI   FIXED   DISK   -   FORMAT   UNIT   (PS)
  AH   =   1Ah
  AL   =   defect   table   entry   count
  CL   =   format   modifiers   (see   #00250)
  DL   =   drive   (80h,81h)
  ES:BX   ->   defect   table   (see   #00251),   ignored   if   AL=00h
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234   at   AH=01h)
  Note: if   periodic   interrupt   selected,   INT   15/AH=0Fh   is   called   after   each
      cylinder   is   formatted
  SeeAlso:   AH=07h,INT   15/AH=0Fh

  Bitfields   for   ESDI   format   modifiers:
  Bit(s) Description (Table   00250)
    4 generate   periodic   interrupt
    3 perform   surface   analysis
    2 update   secondary   defect   map
    1 ignore   secondary   defect   map
    0 ignore   primary   defect   map

  Format   of   defect   table   entry   [array]:
  Offset Size Description (Table   00251)
    00h     3   BYTEs relative   sector   address   (little-endian)
    03h BYTE flags   and   defect   count
  bit   7:   last   logical   sector   on   track
  bit   6:   first   logical   sector   on   track
  bit   5:   last   logical   sector   on   cylinder
  bit   4:   logical   sectors   are   pushed   onto   next   track
  bits   3-0:   number   of   defects   pushed   from   previous   cylinder
  --------d-131A-------------------------------
  INT   13   -   Future   Domain   SCSI   CONTROLLER   -   GET   SCSI   PARTIAL   MEDIUM   CAPACITY
  AH   =   1Ah
  CH   =   track   (bits   8,9   in   high   bits   of   CL)
  CL   =   sector   (01h   to   number   of   sectors/track   for   drive)
  DH   =   head
  DL   =   hard   drive   ID
  Return:   CF   set   on   error
  AH   =   status   code   (see   #00234   at   AH=01h)
  CX:DX   =   logical   block   number   of   last   quickly-accessible   block   after
  given   block
  Notes: sends   SCSI   Read   Capacity   command   with   the   PMI   bit   set   to   obtain   the
      logical   block   address   of   the   last   block   after   which   a   substantial
      delay   in   data   transfer   will   be   encountered   (usually   the   last   block
      on   the   current   cylinder).     No   translation   to   512   byte   sectors   is
      performed   on   the   result   if   data   is   stored   on   the   disk   in   other   than
      512   byte   sectors.
  the   TMC-950   does   not   support   any   Future   Domain   BIOS   calls;   instead,
      it   provides   a   full   CAM   implementation   (see   INT   4F/AX=8100h)
  SeeAlso:   AH=15h,AH=19h"SCSI"
  --------d-131B-------------------------------
  INT   13   -   ESDI   FIXED   DISK   -   GET   MANUFACTURING   HEADER
  AH   =   1Bh
  AL   =   number   of   sectors   to   read
  DL   =   drive
  ES:BX   ->   buffer   for   manufacturing   header   (defect   list)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status
  Note: manufacturing   header   format   (Defect   Map   Record   format)   can   be   found
      in   IBM   70MB,   115MB   Fixed   Disk   Drives   Technical   Reference
  the   first   sector   read   contains   the   manufacturing   header   with   the   number
      of   defect   entries   and   the   beginning   of   the   defect   map;   the   remaining
      sectors   contain   the   remainder   of   the   defect   map
  --------d-131B-------------------------------
  INT   13   -   Future   Domain   SCSI   CONTROLLER   -   GET   POINTER   TO   SCSI   DISK   INFO   BLOCK
  AH   =   1Bh
  DL   =   hard   drive   ID
  Return:   CF   set   on   error
          AH   =   status   code   (see   #00234   at   AH=01h)
  CF   clear   if   successful
          ES:BX   ->   SCSI   disk   information   block   (see   #00252)
  Notes: also   sets   a   non-resettable   flag   which   prevents   some   controller   messages
      from   being   displayed
  the   TMC-950   does   not   support   any   Future   Domain   BIOS   calls;   instead,
      it   provides   a   full   CAM   implementation   (see   INT   4F/AX=8100h)
  SeeAlso:   AH=18h"SCSI",AH=1Ch"SCSI"

  Format   of   Future   Domain   SCSI   disk   information   block:
  Offset Size Description (Table   00252)
    00h BYTE drive   physical   information   (see   #00253)
    01h WORD translated   number   of   cylinders
    03h BYTE translated   number   of   heads
    04h BYTE translated   number   of   sectors   per   track   (17,   34,   or   63)
    05h BYTE drive   address
  bits   0-2:   logical   unit   number
  bits   3-5:   device   number
    06h BYTE 01h   at   initialization
    07h BYTE sense   code   byte   00h,   or   extended   sense   code   byte   0Ch
    08h BYTE 00h
    09h BYTE 00h   or   extended   sense   code   byte   02h   (sense   key)
    0Ah BYTE 00h
    0Bh   10   BYTEs copy   of   Command   Descriptor   Block   (CDB)   (see   #03236,#03237)
    15h DWORD translated   number   of   sectors   on   device

  Bitfields   for   Future   Domain   SCSI   device   physical   information:
  Bit(s) Description (Table   00253)
    0 ???
    1 device   uses   parity
    2 256   bytes   per   sector   instead   of   512
    3 don't   have   capacity   yet???
    4 disk   is   removable
    5 logical   unit   number   is   not   present
  --------d-131C-------------------------------
  INT   13   -   Future   Domain   SCSI   CONTROLLER   -   GET   POINTER   TO   FREE   CONTROLLER   RAM
  AH   =   1Ch
  DL   =   hard   drive   ID   (any   valid   SCSI   hard   disk)
  Return:   CF   set   on   error
          AH   =   status   code   (see   #00234   at   AH=01h)
  CF   clear   if   successful
          ES:BX   ->   first   byte   of   free   RAM   on   controller
  Notes: the   Future   Domain   TMC-870   contains   1024   bytes   of   RAM   at   offsets   1800h
      to   1BFFh   on-board   the   controller   for   storing   drive   information   and
      controller   status;   ES:BX   points   to   the   first   byte   available   for   other
      uses
  ES   contains   the   segment   at   which   the   controller   resides;   the
      controller's   two   memory-mapped   I/O   ports   are   at   offsets   1C00h,   1E00h
  SeeAlso:   AH=1Bh"SCSI"
  --------d-131C-------------------------------
  INT   13   U   -   ESDI   FIXED   DISK   -   ???
  AH   =   1Ch
  AL   =   subfunction   (01h-06h)
  DL   =   drive   (80h,81h)
  ???
  Return:   ???
  Note: these   functions   perform   a   controller   command   0612h   without   DMA
  SeeAlso:   AX=1C08h,PORT   3510h"ESDI"
  --------d-131C08-----------------------------
  INT   13   U   -   ESDI   FIXED   DISK   -   GET   COMMAND   COMPLETION   STATUS
  AX   =   1C08h
  DL   =   drive   (80h,81h)
  ES:BX   ->   buffer   for   Command   Complete   Status   Block   (see   #00254)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234   at   AH=01h)
  SeeAlso:   AX=1C09h,AX=1C0Ah,PORT   3510h"ESDI"

  Format   of   ESDI   Command   Complete   Status   Block:
  Offset Size Description (Table   00254)
    00h BYTE 07h
    01h BYTE size   of   block   in   words   (07h)
    02h BYTE command   error   code   (see   #00255)
    03h BYTE command   status   code   (see   #00256)
    04h BYTE device   error   code,   group   1   (see   #00257)
    05h BYTE device   error   flags,   group   2   (see   #00258)
    06h WORD number   of   unprocessed   sectors   due   to   abnormal   termination
    08h DWORD last   Relative   Sector   Address   processed   by   command
    0Ch WORD number   of   sectors   corrected   by   ECC   codes

  (Table   00255)
  Values   for   ESDI   command   error   code:
    00h successful
    01h parameter   invalid
    02h unknown   function
    03h unsupported   command
    04h command   cancelled
    05h unknown   function
    06h controller   diagnostics   failed
    07h formatting   failed
    08h format   error   in   primary   map
    09h format   error   in   secondary   map
    0Ah diagnostic   failure   during   formatting
    0Bh warning:   secondary   map   too   large   during   formatting
    0Ch warning:   non-zero   defect
    0Dh system   checksum   error   during   formatting
    0Eh warning:   incompatible   device
    0Fh warning:   push   table   overflowed
    10h warning:   more   than   15   sectors   pushed   to   next   cylinder
    11h internal   hardware   error
    12h warning:   errors   found   while   verifying   sectors
    13h invalid   device
    FFh device   error

  (Table   00256)
  Values   for   ESDI   command   status   code:
    01h successful
    03h successful   after   ECC
    05h successful   after   retries
    06h format   partially   completed
    07h successful   after   ECC   and   retries
    08h command   completed   with   warning   (see   #00255)
    09h abort   complete
    0Ah reset   complete
    0Bh data   transfer   ready   (no   status   block)
    0Ch command   completed   with   failure   (see   #00257,#00258)
    0Dh DMA   error
    0Eh command   block   error   (see   #00255)
    0Fh bad   attention   code
  SeeAlso:   #00257

  (Table   00257)
  Values   for   ESDI   device   error   code,   group   1:
    00h successful
    01h seek   fault   detected   by   device
    02h interface   fault
    03h sector   ID   not   found
    04h disk   not   formatted
    05h unrecoverable   ECC   error
    06h ECC   error   in   sector   ID
    07h invalid   relative   sector   address
    08h timeout
    09h sector   defective
    0Ah disk   changed   (removable   media)
    0Bh selection   error
    0Ch write   protected   (removable   media)
    0Dh write   fault
    0Eh read   fault
    0Fh no   index   or   sector   pulse
    10h device   not   ready
    11h seek   error   detected   by   adapter
    12h bad   format
    13h volume   overflow
    14h data   address   mark   not   found
    15h sector   ID   not   found
    16h missing   device   configuration   data
    17h first/last   relative   sector   flags   missing
    18h track   empty
    81h timeout   while   waiting   for   stop
    82h timeout   while   waiting   for   end   of   data   transfer
    84h stopped   awaiting   data   transfer   during   formatting
    85h timeout   while   waiting   for   head   switch
    86h timeout   while   awaiting   DMA   completion
  SeeAlso:   #00256,#00258

  Bitfields   for   ESDI   device   error   flags,   group   2:
  Bit(s) Description (Table   00258)
    7-5 unused
    4 ready
    3 selected
    2 write   fault
    1 on   track   0
    0 seek/command   complete
  SeeAlso:   #00257
  --------d-131C09-----------------------------
  INT   13   U   -   ESDI   FIXED   DISK   -   GET   DEVICE   STATUS
  AX   =   1C09h
  DL   =   drive   (80h,81h)
  ES:BX   ->   buffer   for   Device   Status   Block   (see   #00259)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234   at   AH=01h)
  SeeAlso:   AX=1C08h,AX=1C0Ah,PORT   3510h"ESDI"

  Format   of   ESDI   Device   Status   Block:
  Offset Size Description (Table   00259)
    00h BYTE 08h
    01h BYTE number   of   words   in   block   (09h)
    02h BYTE error   flags
    03h BYTE unused
    04h BYTE command   error   code   (see   #00255)
    05h BYTE command   status   code   (see   #00256)
    06h WORD ESDI   standard   status
    08h     5   WORDs ESDI   vendor-specific   status   codes
  --------d-131C0A-----------------------------
  INT   13   U   -   ESDI   FIXED   DISK   -   GET   DEVICE   CONFIGURATION
  AX   =   1C0Ah
  DL   =   drive   (80h,81h)
  ES:BX   ->   buffer   for   Drive   Configuration   Status   Block   (see   #00260)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234   at   AH=01h)
  Note: device   configuration   format   can   be   found   in   IBM   ESDI   Fixed   Disk   Drive
      Adapter/A   Technical   Reference
  SeeAlso:   AX=1C08h,AX=1C0Bh,AX=1C0Ch

  Format   of   ESDI   Drive   Configuration   Status   Block:
  Offset Size Description (Table   00260)
    00h BYTE 09h
    01h BYTE number   of   words   in   block   (06h)
    02h BYTE flags
    03h BYTE number   of   spare   sectors   per   cylinder
    04h DWORD total   number   of   usable   sectors
    08h WORD total   number   of   cylinders
    0Ah BYTE tracks   per   cylinder
    0Bh BYTE sectors   per   track
  --------d-131C0B-----------------------------
  INT   13   U   -   ESDI   FIXED   DISK   -   GET   ADAPTER   CONFIGURATION
  AX   =   1C0Bh
  ES:BX   ->   buffer   for   Controller   Configuration   Status   Block   (see   #00261)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234   at   AH=01h)
  SeeAlso:   AX=1C0Ch

  Format   of   ESDI   Controller   Configuration   Status   Block:
  Offset Size Description (Table   00261)
    00h BYTE E9h
    01h BYTE number   of   words   in   block   (06h)
    02h WORD unused   (0000h)
    04h DWORD controller   microcode   revision   level
    08h     2   WORDs unused   (0000h)
  --------d-131C0C-----------------------------
  INT   13   U   -   ESDI   FIXED   DISK   -   GET   POS   INFORMATION
  AX   =   1C0Ch
  ES:BX   ->   buffer   for   POS   Information   Status   Block   (see   #00262)
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234   at   AH=01h)
  SeeAlso:   AX=1C0Bh

  Format   of   ESDI   POS   Information   Status   Block:
  Offset Size Description (Table   00262)
    00h BYTE EAh
    01h BYTE number   of   words   in   block   (05h)
    02h WORD magic   value   FFDDh
    04h BYTE POS   register   3
    05h BYTE POS   register   2
    06h BYTE POS   register   5   (unused,   FFh)
    07h BYTE POS   register   4   (unused,   FFh)
    08h BYTE POS   register   7   (unused,   FFh)
    09h BYTE POS   register   6   (unused,   FFh)
  --------d-131C0D-----------------------------
  INT   13   U   -   ESDI   FIXED   DISK   -   ???
  AX   =   1C0Dh
  DL   =   drive   (80h,81h)
  ???
  Return:   ???
  Note: invokes   controller   command   0614h   without   DMA
  SeeAlso:   AH=1Ch"ESDI",AX=1C0Fh,PORT   3510h"ESDI"
  --------d-131C0E-----------------------------
  INT   13   U   -   ESDI   FIXED   DISK   -   TRANSLATE   RBA   TO   ABA
  AX   =   1C0Eh
  CH   =   low   8   bits   of   cylinder   number
  CL   =   sector   number,   high   two   bits   of   cylinder   number   in   bits   6   and   7
  DH   =   head   number
  DL   =   drive   number   (80h,81h)
  ES:BX   ->   ABA   number
  Return:   CF   set   on   error
  CF   clear   if   successful
  AH   =   status   (see   #00234   at   AH=01h)
  Note: ABA   (absolute   block   address)   format   can   be   found   in   IBM   ESDI   Adapter
      Technical   Reference   by   using   its   Device   Configuration   Status   Block
  SeeAlso:   AX=1C08h,AX=1C0Fh,PORT   3510h"ESDI"
  --------d-131C0F-----------------------------
  INT   13   U   -   ESDI   FIXED   DISK   -   ???
  AX   =   1C0Fh
  DL   =   drive   (80h,81h)
  ???
  Return:   ???
  Note: invokes   controller   command   0614h   without   DMA
  SeeAlso:   AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h,PORT   3510h"ESDI"
  --------d-131C12-----------------------------
  INT   13   U   -   ESDI   FIXED   DISK   -   ???
  AX   =   1C12h
  DL   =   drive   (80h,81h)
  ???
  Return:   ???
  Note: invokes   controller   command   0612h   without   DMA
  SeeAlso:   AH=1Ch"ESDI",AX=1C0Fh,PORT   3510h"ESDI"
  --------c-131D-------------------------------
  INT   13   -   IBMCACHE.SYS   -   CACHE   STATUS
  AH   =   1Dh
  AL   =   subfunction
          01h   get   status   record
  DL   =   drive???
  Return:   ES:BX   ->   status   record   (see   #00263)
  CF   set   on   error
          AH   =   error   code
          02h   set   cache   status
  ES:BX   ->   status   record   (see   #00263)
  DL   =   drive???
  Return:   CF   set   on   error

  Format   of   IBMCACHE.SYS   status   record:
  Offset Size Description (Table   00263)
    00h DWORD total   number   of   read   requests
    04h DWORD total   number   of   hits
    08h DWORD number   of   physical   disk   reads
    0Ch DWORD total   number   of   sectors   requested   by   physical   disk   reads
    10h     6   BYTEs ???
    16h DWORD pointer   to   start   of   error   list   (see   #00264)
    1Ah DWORD pointer   to   end   of   error   list
    1Eh WORD ???
    20h BYTE using   extended   memory   if   nonzero
    21h BYTE ???
    22h     4   BYTEs ASCII   version   number
    26h WORD cache   size   in   KB
    28h WORD sectors   per   page

  Format   of   IBMCACHE.SYS   error   list:
  Offset Size Description (Table   00264)
    00h DWORD relative   block   address   of   bad   page
    04h BYTE drive
    05h BYTE sector   bit-map
    06h WORD next   error
  --------d-131F-------------------------------
  INT   13   -   SyQuest   -   DOOR   LATCH/DOOR   BUTTON   DETECT
  AH   =   1Fh
  AL   =   subfunction
          00h   allow   media   removal
          01h   prevent   media   removal   (lock   door)
  DL   =   drive   ID   (bit   7   set   for   hard   disks)
  Return:   CF   clear   if   successful
          AH   =   00h
  CF   set   on   error
          AH   =   error   code
  00h   successful
  01h   invalid   function   request
  80h   timeout
  DDh   media   change   requested
  SeeAlso:   AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest"
  --------d-1320-------------------------------
  INT   13   -   DISK   -   ???   (Western   Digital   "Super   BIOS")
  AH   =   20h
  ???
  Return:   ???
  Notes: returns   some   kind   of   status   related   to   whether   the   drive   contains   its
      default   media   type
  QEMM   v6.00   calls   INT   13/AX=2000h/DL=81h   in   some   cases
  --------b-1320-------------------------------
  INT   13   U   -   Compaq,   ATAPI   Removable   Media   Device   -   GET   CURRENT   MEDIA   FORMAT
  AH   =   20h
  DL   =   drive   number   (00h,01h)
  Return:   CF   clear   if   successful
          AL   =   media   type   (see   #00265)
          AH   =   00h
  CF   set   on   error
          AH   =   error   code
  01h   invalid   request
  30h   drive   does   not   support   media   sense
  31h   no   such   drive   /   media   not   present
  32h   non-default   media   /   drive   does   not   supporte   media   type
  Notes: this   function   is   supported   by   the   3/8/93   ROM   BIOS,   but   only   partially
      (AL   is   always   00h   when   successful)   by   the   8/3/93   version
  this   function   is   also   supported   by   some   recent   versions   of   the   Phoenix
      486   BIOS

  (Table   00265)
  Values   for   Compaq/ATAPI   diskette   media   type:
    03h 720K     (1M   unformatted)
    04h 1.44M   (2M   unformatted)
    06h 2.88M   (4M   unformatted)
    0Ch 360K
    0Dh 1.2M
    0Eh Toshiba   3mode
    0Fh NEC   3mode   (1024-byte   sectors)
    10h ATAPI   Removable   Media   Device
  --------c-1320-------------------------------
  INT   13   u   -   QUICKCACHE   II   v4.20   -   DISMOUNT
  AH   =   20h
  AL   =   drive   (00h   =   A:,   etc.   or   7Fh   for   all   removable   drives???
        or   FFh   for   all   drives)
  Return:   AX   =   status   (0000h   successful)
  Program:   QUICKCACHE   II   is   a   shareware   disk   cache   by   P.R.   Glassel   and
      Associates,   Inc.
  Desc: flush   any   dirty   buffers   for   the   specified   drive(s)   and   then   discard
      those   sector   buffers
  SeeAlso:   AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28h
  --------d-1321-------------------------------
  INT   13   -   HARD   DISK   -   PS/1   and   newer   PS/2   -   READ   MULTIPLE   DISK   SECTORS
  AH   =   21h
  AL   =   number   of   sectors   to   write
  CH   =   low   byte   of   12-bit   cylinder   number
  CL   =   starting   sector   (bits   0-5)   and   bits   8-9   of   cylinder   (bits   6-7)
  DH   =   head   number   (bits   0-5)   and   bits   10-11   of   cylinder   (bits   6-7)
  DL   =   drive   number   (80h,81h)
  ES:BX   ->   buffer   for   data   to   be   read
  Return:   CF   clear   if   successful
          ES:BX   buffer   filled
  CF   set   on   error
  AH   =   status   (see   #00234   at   AH=01h)
  Desc: read   from   the   disk   using   the   Multiple   Block   mode   available   on   newer
      IDE   drives   and   some   hard   disk   controllers,   which   generates   an
      interrupt   only   after   the   end   of   transferring   a   group   of   sectors
      rather   than   after   each   sector
  Notes: must   call   AH=24h"PS/1"   before   using   this   function
  input   values   in   CL   and   DH   are   not   range-checked
  the   byte   at   address   0040h:0074h   is   set   to   the   status   of   the   operation
  SeeAlso:   AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  --------c-1321-------------------------------
  INT   13   u   -   QUICKCACHE   II   v4.20   -   FLUSH   CACHE
  AH   =   21h
  Return:   AX   =   status   (0000h   successful)
  Desc: immediately   write   all   dirty   sectors   back   to   disk
  SeeAlso:   AH=25h"QUICKCACHE",AH=2Eh,AH=2Fh
  --------d-1322-------------------------------
  INT   13   -   HARD   DISK   -   PS/1   and   newer   PS/2   -   WRITE   MULTIPLE   DISK   SECTORS
  AH   =   22h
  AL   =   number   of   sectors   to   write
  CH   =   low   byte   of   12-bit   cylinder   number
  CL   =   starting   sector   (bits   0-5)   and   bits   8-9   of   cylinder   (bits   6-7)
  DH   =   head   number   (bits   0-5)   and   bits   10-11   of   cylinder   (bits   6-7)
  DL   =   drive   number   (80h,81h)
  ES:BX   ->   buffer   containing   data   to   be   written
  Return:   CF   clear   if   successful
  CF   set   on   error
  AH   =   status   (see   #00234   at   AH=01h)
  Desc: write   to   the   disk   using   the   Multiple   Block   mode   available   on   newer
      IDE   drives   and   some   hard   disk   controllers,   which   generates   an
      interrupt   only   after   the   end   of   transferring   a   group   of   sectors
      rather   than   after   each   sector
  Notes: must   call   AH=24h"PS/1"   before   using   this   function
  input   values   in   CL   and   DH   are   not   range-checked
  the   byte   at   address   0040h:0074h   is   set   to   the   status   of   the   operation
  SeeAlso:   AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  --------c-1322-------------------------------
  

Link: http://www.asm32.net/article_details.aspx?id=3198