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/AH9h_HInit.asm

    r410 r421  
    9999;;; SelectDrive
    100100    ; Try to select drive and wait until ready
    101     call    AccessDPT_GetDriveSelectByteToAL
     101    call    AccessDPT_GetDriveSelectByteForOldInt13hToAL
    102102    mov     [bp+IDEPACK.bDrvAndHead], al
    103103    call    Device_SelectDrive
     
    109109
    110110;;; InitializeDeviceParameters
    111     ; Initialize CHS parameters if LBA is not used
    112     test    BYTE [di+DPT.bFlagsLow], FLG_DRVNHEAD_LBA
     111    ; Initialize CHS parameters if LBA is not used and
     112    ; user has specified P-CHS parameters
     113    test    BYTE [di+DPT.bFlagsLow], FLGL_DPT_ASSISTED_LBA
    113114    jnz     SHORT .SkipInitializeDeviceParameters       ; No need to initialize CHS parameters if LBA mode enabled
     115    call    AccessDPT_GetPointerToDRVPARAMStoCSBX
     116    test    BYTE [cs:bx+DRVPARAMS.wFlags], FLG_DRVPARAMS_USERCHS    ; User specified P-CHS?
     117    jz      SHORT .SkipInitializeDeviceParameters
    114118
    115119    ; Initialize Logical Sectors per Track and Max Head number
    116     mov     ah, [di+DPT.bPchsHeads]
    117     dec     ah                          ; Max Head number
    118     mov     dl, [di+DPT.bPchsSectors]   ; Sectors per Track
     120    mov     ax, [cs:bx+DRVPARAMS.wHeadsAndSectors]
     121    dec     ax                          ; Max Head number
     122    xchg    al, ah                      ; Heads now in AH
     123    mov     dx, ax                      ; Sectors per Track now in DL
    119124    mov     al, COMMAND_INITIALIZE_DEVICE_PARAMETERS
    120125    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_BSY, FLG_STATUS_BSY)
Note: See TracChangeset for help on using the changeset viewer.