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


Ignore:
Timestamp:
Apr 27, 2013, 5:30:50 PM (11 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • CREATE_COMPATIBLE_DPT is now MODULE_COMPATIBLE_TABLES.
  • DPTs pointed by INT 41h and INT 46h are now swapped when swapping drives 81h and 80h.
  • Block mode commands are no longer used when block size is set to 1 with AH=24h.
Location:
trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs
Files:
2 edited

Legend:

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

    r543 r550  
    6363;       Nothing
    6464;--------------------------------------------------------------------
     65%ifdef MODULE_EBIOS
    6566GetTemporaryBufferForDPTEtoESDI:
    6667    call    GetBufferForDrive80hToESDI
    6768    add     di, BYTE TRANSLATED_DPT_size * 2
    6869    ret
     70%endif
    6971
    7072GetBufferForDrive80hToESDI:
     
    7375    mov     di, [cs:ROMVARS.bStealSize] ; No harm to read WORD
    7476    eSHL_IM di, 10                      ; DI = RAMVARS size in bytes
     77%ifdef MODULE_EBIOS
    7578    sub     di, BYTE (TRANSLATED_DPT_size * 2) + DPTE_size
     79%else
     80    sub     di, BYTE TRANSLATED_DPT_size * 2
     81%endif
    7682    ret
    7783
     
    174180
    175181
     182%ifdef MODULE_EBIOS
    176183;--------------------------------------------------------------------
    177184; CompatibleDPT_CreateDeviceParameterTableExtensionToESBXfromDPTinDSSI
     
    248255    lea     bx, [di-DPTE_size]
    249256    ret
     257%endif ; MODULE_EBIOS
    250258
    251259
  • trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/CreateDPT.asm

    r549 r550  
    128128    or      [di+DPT.bFlagsLow], cl  ; Shift count and addressing mode
    129129    mov     [di+DPT.wPchsHeadsAndSectors], bx
    130 
    131 %ifdef MODULE_EBIOS
     130%ifdef MODULE_COMPATIBLE_TABLES OR MODULE_EBIOS
    132131    ; Store P-Cylinders here for Compatible DPTs when FLGL_DPT_LBA is not set
    133132    ; or when drive has over 15,482,880 sectors
    134133    mov     [di+DPT.wPchsCylinders], ax
     134%endif
     135
     136%ifdef MODULE_EBIOS
    135137    test    cl, FLGL_DPT_LBA
    136138    jz      SHORT .NoLbaSoNoEBIOS
     
    188190.NoLbaSoNoEBIOS:
    189191%endif ; MODULE_EBIOS
    190     ; Fall to .StoreBlockMode
    191 
    192 ;--------------------------------------------------------------------
    193 ; .StoreBlockMode
    194 ;   Parameters:
    195 ;       DS:DI:  Ptr to Disk Parameter Table
    196 ;       ES:SI:  Ptr to 512-byte ATA information read from the drive
    197 ;       CS:BP:  Ptr to IDEVARS for the controller
    198 ;   Returns:
    199 ;       Nothing
    200 ;   Corrupts registers:
    201 ;       Nothing
    202 ;--------------------------------------------------------------------
    203 .StoreBlockMode:
    204     cmp     BYTE [es:si+ATA1.bBlckSize], 1  ; Max block size in sectors
    205     jbe     SHORT .BlockModeTransfersNotSupported
    206     or      BYTE [di+DPT.bFlagsHigh], FLGH_DPT_BLOCK_MODE_SUPPORTED
    207 .BlockModeTransfersNotSupported:
    208192    ; Fall to .StoreDeviceSpecificParameters
    209193
Note: See TracChangeset for help on using the changeset viewer.