Changeset 148 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH4h_HVerify.asm
- Timestamp:
- Mar 19, 2011, 8:09:41 PM (13 years ago)
- google:author:
- aitotat
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH4h_HVerify.asm
r84 r148 1 ; File name : AH4h_HVerify.asm 2 ; Project name : IDE BIOS 3 ; Created date : 13.10.2007 4 ; Last update : 14.1.2011 5 ; Author : Tomi Tilli, 6 ; : Krister Nordvall (optimizations) 1 ; Project name : XTIDE Universal BIOS 7 2 ; Description : Int 13h function AH=4h, Verify Disk Sectors. 8 3 … … 15 10 ; AH4h_HandlerForVerifyDiskSectors 16 11 ; Parameters: 17 ; AH: Bios function 4h 12 ; AL, CX, DH: Same as in INTPACK 13 ; DL: Translated Drive number 14 ; DS:DI: Ptr to DPT (in RAMVARS segment) 15 ; SS:BP: Ptr to INTPACK 16 ; Parameters on INTPACK in SS:BP: 18 17 ; AL: Number of sectors to verify 19 18 ; CH: Cylinder number, bits 7...0 … … 21 20 ; Bits 5...0: Starting sector number (1...63) 22 21 ; DH: Starting head number (0...255) 23 ; DL: Drive number 24 ; ES:BX: Pointer to source data (not used) 25 ; Parameters loaded by Int13h_Jump: 26 ; DS: RAMVARS segment 27 ; Returns: 22 ; Returns with INTPACK in SS:BP: 28 23 ; AH: Int 13h/40h floppy return status 29 24 ; CF: 0 if successfull, 1 if error 30 ; IF: 131 ; Corrupts registers:32 ; Flags33 25 ;-------------------------------------------------------------------- 34 26 ALIGN JUMP_ALIGN … … 36 28 test al, al ; Invalid sector count? 37 29 jz SHORT AH2h_ZeroCntErr ; If so, return with error 38 push dx39 push cx40 push bx41 push ax42 %ifndef USE_18643 call AH4h_VerifySectors44 jmp Int13h_PopXRegsAndReturn45 %else46 push Int13h_PopXRegsAndReturn47 ; Fall through to AH4h_VerifySectors48 %endif49 30 50 51 ;--------------------------------------------------------------------52 ; Verifies hard disk sectors.53 ;54 ; AH4h_VerifySectors55 ; Parameters:56 ; AL: Number of sectors to verify57 ; CH: Cylinder number, bits 7...058 ; CL: Bits 7...6: Cylinder number bits 9 and 859 ; Bits 5...0: Starting sector number (1...63)60 ; DH: Starting head number (0...255)61 ; DL: Drive number62 ; DS: RAMVARS segment63 ; Returns:64 ; DS:DI: Ptr to DPT65 ; AH: Int 13h/40h floppy return status66 ; CF: 0 if successfull, 1 if error67 ; Corrupts registers:68 ; AL, BX, CX, DX69 ;--------------------------------------------------------------------70 ALIGN JUMP_ALIGN71 AH4h_VerifySectors:72 call FindDPT_ForDriveNumber ; DS:DI now points to DPT73 31 mov ah, HCMD_VERIFY_SECT ; Load command to AH 74 32 call HCommand_OutputCountAndLCHSandCommand 75 jc SHORT .Return ; Return if error33 jc SHORT .ReturnWithErrorCodeInAH 76 34 mov bx, di ; DS:BX now points to DPT 77 jmpHStatus_WaitIrqOrRdy ; Wait for IRQ or RDY78 .Return :79 ret35 call HStatus_WaitIrqOrRdy ; Wait for IRQ or RDY 36 .ReturnWithErrorCodeInAH: 37 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
Note: See TracChangeset
for help on using the changeset viewer.