Int 13/AH=03h

lup.gif ldown.gif Interrups Categories Contents

rbline.gif

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

See Also: AH=02h - AH=0Bh - AH=07h"V10DISK.SYS" - AH=22h"PS/1" -

See Also: INT 21/AX=440Dh"DOS 3.2+" - INT 4D/AH=03h

Category: Bios - Int 13h - D

rbline.gif

lup.gif ldown.gif Interrups Categories Contents