搜尋此網誌

2012年9月25日 星期二

Int13h AH=04h(磁碟 - 驗證磁碟磁區) -- BIOS Int13h

DISK - VERIFY DISK SECTOR(S)


Input:
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)

Return: 
CF set on error
CF clear if successful
AH = status  (see Values for disk operation status)
AL = number of sectors verified

Notes:
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
BUG:
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.

沒有留言:

張貼留言