Changeset 167 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS


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.
Location:
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS
Files:
3 edited

Legend:

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

    r165 r167  
    1717;   Returns with INTPACK:
    1818;       AH:     Major version of EBIOS extensions
    19 ;       BX:     55AAh
     19;       BX:     AA55h
    2020;       CX:     Support bits
    2121;       CF:     0 if succesfull, 1 if error
     
    2626    jne     SHORT .EbiosNotSupported
    2727
     28    mov     BYTE [bp+IDEPACK.intpack+INTPACK.ah], EBIOS_VERSION
     29    mov     WORD [bp+IDEPACK.intpack+INTPACK.bx], 0AA55h
    2830    mov     WORD [bp+IDEPACK.intpack+INTPACK.cx], ENHANCED_DRIVE_ACCESS_SUPPORT
    29     mov     ah, EBIOS_VERSION
    3031    and     BYTE [bp+IDEPACK.intpack+INTPACK.flags], ~FLG_FLAGS_CF  ; Return with CF cleared
    3132    jmp     Int13h_ReturnFromHandlerWithoutStoringErrorCode
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH42h_ExtendedReadSectors.asm

    r165 r167  
    5555    cmp     BYTE [es:si+DAP.bSize], MINIMUM_DAP_SIZE
    5656    jb      SHORT .DapContentsNotValid
    57     cmp     BYTE [es:si+DAP.bSectorCount], 0
     57    cmp     WORD [es:si+DAP.wSectorCount], BYTE 0
    5858    jle     SHORT .DapContentsNotValid          ; Must be 1...127
    5959    ret
  • 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.