Note: This IBM PC BIOS API call is for DOS/Win16 personality only. Use Family API for portability.

Note: osFree Macro Library provides macros for most of functions

2022/03/13 07:41 · prokushev

Int 13H, AH=04H


IBM 5150 and higher


Verify sector

Family API



  • 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 1985/11/15)


  • CF set on error
  • CF clear if successful
  • AH = status (see #00234)
  • AL = number of sectors verified


@DskVerify  0, 0, 0, 1, 1, offset buf


  • errors on a floppy may be due to the motor failing to spin up quickly enough (timeout error 80h); the write should be retried at least three times, resetting the disk with AH=00h between attempts
  • on floppys, the operation should also be retried on media change (06h) detection.
  • 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
  • some Epson ROM BIOSes sometimes have problems properly handling this function. The workaround is to reset the disk (INT 13/AH=00h) before the call.


en/docs/bios/api/int13/04.txt · Last modified: 2022/03/27 14:23 by prokushev