source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH4h_HVerify.asm @ 84

Last change on this file since 84 was 84, checked in by krille_n_@…, 13 years ago

Minor size optimizations in various files.

File size: 2.3 KB
Line 
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)
7; Description   :   Int 13h function AH=4h, Verify Disk Sectors.
8
9; Section containing code
10SECTION .text
11
12;--------------------------------------------------------------------
13; Int 13h function AH=4h, Verify Disk Sectors.
14;
15; AH4h_HandlerForVerifyDiskSectors
16;   Parameters:
17;       AH:     Bios function 4h
18;       AL:     Number of sectors to verify
19;       CH:     Cylinder number, bits 7...0
20;       CL:     Bits 7...6: Cylinder number bits 9 and 8
21;               Bits 5...0: Starting sector number (1...63)
22;       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:
28;       AH:     Int 13h/40h floppy return status
29;       CF:     0 if successfull, 1 if error
30;       IF:     1
31;   Corrupts registers:
32;       Flags
33;--------------------------------------------------------------------
34ALIGN JUMP_ALIGN
35AH4h_HandlerForVerifyDiskSectors:
36    test    al, al                      ; Invalid sector count?
37    jz      SHORT AH2h_ZeroCntErr       ;  If so, return with error
38    push    dx
39    push    cx
40    push    bx
41    push    ax
42%ifndef USE_186
43    call    AH4h_VerifySectors
44    jmp     Int13h_PopXRegsAndReturn
45%else
46    push    Int13h_PopXRegsAndReturn
47    ; Fall through to AH4h_VerifySectors
48%endif
49
50
51;--------------------------------------------------------------------
52; Verifies hard disk sectors.
53;
54; AH4h_VerifySectors
55;   Parameters:
56;       AL:     Number of sectors to verify
57;       CH:     Cylinder number, bits 7...0
58;       CL:     Bits 7...6: Cylinder number bits 9 and 8
59;               Bits 5...0: Starting sector number (1...63)
60;       DH:     Starting head number (0...255)
61;       DL:     Drive number
62;       DS:     RAMVARS segment
63;   Returns:
64;       DS:DI:  Ptr to DPT
65;       AH:     Int 13h/40h floppy return status
66;       CF:     0 if successfull, 1 if error
67;   Corrupts registers:
68;       AL, BX, CX, DX
69;--------------------------------------------------------------------
70ALIGN JUMP_ALIGN
71AH4h_VerifySectors:
72    call    FindDPT_ForDriveNumber      ; DS:DI now points to DPT
73    mov     ah, HCMD_VERIFY_SECT        ; Load command to AH
74    call    HCommand_OutputCountAndLCHSandCommand
75    jc      SHORT .Return               ; Return if error
76    mov     bx, di                      ; DS:BX now points to DPT
77    jmp     HStatus_WaitIrqOrRdy        ; Wait for IRQ or RDY
78.Return:
79    ret
Note: See TracBrowser for help on using the repository browser.