Ignore:
Timestamp:
May 9, 2012, 7:12:53 PM (12 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Addressing modes are now NORMAL, LARGE and LBA.
  • L-CHS parameters are now generated differently for drives with 8192 or less cylinders.
File:
1 edited

Legend:

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

    r376 r421  
    3838;--------------------------------------------------------------------
    3939AH48h_HandlerForGetExtendedDriveParameters:
    40     call    AccessDPT_GetPointerToDRVPARAMStoCSBX
    41     push    bx
    4240    call    AccessDPT_GetLbaSectorCountToBXDXAX
    43     pop     di          ; CS:DI now points to DRVPARAMS
    4441
    4542    ; Point DS:SI to Extended Drive Information Table to fill
     43    push    ds
     44    pop     es          ; DPT now in ES:DI
    4645    mov     ds, [bp+IDEPACK.intpack+INTPACK.ds]
    4746    mov     cx, MINIMUM_EDRIVEINFO_SIZE
     
    5150
    5251    ; We do not support EDD Configuration Parameters so set to FFFF:FFFFh
    53     mov     cx, -1      ; FFFFh
     52    sub     cx, BYTE MINIMUM_EDRIVEINFO_SIZE+1  ; CX => FFFFh
    5453    mov     [si+EDRIVE_INFO.fpEDDparams], cx
    5554    mov     [si+EDRIVE_INFO.fpEDDparams+2], cx
     
    5958.SkipEddConfigurationParameters:
    6059    mov     [si+EDRIVE_INFO.wSize], cx
    61     mov     WORD [si+EDRIVE_INFO.wFlags], FLG_DMA_BOUNDARY_ERRORS_HANDLED_BY_BIOS
     60    mov     WORD [si+EDRIVE_INFO.wFlags], FLG_DMA_BOUNDARY_ERRORS_HANDLED_BY_BIOS | FLG_CHS_INFORMATION_IS_VALID
    6261
    6362    ; Store total sector count
     
    6968    mov     WORD [si+EDRIVE_INFO.wSectorSize], 512
    7069
     70    ; Store P-CHS
     71    eMOVZX  dx, BYTE [es:di+DPT.bPchsHeads]
     72    xor     ax, ax                                  ; Also a return code
     73    mov     [si+EDRIVE_INFO.dwHeads], dx
     74    mov     [si+EDRIVE_INFO.dwHeads+2], ax
     75
     76    mov     dl, [es:di+DPT.bPchsSectorsPerTrack]
     77    mov     [si+EDRIVE_INFO.dwSectorsPerTrack], dx
     78    mov     [si+EDRIVE_INFO.dwSectorsPerTrack+2], ax
     79
     80    mov     dx, [es:di+DPT.wPchsCylinders]
     81    mov     [si+EDRIVE_INFO.dwCylinders], dx
     82    mov     [si+EDRIVE_INFO.dwCylinders+2], ax
     83
    7184.ReturnWithError:
    7285    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
Note: See TracChangeset for help on using the changeset viewer.