Changeset 400 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeWait.asm


Ignore:
Timestamp:
Apr 20, 2012, 2:30:16 PM (12 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Moved 8-bit device support to MODULE_8BIT_IDE.
  • JR-IDE/ISA support requires a lot less bytes.
  • AT builds now always use full operating mode.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeWait.asm

    r398 r400  
    3232;       AL, BX, CX, DX
    3333;--------------------------------------------------------------------
    34 IDEDEVICE%+Wait_IRQorDRQ:
     34IdeWait_IRQorDRQ:
    3535    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ)
    36 %ifdef ASSEMBLE_SHARED_IDE_DEVICE_FUNCTIONS     ; JR-IDE/ISA does not support IRQ
     36
     37%ifdef MODULE_IRQ
    3738    test    BYTE [bp+IDEPACK.bDeviceControl], FLG_DEVCONTROL_nIEN
    38     jnz     SHORT IDEDEVICE%+Wait_PollStatusFlagInBLwithTimeoutInBH ; Interrupt disabled
     39    jnz     SHORT IdeWait_PollStatusFlagInBLwithTimeoutInBH ; Interrupt disabled
    3940%endif
    4041    ; Fall to IdeWait_IRQorStatusFlagInBLwithTimeoutInBH
     
    5354;       AL, BX, CX, DX
    5455;--------------------------------------------------------------------
    55 IDEDEVICE%+Wait_IRQorStatusFlagInBLwithTimeoutInBH:
    56 %ifdef ASSEMBLE_SHARED_IDE_DEVICE_FUNCTIONS     ; JR-IDE/ISA does not support IRQ
    57     %ifdef MODULE_IRQ
    58         call    IdeIrq_WaitForIRQ
    59     %endif
     56IdeWait_IRQorStatusFlagInBLwithTimeoutInBH:
     57%ifdef MODULE_IRQ
     58    call    IdeIrq_WaitForIRQ
    6059%endif
    6160    ; Always fall to IdeWait_PollStatusFlagInBLwithTimeoutInBH for error processing
     
    7473;       AL, BX, CX, DX
    7574;--------------------------------------------------------------------
    76 IDEDEVICE%+Wait_PollStatusFlagInBLwithTimeoutInBH:
     75IdeWait_PollStatusFlagInBLwithTimeoutInBH:
    7776    mov     ah, bl
    7877    mov     cl, bh
    7978    call    Timer_InitializeTimeoutWithTicksInCL
    8079    and     ah, ~FLG_STATUS_BSY
    81     jz      SHORT IDEDEVICE%+PollBsyOnly
     80    jz      SHORT PollBsyOnly
    8281    ; Fall to PollBsyAndFlgInAH
    8382
     
    9493;       AL, BX, CX, DX
    9594;--------------------------------------------------------------------
    96 IDEDEVICE%+PollBsyAndFlgInAH:
    97     INPUT_TO_AL_FROM_IDE_REGISTER   STATUS_REGISTER_in  ; Discard contents for first read
    98 ALIGN JUMP_ALIGN
     95IdePollBsyAndFlgInAH:
     96    call    IdeIO_InputStatusRegisterToAL       ; Discard contents of first read
     97
    9998.PollLoop:
    100     INPUT_TO_AL_FROM_IDE_REGISTER   STATUS_REGISTER_in
     99    call    IdeIO_InputStatusRegisterToAL
    101100    test    al, FLG_STATUS_BSY                  ; Controller busy?
    102101    jnz     SHORT .UpdateTimeout                ;  If so, jump to timeout update
    103102    test    al, ah                              ; Test secondary flag
    104     jnz     SHORT IDEDEVICE%+Error_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
     103    jnz     SHORT IdeError_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
    105104.UpdateTimeout:
    106105    call    Timer_SetCFifTimeout
    107106    jnc     SHORT .PollLoop                     ; Loop if time left
    108     call    IDEDEVICE%+Error_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
     107    call    IdeError_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
    109108    jc      SHORT .ReturnErrorCodeInAH
    110109    mov     ah, RET_HD_TIMEOUT                  ; Expected bit never got set
     
    125124;       AL, BX, CX, DX
    126125;--------------------------------------------------------------------
    127 IDEDEVICE%+PollBsyOnly:
    128     INPUT_TO_AL_FROM_IDE_REGISTER   STATUS_REGISTER_in  ; Discard contents for first read
    129 ALIGN JUMP_ALIGN
     126PollBsyOnly:
     127    call    IdeIO_InputStatusRegisterToAL       ; Discard contents of first read
     128
    130129.PollLoop:
    131     INPUT_TO_AL_FROM_IDE_REGISTER   STATUS_REGISTER_in
     130    call    IdeIO_InputStatusRegisterToAL
    132131    test    al, FLG_STATUS_BSY                  ; Controller busy?
    133     jz      SHORT IDEDEVICE%+Error_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
     132    jz      SHORT IdeError_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
    134133    call    Timer_SetCFifTimeout                ; Update timeout counter
    135134    jnc     SHORT .PollLoop                     ; Loop if time left (sets CF on timeout)
    136     jmp     SHORT IDEDEVICE%+Error_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
     135    jmp     SHORT IdeError_GetBiosErrorCodeToAHfromPolledStatusRegisterInAL
Note: See TracChangeset for help on using the changeset viewer.