HelpPC 2.10 Quick Reference Utility Copyright 1991 David Jurgens

                         INT 25 - Absolute Disk Read

       AL = logical drive number (0=A:, 1=B:, 2=C:, ...)
       CX = number of sectors to read
          = -1 if DOS 4.x (control block pointer is in DS:BX)
       DX = starting logical sector number (see below for DOS 4.x+)
       DS:BX = pointer to data buffer
             = pointer to control block (DOS 4.x+, see below)

       on return:
       AH = error code if CF set:
            01  bad command
            02  bad address mark
            03  write protect
            04  sector not found
            08  DMA failure
            10  data error (bad CRC)
            20  controller failed
            40  seek failed
            80  attachment failed to respond
       AL = BIOS error code if CF set
            00  write protect error
            01  unknown unit
            02  drive not ready
            03  unknown command
            04  data error (bad CRC)
            05  bad request structure length
            06  seek error
            07  unknown media type
            08  sector not found
            0A  write fault
            0B  read fault
            0C  general failure

                       Control Block Format (DOS 4.x):

       Offset Size        Description

         00   dword  starting sector
         04   word   number of sectors to read
         06   dword  pointer to buffer


       - reads disk sectors into buffer at DS:BX or DS:[BX+6]
       - after calling this interrupt the flags register remains on the
         stack and must be popped manually
       - sectors are logical sectors starting at the beginning of a
         logical disk; each DOS partition on a drive unit is considered
         one logical drive and has it's own logical sector numbers with
         track 0 starting at the first track in the partition
       - this function uses logical drives, and is susceptible to ASSIGN
       - physical sector numbers can be converted to and from DOS sector
         numbers with the following formulas:

         dos_sector = (sector - 1) + (head * sectors_per_track) +
                      (track * sectors_per_track * num_heads)

         physical_sector = 1 + (dos_sector  MOD  sectors_per_track)
         physical_head = (dos_sector / sectors_per_track)  MOD  num_heads
         physical_track = dos_sector / (sectors_per_track * num_heads)

       - see   INT 13,STATUS

Esc or Alt-X to exit int 25 Home/PgUp/PgDn/End ←↑↓→
Converted to HTML in 2006 by Timo Bingmann