Ignore:
Timestamp:
Aug 21, 2011, 3:42:15 PM (13 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Old Int 13h transfer functions work again.
  • Fixes to eINT13h (EBIOS) support.
File:
1 edited

Legend:

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

    r165 r167  
    2323ALIGN JUMP_ALIGN
    2424AH48h_HandlerForGetExtendedDriveParameters:
    25     ; Get ATA Drive Information and total sector count from it
     25    ; Get our buffer to ES:SI
     26    push    di
     27    call    FindDPT_ForNewDriveToDSDI
     28    lea     si, [di+LARGEST_DPT_SIZE]   ; IdeCommand.asm required fake DPT
     29    pop     di
    2630    push    ds
    27     pop     es          ; ES now points RAMVARS segment
    28     mov     si, [cs:ROMVARS.bStealSize]
    29     and     si, BYTE 7Fh
    30     eSHL_IM si, 10      ; Kilobytes to bytes
    31     sub     si, 512     ; Subtract buffer size for offset in RAMVARS
    32     call    AH25h_GetDriveInformationToBufferInESSIfromDriveInDL
     31    pop     es
     32
     33    ; Get Drive ID and total sector count from it
     34    call    AH25h_GetDriveInformationToBufferInESSI
     35    jc      SHORT .ReturnWithError
    3336    call    AtaID_GetTotalSectorCountToBXDXAXfromAtaInfoInESSI
    34     xchg    cx, ax
     37    xchg    cx, ax      ; Sector count now in BX:DX:CX
    3538
    3639    ; Point ES:DI to Destination buffer
    3740    mov     di, [bp+IDEPACK.intpack+INTPACK.si]
    3841    mov     es, [bp+IDEPACK.intpack+INTPACK.ds]
    39     cmp     WORD [es:di+EDRIVE_INFO.wSize], MINIMUM_EDRIVEINFO_SIZE
     42    mov     ax, MINIMUM_EDRIVEINFO_SIZE
     43    cmp     WORD [es:di+EDRIVE_INFO.wSize], ax
    4044    jb      SHORT .BufferTooSmall
     45    je      SHORT .SkipEddConfigurationParameters
     46
     47    ; We do not support EDD Configuration Parameters so set to FFFF:FFFFh
     48    xor     ax, ax
     49    dec     ax          ; AX = FFFFh
     50    mov     [es:di+EDRIVE_INFO.fpEDDparams], ax
     51    mov     [es:di+EDRIVE_INFO.fpEDDparams+2], ax
     52    mov     ax, EDRIVE_INFO_size
    4153
    4254    ; Fill Extended Drive Information Table in ES:DI
    43     mov     ax, MINIMUM_EDRIVEINFO_SIZE
    44     stosw
     55.SkipEddConfigurationParameters:
     56    stosw               ; Store Extended Drive Information Table size
    4557    mov     al, FLG_DMA_BOUNDARY_ERRORS_HANDLED_BY_BIOS
    4658    stosw
     
    6375.BufferTooSmall:
    6476    mov     ah, RET_HD_INVALID
     77.ReturnWithError:
    6578    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
Note: See TracChangeset for help on using the changeset viewer.