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


Ignore:
Timestamp:
Jan 25, 2012, 2:36:47 PM (12 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • AH=0Ch (Seek) should work properly again.
  • More than 127 sectors are no longer allowed for EBIOS functions.
  • Changed location for BOOTNFO structs.
Location:
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS
Files:
5 edited

Legend:

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

    r218 r221  
    2424ALIGN JUMP_ALIGN
    2525AH42h_HandlerForExtendedReadSectors:
    26     call    AH42h_LoadDapToESSIandVerifyForTransfer
    27     call    CommandLookup_GetEbiosIndexToBX
     26    call    Prepare_ByLoadingDapToESSIandVerifyingForTransfer
    2827    mov     ah, [cs:bx+g_rgbReadCommandLookup]
    2928    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ)
     
    3534    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
    3635%endif
    37 
    38 
    39 ;--------------------------------------------------------------------
    40 ; AH42h_LoadDapToESSIandVerifyForTransfer
    41 ;   Parameters:
    42 ;       SI:     Same as in INTPACK
    43 ;       SS:BP:  Ptr to IDEPACK
    44 ;   Parameters on INTPACK:
    45 ;       DS:SI:  Ptr to Disk Address Packet
    46 ;   Returns:
    47 ;       ES:SI:  Ptr to Disk Address Packet (DAP)
    48 ;       Exits from INT 13h if invalid DAP
    49 ;   Corrupts registers:
    50 ;       Nothing
    51 ;--------------------------------------------------------------------
    52 ALIGN JUMP_ALIGN
    53 AH42h_LoadDapToESSIandVerifyForTransfer:
    54     mov     es, [bp+IDEPACK.intpack+INTPACK.ds] ; ES:SI to point Disk Address Packet
    55     cmp     BYTE [es:si+DAP.bSize], MINIMUM_DAP_SIZE
    56     jb      SHORT AH42h_ReturnWithInvalidFunctionError
    57     cmp     WORD [es:si+DAP.bSectorCount], BYTE 0
    58     je      SHORT AH42h_ReturnWithInvalidFunctionError
    59     ret
    60 AH42h_ReturnWithInvalidFunctionError:
    61     mov     ah, RET_HD_INVALID
    62     jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH43h_ExtendedWriteSectors.asm

    r169 r221  
    2727AH43h_HandlerForExtendedWriteSectors:
    2828    cmp     BYTE [bp+IDEPACK.intpack+INTPACK.al], 2 ; Verify requested?
    29     jae     SHORT AH42h_ReturnWithInvalidFunctionError
     29    jae     SHORT Prepare_ReturnFromInt13hWithInvalidFunctionError
    3030
    31     call    AH42h_LoadDapToESSIandVerifyForTransfer
    32     call    CommandLookup_GetEbiosIndexToBX
     31    call    Prepare_ByLoadingDapToESSIandVerifyingForTransfer
    3332    mov     ah, [cs:bx+g_rgbWriteCommandLookup]
    3433    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ)
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH44h_ExtendedVerifySectors.asm

    r165 r221  
    2424ALIGN JUMP_ALIGN
    2525AH44h_HandlerForExtendedVerifySectors:
    26     call    AH42h_LoadDapToESSIandVerifyForTransfer
    27     call    CommandLookup_GetEbiosIndexToBX
     26    call    Prepare_ByLoadingDapToESSIandVerifyingForTransfer
    2827    mov     ah, [cs:bx+g_rgbVerifyCommandLookup]
    2928    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRDY)
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH47h_ExtendedSeek.asm

    r169 r221  
    2525    mov     es, [bp+IDEPACK.intpack+INTPACK.ds] ; ES:SI to point Disk Address Packet
    2626    cmp     BYTE [es:si+DAP.bSize], MINIMUM_DAP_SIZE
    27     jb      SHORT AH42h_ReturnWithInvalidFunctionError
     27    jb      SHORT Prepare_ReturnFromInt13hWithInvalidFunctionError
    2828
    2929    mov     ah, COMMAND_SEEK
     
    3636    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
    3737%endif
     38
     39.WriteWithVerifyNotSupported:
     40    jmp     Prepare_ReturnFromInt13hWithInvalidFunctionError
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH48h_GetExtendedDriveParameters.asm

    r170 r221  
    4040    mov     ax, MINIMUM_EDRIVEINFO_SIZE
    4141    cmp     [di+EDRIVE_INFO.wSize], ax
    42     jb      SHORT AH42h_ReturnWithInvalidFunctionError
     42    jb      SHORT Prepare_ReturnFromInt13hWithInvalidFunctionError
    4343    je      SHORT .SkipEddConfigurationParameters
    4444
Note: See TracChangeset for help on using the changeset viewer.