Ignore:
Timestamp:
Feb 27, 2012, 4:24:52 PM (13 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • AH=0h (Reset) should now work but our drives are no longer reset if DL belongs to foreign drive.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/FindDPT.asm

    r265 r271  
    116116    ret
    117117
     118
     119;--------------------------------------------------------------------
     120; FindDPT_ForIdevarsOffsetInDL
     121;   Parameters:
     122;       DL:     Offset to IDEVARS to search for
     123;       DS:     RAMVARS segment
     124;   Returns:
     125;       DS:DI:      Ptr to first DPT with same IDEVARS as in DL
     126;       CF:         Clear if wanted DPT found
     127;                   Set if DPT not found, or no DPTs present
     128;   Corrupts registers:
     129;       SI
     130;--------------------------------------------------------------------
     131FindDPT_ForIdevarsOffsetInDL:
     132    mov     si, IterateFindFirstDPTforIdevars           ; iteration routine (see below)
     133    jmp     SHORT FindDPT_IterateAllDPTs                ; look for the first drive on this controller, if any
     134
     135;--------------------------------------------------------------------
     136; Iteration routine for FindDPT_ForIdevarsOffsetInDL,
     137; for use with IterateAllDPTs
     138;
     139; Returns when DPT is found on the controller with Idevars offset in DL
     140;
     141; IterateFindFirstDPTforIdevars
     142;       DL:     Offset to IDEVARS to search from DPTs
     143;       DS:DI:  Ptr to DPT to examine
     144;   Returns:
     145;       CF:     Clear if wanted DPT found
     146;               Set if wrong DPT
     147;--------------------------------------------------------------------
     148IterateFindFirstDPTforIdevars:     
     149    cmp     dl, [di+DPT.bIdevarsOffset]         ; Clears CF if matched
     150    je      .done
     151    stc                                         ; Set CF for not found
     152.done: 
     153    ret
     154
     155
    118156;--------------------------------------------------------------------
    119157; Finds pointer to first unused Disk Parameter Table.
     
    198236; Iterates all Disk Parameter Tables.
    199237;
    200 ; IterateAllDPTs
     238; FindDPT_IterateAllDPTs
    201239;   Parameters:
    202240;       AX,BX,DX:   Parameters to callback function
     
    213251;--------------------------------------------------------------------
    214252ALIGN JUMP_ALIGN
    215 IterateAllDPTs:
     253FindDPT_IterateAllDPTs:
    216254    push    cx
    217255
Note: See TracChangeset for help on using the changeset viewer.