Changeset 279 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Device


Ignore:
Timestamp:
Feb 28, 2012, 4:20:48 PM (13 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Drive internal write cache is now disabled by default.
  • Fixed a bug where IDE Master/Slave Drive selection returned error if previous IDE command set a ABRT flag in error register.
File:
1 edited

Legend:

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

    r276 r279  
    156156.DriveNotReady:
    157157    pop     bx                          ; Clean stack
    158 IDEDEVICE%+ReturnSinceTimeoutWhenPollingBusy:
    159158    ret
    160159
     
    173172ALIGN JUMP_ALIGN
    174173IDEDEVICE%+Command_SelectDrive:
    175     ; Wait until neither Master or Slave Drive is busy
    176     mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_BSY, FLG_STATUS_BSY)
    177     cmp     BYTE [bp+IDEPACK.bCommand], COMMAND_IDENTIFY_DEVICE
    178     eCMOVE  bh, TIMEOUT_IDENTIFY_DEVICE
    179     call    IDEDEVICE%+Wait_PollStatusFlagInBLwithTimeoutInBH
    180     jc      SHORT IDEDEVICE%+ReturnSinceTimeoutWhenPollingBusy
     174    ; Wait until neither Master or Slave Drive is busy.
     175    ; I don't think this wait is necessary.
     176    ;mov        bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_BSY, FLG_STATUS_BSY)
     177    ;cmp        BYTE [bp+IDEPACK.bCommand], COMMAND_IDENTIFY_DEVICE
     178    ;eCMOVE bh, TIMEOUT_IDENTIFY_DEVICE
     179    ;call   IDEDEVICE%+Wait_PollStatusFlagInBLwithTimeoutInBH
    181180
    182181    ; Select Master or Slave Drive
     
    186185    cmp     BYTE [bp+IDEPACK.bCommand], COMMAND_IDENTIFY_DEVICE
    187186    eCMOVE  bh, TIMEOUT_IDENTIFY_DEVICE
    188     jmp     IDEDEVICE%+Wait_PollStatusFlagInBLwithTimeoutInBH
     187    call    IDEDEVICE%+Wait_PollStatusFlagInBLwithTimeoutInBH
     188    jc      SHORT .ErrorWhenSelectingMasterOrSlave
     189    ret
     190
     191    ; Ignore previously unsupported command (for example some SET FEATURES subcommand)
     192.ErrorWhenSelectingMasterOrSlave:
     193    sub     ah, 1                           ; Clear CF
     194    jz      SHORT .IgnoreABRTerror          ; RET_HD_INVALID == 1
     195    inc     ah
     196    stc                                     ; Restore error
     197.IgnoreABRTerror:
     198    ret
    189199
    190200
Note: See TracChangeset for help on using the changeset viewer.