Changeset 35 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h


Ignore:
Timestamp:
Aug 24, 2010, 6:44:44 PM (14 years ago)
Author:
Tomi Tilli
google:author:
aitotat
Message:

Cleaned recent changes a bit to save few bytes.

Location:
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h
Files:
10 edited

Legend:

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

    r32 r35  
    22; Project name  :   IDE BIOS
    33; Created date  :   27.9.2007
    4 ; Last update   :   3.8.2010
     4; Last update   :   24.8.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Int 13h function AH=0h, Disk Controller Reset.
     
    4444    xor     al, al                      ; Zero AL...
    4545    cmp     al, bh                      ; ...and set CF if error
    46     jmp     Int13h_StoreErrorCodeToBDAandPopXRegsAndReturn
     46    jmp     Int13h_PopXRegsAndReturn
    4747
    4848
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH14h_HDiag.asm

    r28 r35  
    22; Project name  :   IDE BIOS
    33; Created date  :   28.9.2007
    4 ; Last update   :   1.8.2010
     4; Last update   :   24.8.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Int 13h function AH=14h, Controller Internal Diagnostic.
     
    3333    jnz     SHORT .ReturnError
    3434    xor     ah, ah                      ; Zero AH and CF since success
    35     jmp     Int13h_StoreErrorCodeToBDAandPopDSDIandReturn
     35    jmp     Int13h_PopDiDsAndReturn
    3636.ReturnError:
    3737    mov     ah, RET_HD_RESETFAIL
    3838    stc
    39     jmp     Int13h_StoreErrorCodeToBDAandPopDSDIandReturn
     39    jmp     Int13h_PopDiDsAndReturn
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH15h_HSize.asm

    r3 r35  
    22; Project name  :   IDE BIOS
    33; Created date  :   28.9.2007
    4 ; Last update   :   12.4.2010
     4; Last update   :   24.8.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Int 13h function AH=15h, Read Disk Drive Size.
     
    4444    mov     ah, 3                               ; Type code = Hard disk
    4545    clc
    46     jmp     Int13h_ReturnWithoutSwappingDrives
     46    jmp     Int13h_ReturnWithValueInDL
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH1h_HStatus.asm

    r28 r35  
    22; Project name  :   IDE BIOS
    33; Created date  :   27.9.2007
    4 ; Last update   :   29.7.2010
     4; Last update   :   24.8.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Int 13h function AH=1h, Read Disk Status.
     
    3232    xor     ah, ah                  ; Zero AH
    3333    cmp     ah, [BDA.bHDLastSt]     ; Set CF if error code is non-zero
    34     xchg    ah, [BDA.bHDLastSt]     ; Last error to AH, zero to BDA
     34    mov     ah, [BDA.bHDLastSt]     ; Last error to AH
    3535
    3636    pop     ds
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH2h_HRead.asm

    r28 r35  
    22; Project name  :   IDE BIOS
    33; Created date  :   27.9.2007
    4 ; Last update   :   1.8.2010
     4; Last update   :   24.8.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Int 13h function AH=2h, Read Disk Sectors.
     
    6363    mov     ah, RET_HD_INVALID          ; Invalid value passed
    6464    stc                                 ; Set CF since error
    65     jmp     Int13h_StoreErrorCodeToBDAandPopDSDIandReturn
     65    jmp     Int13h_PopDiDsAndReturn
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH8h_HParams.asm

    r32 r35  
    22; Project name  :   IDE BIOS
    33; Created date  :   27.9.2007
    4 ; Last update   :   3.8.2010
     4; Last update   :   24.8.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Int 13h function AH=8h, Read Disk Drive Parameters.
     
    3838    call    AH8h_GetDriveParameters
    3939    pop     bx
    40     jmp     Int13h_ReturnWithoutSwappingDrives
     40    jmp     Int13h_ReturnWithValueInDL
    4141
    4242ALIGN JUMP_ALIGN
     
    4444    call    Int13h_CallPreviousInt13hHandler
    4545    call    RamVars_GetCountOfKnownDrivesToDL
    46     jmp     Int13h_ReturnWithoutSwappingDrives
     46    jmp     Int13h_ReturnWithValueInDL
    4747
    4848
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH9h_HInit.asm

    r28 r35  
    8282    and     BYTE [di+DPT.bReset], ~FLG_RESET_nSETBLOCK
    8383
    84     ; Force PIO mode 0
    85     ;call   AH9h_ForcePioMode0
    86 
    8784.ReturnNotSuccessfull:
    8885    pop     cx
     
    152149.Return:
    153150    ret
    154 
    155 
    156 ;--------------------------------------------------------------------
    157 ; AH9h_ForcePioMode0
    158 ;   Parameters:
    159 ;       DL:     Drive number
    160 ;       DS:DI:  Ptr to DPT
    161 ;   Returns:
    162 ;       AH:     BIOS Error code
    163 ;       CF:     Cleared if succesfull
    164 ;               Set if any error
    165 ;   Corrupts registers:
    166 ;       AX, BX
    167 ;--------------------------------------------------------------------
    168 ;ALIGN JUMP_ALIGN
    169 ;AH9h_ForcePioMode0:
    170 ;   mov     bh, 08h     ; Parameter to Sector Count Register (PIO Flow Control Transfer Mode 0)
    171 ;   mov     ax, 2303h   ; Feature: Set transfer mode based on value in Sector Count register
    172 ;   int     13h
    173 ;   jc      SHORT .FailedToForcePIO0
    174 ;   ; Debug output here
    175 ;   ret
    176 ;.FailedToForcePIO0:
    177 ;   ; Debug output here
    178 ;   ret
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AHDh_HReset.asm

    r33 r35  
    22; Project name  :   IDE BIOS
    33; Created date  :   9.12.2007
    4 ; Last update   :   23.8.2010
     4; Last update   :   24.8.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Int 13h function AH=Dh, Reset Hard Disk (Alternate reset).
     
    2626AHDh_HandlerForResetHardDisk:
    2727    call    AHDh_ResetDrive
    28     jmp     Int13h_StoreErrorCodeToBDAandPopDSDIandReturn
     28    jmp     Int13h_PopDiDsAndReturn
    2929
    3030
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/Common/HError.asm

    r34 r35  
    22; Project name  :   IDE BIOS
    33; Created date  :   30.11.2007
    4 ; Last update   :   23.8.2010
     4; Last update   :   24.8.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Error checking functions for BIOS Hard disk functions.
     
    2323ALIGN JUMP_ALIGN
    2424HError_ProcessTimeoutAfterPollingBSYandSomeOtherStatusBit:
    25     push    ds
    26     push    dx
    27 
    2825    call    HError_GetStatusAndErrorRegistersToAXandStoreThemToBDA
    2926    call    GetBiosErrorCodeToAHfromStatusAndErrorRegistersInAX
    30     jc      SHORT StoreErrorCodeFromAHtoBDA
     27    jc      SHORT .ReturnErrorCodeInAH
    3128    mov     ah, RET_HD_TIMEOUT          ; Force timeout since no actual error...
    3229    stc                                 ; ...but wanted bit was never set
    33     jmp     SHORT StoreErrorCodeFromAHtoBDA
     30.ReturnErrorCodeInAH:
     31    ret
    3432
    3533
    3634ALIGN JUMP_ALIGN
    3735HError_ProcessErrorsAfterPollingBSY:
    38     push    ds
    39     push    dx
    40 
    4136    call    HError_GetStatusAndErrorRegistersToAXandStoreThemToBDA
    42     call    GetBiosErrorCodeToAHfromStatusAndErrorRegistersInAX
    43 StoreErrorCodeFromAHtoBDA:
    44     mov     [BDA.bHDLastSt], ah         ; Store BIOS error code to BDA
    45 
    46     pop     dx
    47     pop     ds
    48     ret
     37    jmp     SHORT GetBiosErrorCodeToAHfromStatusAndErrorRegistersInAX
    4938
    5039
     
    5645;       AL:     IDE Status Register contents
    5746;       AH:     IDE Error Register contents
    58 ;       DS:     BDA segment
    5947;   Corrupts registers:
    60 ;       DX
     48;       Nothing
    6149;--------------------------------------------------------------------
    6250ALIGN JUMP_ALIGN
    6351HError_GetStatusAndErrorRegistersToAXandStoreThemToBDA:
     52    push    ds
     53    push    dx
     54
    6455    mov     dx, [RAMVARS.wIdeBase]      ; Load IDE base port address
    6556    inc     dx                          ; Increment to Error Register
     
    6859    add     dx, BYTE REGR_IDE_ST - REGR_IDE_ERROR
    6960    in      al, dx                      ; Read Status Register to AL
    70     ; Fall to .StoreStatusAndErrorRegistersFromAXtoBDA
    7161
    72 ;--------------------------------------------------------------------
    73 ; .StoreStatusAndErrorRegistersFromAXtoBDA
    74 ;   Parameters:
    75 ;       AL:     IDE Status Register contents
    76 ;       AH:     IDE Error Register contents
    77 ;   Returns:
    78 ;       DS:     BDA segment (zero)
    79 ;   Corrupts registers:
    80 ;       DX
    81 ;--------------------------------------------------------------------
    82 .StoreStatusAndErrorRegistersFromAXtoBDA:
    8362    LOAD_BDA_SEGMENT_TO ds, dx
    8463    mov     [HDBDA.wHDStAndErr], ax
     64
     65    pop     dx
     66    pop     ds
    8567    ret
    8668
     
    148130    db  RET_HD_BADSECTOR    ; Bit7=BBK, Bad Block Detected
    149131    db  RET_HD_STATUSERR    ; When Error Register is zero
    150 
    151 
    152 ;--------------------------------------------------------------------
    153 ; HError_StoreBiosErrorCodeFromAHtoBDA
    154 ;   Parameters:
    155 ;       AH:     BIOS error code
    156 ;   Returns:
    157 ;       Nothing
    158 ;   Corrupts registers:
    159 ;       DI
    160 ;--------------------------------------------------------------------
    161 ALIGN JUMP_ALIGN
    162 HError_StoreBiosErrorCodeFromAHtoBDA:
    163     push    ds
    164     mov     di, 0                   ; Zero DI and preserve FLAGS
    165     mov     ds, di                  ; Copy BDA segment to DS
    166     mov     [BDA.bHDLastSt], ah
    167     pop     ds
    168     ret
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/Common/HIRQ.asm

    r34 r35  
    22; Project name  :   IDE BIOS
    33; Created date  :   11.12.2009
    4 ; Last update   :   23.8.2010
     4; Last update   :   24.8.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Interrupt handling related functions.
     
    9898    jmp     SHORT AcknowledgeMasterInterruptController
    9999
     100
    100101ALIGN JUMP_ALIGN
    101102HIRQ_InterruptServiceRoutineForIrqs8to15:
     
    132133    push    ds
    133134    push    di
    134     push    dx
    135135
    136136    ; Reading Status Register acknowledges IDE interrupt
    137137    call    RamVars_GetSegmentToDS
    138138    call    HError_GetStatusAndErrorRegistersToAXandStoreThemToBDA
     139
     140    ; Set Task Flag
     141    LOAD_BDA_SEGMENT_TO ds, ax
    139142    mov     BYTE [BDA.bHDTaskFlg], 0FFh     ; Set task flag
    140143
    141     pop     dx
    142144    pop     di
    143145    pop     ds
Note: See TracChangeset for help on using the changeset viewer.