Changeset 221 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Device/Idepack.asm


Ignore:
Timestamp:
Jan 25, 2012, 2:36:47 PM (12 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • AH=0Ch (Seek) should work properly again.
  • More than 127 sectors are no longer allowed for EBIOS functions.
  • Changed location for BOOTNFO structs.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Device/Idepack.asm

    r218 r221  
    2525;   Parameters:
    2626;       AH:     IDE command to issue
     27;       AL:     Number of sectors to transfer (for xfer commands)
    2728;       BH:     Timeout ticks
    2829;       BL:     IDE Status Register flag to wait after command
     
    3940ALIGN JUMP_ALIGN
    4041Idepack_ConvertDapToIdepackAndIssueCommandFromAH:
     42    mov     [bp+IDEPACK.bSectorCount], al
    4143    mov     [bp+IDEPACK.bCommand], ah
    42     mov     al, [es:si+DAP.bSectorCount]
    43     mov     [bp+IDEPACK.bSectorCount], al
    4444
    4545    mov     al, [es:si+DAP.qwLBA]       ; LBA byte 0
     
    5656    or      al, ah
    5757    mov     [bp+IDEPACK.bDrvAndHead], al
    58     les     si, [es:si+DAP.dwMemoryAddress]
     58
     59    ; Normalize data buffer pointer to ES:SI
     60    mov     ax, [es:si+DAP.dwMemoryAddress]     ; Load offset
     61    mov     cx, ax
     62    eSHR_IM ax, 4                               ; Divide offset by 16
     63    add     ax, [es:si+DAP.dwMemoryAddress+2]   ; Add segment
     64    mov     es, ax                              ; Segment normalized
     65    mov     si, cx
     66    and     si, BYTE 0Fh                        ; Offset normalized
    5967    jmp     SHORT GetDeviceControlByteToIdepackAndStartTransfer
    6068%endif
     
    6573;   Parameters:
    6674;       AH:     IDE command to issue
    67 ;       AL:     Number of sectors to transfer
     75;       AL:     Number of sectors to transfer (for xfer commands)
    6876;       BH:     Timeout ticks
    6977;       BL:     IDE Status Register flag to wait after command
     
    7381;       DH:     Starting head number (0...255)
    7482;       DS:DI:  Ptr to DPT (in RAMVARS segment)
     83;       ES:SI:  Ptr to normalized data buffer (for xfer commands)
    7584;       SS:BP:  Ptr to IDEPACK (containing INTPACK)
    76 ;   Parameters on INTPACK:
    77 ;       ES:BX:  Ptr to data buffer
    7885;   Returns:
    7986;       AH:     INT 13h Error Code
     
    8895
    8996    push    bx
    90     call    PrepareBuffer_ToESSIforOldInt13hTransfer
    9197    call    Address_OldInt13hAddressToIdeAddress
    9298    call    AccessDPT_GetDriveSelectByteToAL
Note: See TracChangeset for help on using the changeset viewer.