Changeset 606 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS


Ignore:
Timestamp:
May 15, 2021, 8:27:11 PM (4 years ago)
Author:
Krister Nordvall
Message:

Changes:

  • RESERVE_DIAGNOSTIC_CYLINDER has been completely removed as it wasted hard drive space, caused a compatibility problem with 32-bit disk access drivers under Windows 3.x and most importantly, it was in fact not needed since the same thing can be accomplished using the "User specified CHS" feature in XTIDECFG which is better because that applies only to that specific drive instead of all drives under XUB control.
  • In BIOS builds containing MODULE_EBIOS (i.e. all official builds except the Tiny build), drives with a cylinder count less than or equal to 1024 had CHS translation applied to them unnecessarily if CHS translation method was set to Auto (which is the default). This bug has been present for a long time and, as a side effect, made RESERVE_DIAGNOSTIC_CYLINDER useless since the idea behind that was to provide compatibility with other old BIOSes using NORMAL addressing mode. WARNING! With this bug now being fixed, upgrading to this revision of the BIOS will require repartitioning and reformatting any drives affected by this (BIOSDRVS.COM can be helpful in determining which drives are affected).
Location:
trunk/XTIDE_Universal_BIOS
Files:
4 edited

Legend:

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

    r567 r606  
    6161
    6262    mov     [bp+IDEPACK.intpack+INTPACK.bl], bl
    63 
    6463    mov     [bp+IDEPACK.intpack+INTPACK.es], es
    6564    mov     [bp+IDEPACK.intpack+INTPACK.di], di
     
    150149;--------------------------------------------------------------------
    151150AH8h_LimitAXtoMaximumLCylinders:
    152 %ifdef RESERVE_DIAGNOSTIC_CYLINDER
    153     dec     ax
    154 %endif
    155151    MIN_U   ax, MAX_LCHS_CYLINDERS
    156152    ret
  • trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/AtaGeometry.asm

    r592 r606  
    7474;       BH:     Number of L-CHS sectors per track (1...63)
    7575;       CX:     Number of bits shifted (0...3)
    76 ;       DL:     CHS Translate Mode
    77 ;   Corrupts registers:
    78 ;       DH
     76;       DX:     CHS Translate Mode
     77;   Corrupts registers:
     78;       Nothing
    7979;--------------------------------------------------------------------
    8080AtaGeometry_GetLCHStoAXBLBHfromAtaInfoInESSIwithTranslateModeInDX:
     
    100100    cmp     ax, 8192
    101101    jbe     SHORT ConvertPCHfromAXBLtoEnhancedCHinAXBL
     102%else
     103    ; Check if the drive is within the limits of NORMAL addressing.
     104    ; If it is, then no CHS translation is necessary.
     105    cmp     ax, MAX_LCHS_CYLINDERS
     106    jbe     SHORT ConvertPCHfromAXBLtoEnhancedCHinAXBL
    102107%endif
    103108
     
    161166;       BH:     Number of sectors per track (always 63)
    162167;       CX:     Number of bits shifted (0)
    163 ;       DL:     TRANSLATEMODE_ASSISTED_LBA
    164 ;   Corrupts registers:
    165 ;       DH
     168;       DX:     TRANSLATEMODE_ASSISTED_LBA
     169;   Corrupts registers:
     170;       Nothing
    166171;--------------------------------------------------------------------
    167172ConvertChsSectorCountFromDXAXtoLbaAssistedLCHSinAXBLBH:
     
    213218    xchg    bh, cl                      ; Sectors per Track to BH, zero to CL (CX)
    214219    mov     dl, TRANSLATEMODE_ASSISTED_LBA
     220    ; All combinations of value CH from 1 to 262128 divided by number of heads
     221    ; (16/32/64/128/255) has been verified to return with DH cleared.
    215222ReturnLCHSinAXBLBH:
    216223    ret
  • trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/CreateDPT.asm

    r605 r606  
    108108    ; Store P-CHS and flags
    109109    call    AtaGeometry_GetPCHStoAXBLBHfromAtaInfoInESSI
    110     dec     dl                      ; Set ZF if TRANSLATEMODE_LARGE, SF if TRANSLATEMODE_NORMAL
     110    dec     dx                      ; Set ZF if TRANSLATEMODE_LARGE, SF if TRANSLATEMODE_NORMAL
    111111    jle     SHORT .JumpOverSetBitForAssistedLBA
    112112
  • trunk/XTIDE_Universal_BIOS/makefile

    r605 r606  
    3636# ELIMINATE_CGA_SNOW          Prevents CGA snowing at the cost of a few bytes                      #
    3737# RELOCATE_INT13H_STACK **    Relocates INT 13h stack to beginning of stolen conventional memory   #
    38 # RESERVE_DIAGNOSTIC_CYLINDER Reserve one L-CHS cylinder for compatibility with old BIOSes         #
    3938# NO_ATAID_VALIDATION ***     Excludes code that tries to ensure proper communication with drives  #
    4039# USE_186                     Use instructions supported by 80188/80186 and V20/V30 and later      #
     
    107106# Assembler preprocessor defines.                               #
    108107#################################################################
    109 DEFINES_COMMON = MODULE_STRINGS_COMPRESSED MODULE_HOTKEYS MODULE_8BIT_IDE MODULE_EBIOS MODULE_SERIAL MODULE_SERIAL_FLOPPY MODULE_POWER_MANAGEMENT RESERVE_DIAGNOSTIC_CYLINDER NO_ATAID_VALIDATION CLD_NEEDED
     108DEFINES_COMMON = MODULE_STRINGS_COMPRESSED MODULE_HOTKEYS MODULE_8BIT_IDE MODULE_EBIOS MODULE_SERIAL MODULE_SERIAL_FLOPPY MODULE_POWER_MANAGEMENT NO_ATAID_VALIDATION CLD_NEEDED
    110109DEFINES_COMMON_LARGE = MODULE_BOOT_MENU MODULE_8BIT_IDE_ADVANCED MODULE_COMPATIBLE_TABLES
    111110
Note: See TracChangeset for help on using the changeset viewer.