Changeset 566 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src
- Timestamp:
- Aug 29, 2013, 12:49:15 AM (11 years ago)
- google:author:
- krille_n_@hotmail.com
- Location:
- trunk/XTIDE_Universal_BIOS/Src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeError.asm
r526 r566 55 55 ALIGN JUMP_ALIGN 56 56 GetBiosErrorCodeToAHfromStatusAndErrorRegistersInAX: 57 test al, FLG_STATUS_BSY 58 jz SHORT .CheckErrorBitsFromStatusRegisterInAL 59 mov ah, RET_HD_TIMEOUT 60 jmp SHORT .ReturnBiosErrorCodeInAH 57 test al, FLG_STATUS_BSY | FLG_STATUS_DF | FLG_STATUS_CORR | FLG_STATUS_ERR ; Clears CF 58 jnz SHORT .CheckErrorBitsFromStatusRegisterInAL 59 ; The MSB of AL (FLG_STATUS_BSY) is cleared at this point. 60 cbw ; No errors, zero AH (CF already cleared) 61 ret 61 62 62 63 ALIGN JUMP_ALIGN 63 64 .CheckErrorBitsFromStatusRegisterInAL: 64 test al, FLG_STATUS_DF | FLG_STATUS_CORR | FLG_STATUS_ERR 65 jnz SHORT .ProcessErrorFromStatusRegisterInAL 66 xor ah, ah ; No errors, zero AH and CF 67 ret 68 69 .ProcessErrorFromStatusRegisterInAL: 65 js SHORT .Flg_Status_Bsy ; Jump if FLG_STATUS_BSY 70 66 test al, FLG_STATUS_ERR ; Error specified in Error register? 71 67 jnz SHORT .ConvertBiosErrorToAHfromErrorRegisterInAH … … 74 70 jnz SHORT .ReturnBiosErrorCodeInAH 75 71 mov ah, RET_HD_CONTROLLER ; Must be Device Fault 76 jmp SHORT .ReturnBiosErrorCodeInAH 72 SKIP2B bx 73 .Flg_Status_Bsy: 74 mov ah, RET_HD_TIMEOUT 75 .ReturnBiosErrorCodeInAH: 76 stc 77 ret 77 78 78 79 .ConvertBiosErrorToAHfromErrorRegisterInAH: 79 xor bx, bx ; Clear CF 80 stc ; Needed in case Error register (AH) is zero 81 mov bx, .rgbRetCodeLookup-1 80 82 .ErrorBitLoop: 81 rcr ah, 1 ; Set CF if error bit set82 jc SHORT .LookupErrorCode83 83 inc bx 84 test ah, ah ; Clear CF 85 jnz SHORT .ErrorBitLoop 86 .LookupErrorCode: 87 mov ah, [cs:bx+.rgbRetCodeLookup] 88 .ReturnBiosErrorCodeInAH: 89 stc ; Set CF since error 84 rcr ah, 1 85 jnc SHORT .ErrorBitLoop ; CF will be set eventually 86 mov ah, [cs:bx] 90 87 ret 88 91 89 92 90 .rgbRetCodeLookup: -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH9h_HInit.asm
r558 r566 106 106 jc .ReturnWithErrorCodeInAH 107 107 %else 108 jnc SHORT .ContinueInitializationSinceDriveSelectedSucces fully108 jnc SHORT .ContinueInitializationSinceDriveSelectedSuccessfully 109 109 jmp .ReturnWithErrorCodeInAH 110 .ContinueInitializationSinceDriveSelectedSucces fully:110 .ContinueInitializationSinceDriveSelectedSuccessfully: 111 111 %endif 112 112 -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13hBiosInit.asm
r561 r566 28 28 ; Int 13h software interrupt handler. 29 29 ; This handler captures boot sector read from foreign drive when our 30 ; INT 19h is not called. This way we can for XTIDE Universal BIOS30 ; INT 19h is not called. This way we can force XTIDE Universal BIOS 31 31 ; initialization even without INT 19h being called. 32 32 ; -
trunk/XTIDE_Universal_BIOS/Src/Initialization/AdvancedAta/Vision.asm
r564 r566 179 179 test al, FLG_QDCONTROL_HDONLY_in 180 180 eCMOVNZ ah, FLG_QDCONTROL_NONATAPI ; Enable Read-Ahead and Post-Write Buffers 181 or ah, MASK_QDCONTROL_FLAGS_TO_SET182 181 mov al, ah 182 or al, MASK_QDCONTROL_FLAGS_TO_SET 183 183 out dx, al 184 184 sub dx, BYTE QD6580_CONTROL_REGISTER … … 187 187 ; QD6500 has only one channel that can be Primary at 1F0h or Secondary at 170h. 188 188 ; QD6580 always has Primary channel at 1F0h. Secondary channel at 170h can be Enabled or Disabled. 189 mov bx, [di+DPT.wBasePort] 190 cmp bx, DEVICE_ATA_PRIMARY_PORT 189 cmp WORD [di+DPT.wBasePort], DEVICE_ATA_PRIMARY_PORT 191 190 je SHORT .CalculateTimingTicksForQD6580 ; Primary Channel so no need to modify DX 192 191 times 2 inc dx ; Secondary Channel IDE Timing Register … … 216 215 217 216 ; Merge the values to a single byte to output 218 eSH IFT_IM al, POSITON_QD65XXIDE_RECOVERY_TIME, shl217 eSHL_IM al, POSITION_QD65XXIDE_RECOVERY_TIME 219 218 or al, bl 220 219 out dx, al
Note:
See TracChangeset
for help on using the changeset viewer.