Changeset 230 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h


Ignore:
Timestamp:
Jan 29, 2012, 11:22:19 PM (13 years ago)
Author:
krille_n_@…
google:author:
krille_n_@hotmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Some small optimizations
Location:
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH48h_GetExtendedDriveParameters.asm

    r229 r230  
    4545    mov     WORD [si+EDRIVE_INFO.wFlags], FLG_DMA_BOUNDARY_ERRORS_HANDLED_BY_BIOS
    4646
     47    push    ds  ; Move CS to DS to avoid segment overrides
     48    push    cs
     49    pop     ds
     50
    4751    ; Limit LBA if necessary
    48     test    BYTE [cs:di+DRVPARAMS.wFlags], FLG_DRVPARAMS_USERLBA
     52    test    BYTE [di+DRVPARAMS.wFlags], FLG_DRVPARAMS_USERLBA
    4953    jz      SHORT .StoreTotalSectorsFromBXDXAX
    5054    test    bx, bx
    5155    jnz     SHORT .LimitTotalSectors
    52     cmp     dx, [cs:di+DRVPARAMS.dwMaximumLBA+2]
     56    cmp     dx, [di+DRVPARAMS.dwMaximumLBA+2]
    5357    jb      SHORT .StoreTotalSectorsFromBXDXAX      ; Real size less than max
    5458    ja      SHORT .LimitTotalSectors
    55     cmp     ax, [cs:di+DRVPARAMS.dwMaximumLBA]
     59    cmp     ax, [di+DRVPARAMS.dwMaximumLBA]
    5660    jbe     SHORT .StoreTotalSectorsFromBXDXAX      ; Real size less than max
    5761
    5862.LimitTotalSectors:
    5963    xor     bx, bx
    60     mov     ax, [cs:di+DRVPARAMS.dwMaximumLBA]
    61     mov     dx, [cs:di+DRVPARAMS.dwMaximumLBA+2]
     64    mov     ax, [di+DRVPARAMS.dwMaximumLBA]
     65    mov     dx, [di+DRVPARAMS.dwMaximumLBA+2]
    6266
    6367.StoreTotalSectorsFromBXDXAX:
     68    pop     ds  ; Restore DS from the change above
    6469    mov     [si+EDRIVE_INFO.qwTotalSectors], ax
    6570    xor     ax, ax                                  ; Return with success
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/Tools/Address.asm

    r227 r230  
    8686Address_OldInt13hAddressToIdeAddress:
    8787        call    Address_ExtractLCHSparametersFromOldInt13hAddress
    88            
     88
    8989        AccessDPT_GetUnshiftedAddressModeToALZF
    90        
    91 ;;; 0: ADDR_DPT_LCHS       
    92         jz      DoNotConvertLCHS   
    93        
     90
     91;;; 0: ADDR_DPT_LCHS
     92        jz      DoNotConvertLCHS
     93
    9494;;; 1: ADDR_DPT_PCHS
    95         ; 
     95        ;
    9696        ; Since we are only checking for zero, we can do our math in the high order bits,
    9797        ; in this case effectively subtracting 1 from the address mode.
    9898        ;
    9999        sub     al,(1<<ADDRESSING_MODE_FIELD_POSITION)
    100         jz      ConvertLCHStoPCHS   
     100        jz      ConvertLCHStoPCHS
    101101
    102 ;;; 2: ADDR_DPT_LBA28 and 3: ADDR_DPT_LBA48             
    103         ; Fall through to ConvertLCHStoLBARegisterValues 
    104        
     102;;; 2: ADDR_DPT_LBA28 and 3: ADDR_DPT_LBA48
     103        ; Fall through to ConvertLCHStoLBARegisterValues
     104
    105105;---------------------------------------------------------------------
    106106; Converts LCHS parameters to 28-bit LBA address.
     
    129129    ; cylToSeek*headsPerCyl (18-bit result)
    130130    mov     ax, cx                  ; Copy Cylinder number to AX
     131    ; We could save a byte here by using CWD instead of the XOR DH, DH in eMOVZX
     132    ; but I'm not sure how that would affect speed.
     133
    131134    eMOVZX  dx, BYTE [di+DPT.bLbaHeads]
    132135    mul     dx                      ; DX:AX = cylToSeek*headsPerCyl
Note: See TracChangeset for help on using the changeset viewer.