Changeset 32 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers


Ignore:
Timestamp:
Aug 6, 2010, 7:11:04 AM (14 years ago)
Author:
aitotat
google:author:
aitotat
Message:

Correct number of drives is now returned from AH=08h even when it is redirected to foreign BIOS.

Location:
trunk/XTIDE_Universal_BIOS/Src/Handlers
Files:
4 edited

Legend:

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

    r28 r32  
    110110    cli                                 ; Disable interrupts as INT would
    111111    retf
     112
     113
     114;--------------------------------------------------------------------
     115; Int13h_CallPreviousInt13hHandler
     116;   Parameters:
     117;       AH:     Bios function
     118;       DS:     RAMVARS segment
     119;       Other:  Depends on function to call
     120;   Returns:
     121;       Depends on function to call
     122;   Corrupts registers:
     123;       FLAGS
     124;--------------------------------------------------------------------
     125ALIGN JUMP_ALIGN
     126Int13h_CallPreviousInt13hHandler:
     127    pushf                               ; Push flags to simulate INT
     128    cli                                 ; Disable interrupts since INT does that
     129    call    FAR [RAMVARS.fpOldI13h]
     130    sti
     131    ret
    112132
    113133
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH0h_HReset.asm

    r28 r32  
    22; Project name  :   IDE BIOS
    33; Created date  :   27.9.2007
    4 ; Last update   :   29.7.2010
     4; Last update   :   3.8.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Int 13h function AH=0h, Disk Controller Reset.
    7 
    8 RETRIES_IF_RESET_FAILS      EQU     3
    9 TIMEOUT_BEFORE_RESET_RETRY  EQU     5       ; System timer ticks
    107
    118; Section containing code
     
    8279    call    GetDriveNumberForForeignBiosesToDL
    8380    xor     ah, ah                      ; Disk Controller Reset
    84     pushf                               ; Push flags to simulate INT
    85     cli                                 ; Disable interrupts since INT does that
    86     call    FAR [RAMVARS.fpOldI13h]
    87     sti                                 ; Make sure interrupts are enabled again (some BIOSes fails to enable it)
     81    call    Int13h_CallPreviousInt13hHandler
    8882    jmp     SHORT BackupErrorCodeFromTheRequestedDriveToBH
    8983
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH8h_HParams.asm

    r28 r32  
    22; Project name  :   IDE BIOS
    33; Created date  :   27.9.2007
    4 ; Last update   :   12.4.2010
     4; Last update   :   3.8.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Int 13h function AH=8h, Read Disk Drive Parameters.
     
    3232ALIGN JUMP_ALIGN
    3333AH8h_HandlerForReadDiskDriveParameters:
     34    call    RamVars_IsDriveHandledByThisBIOS
     35    jnc     SHORT .GetDriveParametersForForeignHardDiskInDL
     36
    3437    push    bx
    3538    call    AH8h_GetDriveParameters
    3639    pop     bx
     40    jmp     Int13h_ReturnWithoutSwappingDrives
     41
     42ALIGN JUMP_ALIGN
     43.GetDriveParametersForForeignHardDiskInDL:
     44    call    Int13h_CallPreviousInt13hHandler
     45    call    RamVars_GetCountOfKnownDrivesToDL
    3746    jmp     Int13h_ReturnWithoutSwappingDrives
    3847
     
    97106;       BX:     Number of L-CHS cylinders available (1...1024)
    98107;       DX:     Number of L-CHS heads (1...256)
     108;       DS:     RAMVARS segment
    99109;   Returns:
    100110;       CH:     Maximum cylinder number, bits 7...0
     
    111121    dec     dx                      ; Head count to max head number
    112122    mov     dh, dl                  ; Max head number to DH
    113     push    ax
    114     call    RamVars_GetDriveCounts  ; Hard disk count to CX
    115     pop     ax
    116     mov     dl, cl                  ; Hard disk count to DL
    117123    mov     ch, bl                  ; Cylinder bits 7...0 to CH
    118124    mov     cl, bh                  ; Cylinder bits 9...8 to CL
    119125    eROR_IM cl, 2                   ; Cylinder bits 9...8 to CL bits 7...6
    120126    or      cl, al                  ; Sectors per track to CL bits 5...0
    121     ret
     127    jmp     RamVars_GetCountOfKnownDrivesToDL
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/Common/HCapacity.asm

    r3 r32  
    22; Project name  :   IDE BIOS
    33; Created date  :   16.3.2010
    4 ; Last update   :   12.4.2010
     4; Last update   :   3.8.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Functions for hard disk capacity calculations.
     
    2626HCapacity_GetSectorCountFromForeignAH08h:
    2727    mov     ah, 08h         ; Get Drive Parameters
    28     int     INTV_DISK_FUNC
     28    call    Int13h_CallPreviousInt13hHandler
    2929    jmp     SHORT HCapacity_ConvertAH08hReturnValuesToSectorCount
    3030
Note: See TracChangeset for help on using the changeset viewer.