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


Ignore:
Timestamp:
Mar 28, 2013, 1:36:23 PM (12 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • AT builds again copy old INT 13h handler to 40h. It turned out it is needed, by XTIDE Universal BIOS at least (fixes disappearing floppy drive hotkey button when booting starts).
  • AH=48h no longer returns P-CHS parameteres for drives with more than 15,482,880 sectors (now works like described on Phoenix specification).
File:
1 edited

Legend:

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

    r526 r530  
    5858.SkipEddConfigurationParameters:
    5959    mov     [si+EDRIVE_INFO.wSize], cx
    60     mov     WORD [si+EDRIVE_INFO.wFlags], FLG_DMA_BOUNDARY_ERRORS_HANDLED_BY_BIOS | FLG_CHS_INFORMATION_IS_VALID
     60    mov     WORD [si+EDRIVE_INFO.wFlags], FLG_DMA_BOUNDARY_ERRORS_HANDLED_BY_BIOS
    6161
    6262    ; Store total sector count
    6363    mov     [si+EDRIVE_INFO.qwTotalSectors], ax
    64     xor     ax, ax                                  ; Return with success
    6564    mov     [si+EDRIVE_INFO.qwTotalSectors+2], dx
    6665    mov     [si+EDRIVE_INFO.qwTotalSectors+4], bx
    67     mov     [si+EDRIVE_INFO.qwTotalSectors+6], ax   ; Always zero
     66    xor     cx, cx
     67    mov     [si+EDRIVE_INFO.qwTotalSectors+6], cx   ; Always zero
    6868    mov     WORD [si+EDRIVE_INFO.wSectorSize], 512
    6969
    70     ; Store P-CHS
     70    ; Store P-CHS. Based on phoenix specification this is returned only if
     71    ; total sector count is 15,482,880 or less.
     72    sub     ax, 4001h
     73    sbb     dx, 0ECh
     74    sbb     bx, cx      ; Zero
     75    jnc     SHORT .ReturnWithSuccess    ; More than EC4000h
     76    or      WORD [si+EDRIVE_INFO.wFlags], FLG_CHS_INFORMATION_IS_VALID
     77
    7178    eMOVZX  dx, BYTE [es:di+DPT.bPchsHeads]
    72     xor     ax, ax                                  ; Also a return code
    7379    mov     [si+EDRIVE_INFO.dwHeads], dx
    74     mov     [si+EDRIVE_INFO.dwHeads+2], ax
     80    mov     [si+EDRIVE_INFO.dwHeads+2], cx
    7581
    7682    mov     dl, [es:di+DPT.bPchsSectorsPerTrack]
    7783    mov     [si+EDRIVE_INFO.dwSectorsPerTrack], dx
    78     mov     [si+EDRIVE_INFO.dwSectorsPerTrack+2], ax
     84    mov     [si+EDRIVE_INFO.dwSectorsPerTrack+2], cx
    7985
    8086    mov     dx, [es:di+DPT.wPchsCylinders]
    8187    mov     [si+EDRIVE_INFO.dwCylinders], dx
    82     mov     [si+EDRIVE_INFO.dwCylinders+2], ax
     88    mov     [si+EDRIVE_INFO.dwCylinders+2], cx
    8389
     90.ReturnWithSuccess:
     91    xor     ax, ax
    8492.ReturnWithError:
    8593    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
Note: See TracChangeset for help on using the changeset viewer.