Changeset 612 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs


Ignore:
Timestamp:
May 26, 2021, 1:42:14 PM (4 years ago)
Author:
Krister Nordvall
Message:

Changes:

  • BIOSDRVS builds again (broken since r609). Also removed the last remnants of RESERVE_DIAGNOSTIC_CYLINDER from BIOSDRVS that I missed in r606.
  • Put in a limit on the P-CHS cylinder count in an attempt to improve compatibility with some CF cards that violates the ATA specification. The limit applies only to the BIOS. BIOSDRVS will continue to show the true cylinder count since we might want to add code later to warn the user when encountering incompatible drives like these.
  • Optimized the bug fix in r611.
  • Updated the copyright notices in XTIDECFG and BIOSDRVS.
Location:
trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs
Files:
2 edited

Legend:

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

    r609 r612  
    8484    dec     dx                      ; Set ZF if TRANSLATEMODE_LARGE, SF if TRANSLATEMODE_NORMAL
    8585    jns     SHORT .CheckIfLargeTranslationWanted
    86     call    AH8h_LimitAXtoMaximumLCylinders ; TRANSLATEMODE_NORMAL maximum cylinders
     86    call    AtaGeometry_LimitAXtoMaximumLCylinders  ; TRANSLATEMODE_NORMAL maximum cylinders
    8787    inc     dx
    8888.CheckIfLargeTranslationWanted:
     
    239239    mov     bl, [es:si+ATA1.wHeadCnt]   ; Heads (1...16)
    240240    mov     bh, [es:si+ATA1.wSPT]       ; Sectors per Track (1...63)
     241%ifndef EXCLUDE_FROM_BIOSDRVS   ; We want the true value in BIOSDRVS
     242    ; Some CF cards (for example Sandisk Ultra 16/32 GB) violates
     243    ; the ATA specification by reporting more than 16383 cylinders.
     244    MIN_U   ax, MAX_PCHS_CYLINDERS      ; Limit the count to avoid problems.
     245%endif
    241246    ret
    242247
     
    360365    ret
    361366
     367
     368;--------------------------------------------------------------------
     369; AtaGeometry_LimitAXtoMaximumLCylinders
     370;   Parameters:
     371;       AX:     Number of total L-CHS cylinders (1...1027)
     372;   Returns:
     373;       AX:     Number of usable L-CHS cylinders (1...1024)
     374;   Corrupts registers:
     375;       Nothing
     376;--------------------------------------------------------------------
     377AtaGeometry_LimitAXtoMaximumLCylinders:
     378    MIN_U   ax, MAX_LCHS_CYLINDERS
     379    ret
     380
  • trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/CompatibleDPT.asm

    r589 r612  
    9696FillToESDIusingDPTfromDSSI:
    9797    mov     ax, [si+DPT.wLchsCylinders]
    98     call    AH8h_LimitAXtoMaximumLCylinders
     98    call    AtaGeometry_LimitAXtoMaximumLCylinders
    9999    test    BYTE [si+DPT.bFlagsLow], MASKL_DPT_TRANSLATEMODE
    100100    jz      SHORT FillStandardDPTtoESDIfromDPTinDSSI
Note: See TracChangeset for help on using the changeset viewer.