Changeset 618 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src
- Timestamp:
- Aug 31, 2021, 2:17:47 PM (3 years ago)
- Location:
- trunk/XTIDE_Universal_BIOS/Src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeDPT.asm
r616 r618 43 43 ; Nothing 44 44 ; Corrupts registers: 45 ; A L45 ; AX 46 46 ;-------------------------------------------------------------------- 47 47 .DetectPowerManagementSupport: 48 mov al, [es:si+ATA6.wSetSup82] 49 mov ah, [es:si+ATA6.wSetSup83] 50 and ah, A6_wSetSup83_APM 51 shl ah, 1 ; APM bit 3 to bit 4 52 and al, A6_wSetSup82_POWERMAN ; A6_wSetSup82_POWERMAN (bit 3) is the same 48 mov ax, A6_wSetSup83_APM << 8 | A6_wSetSup82_POWERMAN ; Both of these flags are bit 3 49 and ah, [es:si+ATA6.wSetSup83] 50 and al, [es:si+ATA6.wSetSup82] 51 eSHL_IM ah, 1 ; APM bit 3 to bit 4 (same as FLGH_DPT_APM_SUPPORTED) 53 52 or al, ah 54 or [di+DPT.bFlagsHigh], al ; bit asFLGH_DPT_POWER_MANAGEMENT_SUPPORTED and FLGH_DPT_APM_SUPPORTED53 or [di+DPT.bFlagsHigh], al ; FLGH_DPT_POWER_MANAGEMENT_SUPPORTED and FLGH_DPT_APM_SUPPORTED 55 54 %endif ; MODULE_POWER_MANAGEMENT 56 55 … … 118 117 cmp BYTE [di+DPT_ATA.bDevice], DEVICE_32BIT_ATA 119 118 ja SHORT .NoAdvancedControllerDetected 120 119 121 120 mov bx, [di+DPT.wBasePort] 122 121 call AdvAtaInit_DetectControllerForIdeBaseInBX -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h.asm
r596 r618 250 250 pop WORD [RAMVARS.xlateVars+XLATEVARS.wFDandHDswap] 251 251 cmp dl, [RAMVARS.xlateVars+XLATEVARS.bXlatedDrv] ; DL is still drive number? 252 je SHORT Int13h_ReturnFromHandler AfterStoringErrorCodeFromAH252 je SHORT Int13h_ReturnFromHandlerWithoutStoringErrorCode 253 253 mov [bp+IDEPACK.intpack+INTPACK.dl], dl ; Something is returned in DL 254 254 %endif 255 jmp SHORT Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 255 jmp SHORT Int13h_ReturnFromHandlerWithoutStoringErrorCode 256 ; We cannot return via Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH! 257 ; 1. If the other BIOS returns something in DL then that is assumed to be a drive number 258 ; (if MODULE_SERIAL_FLOPPY is included) even though it could be anything. 259 ; 2. Any non-zero value in AH will cause the CF to be set on return from the handler. 260 ; This breaks INT 13h/AH=15h for drives handled by the other BIOS. 256 261 257 262 -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH23h_HFeatures.asm
r615 r618 106 106 ; Enable/disable advanced power management command can be used to scale 107 107 ; power consumption and performance. Drive supporting Enable APM might not 108 ; support Disable A MPso we set the drive to max performance if stand by108 ; support Disable APM so we set the drive to max performance if stand by 109 109 ; timer value is 0 (idle/standby disabled) 110 110 ; … … 126 126 test dl, dl 127 127 jnz SHORT .EnablePowerSave 128 dec dx 129 dec dx ; DL = FEh = Maximum performance 130 jmp AH23h_SetControllerFeatures 131 128 mov dl, 0FEh ; Maximum performance 129 SKIP2B f 130 132 131 ; TODO: We should add power management level to IDEVARS to be adjustable with xtidecfg 133 132 .EnablePowerSave: 134 133 mov dl, 0BFh ; For Toshiba 1.8" HDD: 80h...BFh = Mode 1 135 jmp AH23h_SetControllerFeatures136 %endif ; %ifdefMODULE_POWER_MANAGEMENT134 jmp SHORT AH23h_SetControllerFeatures 135 %endif ; MODULE_POWER_MANAGEMENT -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH4h_HVerify.asm
r617 r618 65 65 ; Parameters: 66 66 ; AH: INT 13h error code 67 ; CX: Number of sectors that was meant to we verified67 ; CX: Number of sectors that was meant to be verified 68 68 ; DS:DI: Ptr to DPT (in RAMVARS segment) 69 69 ; SS:BP: Ptr to IDEPACK … … 74 74 ALIGN JUMP_ALIGN 75 75 AH4h_CalculateNumberOfSuccessfullyVerifiedSectors: 76 xchg cx, ax ; Store error code to CL76 xchg cx, ax ; Store error code to CH 77 77 call Device_ReadLBAlowRegisterToAL 78 mov ah, [bp+IDEPACK.bLbaLow] 79 sub al, ah ; AL = sector address with verify failure - starting sector address 78 sub al, [bp+IDEPACK.bLbaLow] ; AL = sector address with verify failure - starting sector address 80 79 xor ah, ah 81 xchg cx, ax ; Number of successfully verified sectors in CX, error code in AH80 xchg cx, ax ; Number of successfully verified sectors in CX, error code in AH 82 81 stc 83 82 ret -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH9h_HInit.asm
r616 r618 204 204 mov dl, [cs:ROMVARS.bIdleTimeout] 205 205 push dx 206 push dx207 206 test dh, FLGH_DPT_APM_SUPPORTED 208 207 jz SHORT .NoAdvancedPowerManagementSupport … … 213 212 ; COMMAND_STAND_BY seemed to do the trick 214 213 pop dx 214 push dx 215 215 mov al, COMMAND_STAND_BY 216 216 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_BSY, FLG_STATUS_BSY) -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH44h_ExtendedVerifySectors.asm
r617 r618 41 41 AH44h_HandlerForExtendedVerifySectors: 42 42 call Prepare_ByLoadingDapToESSIandVerifyingForTransfer 43 push WORD [es:si+DAP.wSectorCount] ; Store for successful lnumber of sectors transferred43 push WORD [es:si+DAP.wSectorCount] ; Store for successful number of sectors transferred 44 44 mov ah, [cs:bx+g_rgbVerifyCommandLookup] 45 45 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRDY) -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/Tools/Address.asm
r592 r618 39 39 mov bl, 3Fh ; Load sector number mask 40 40 and bl, cl ; Sector number now in BL 41 %ifndef USE_186 41 42 sub cl, bl ; Remove from cylinder number high 42 eROL_IM cl, 2 ; High bits to beginning 43 rol cl, 1 ; High bits to beginning 44 rol cl, 1 45 %else 46 shr cl, 6 47 %endif 43 48 mov bh, dh ; Copy Head number 44 49 xchg cl, ch ; Cylinder number now in CX -
trunk/XTIDE_Universal_BIOS/Src/Initialization/AtaID.asm
r614 r618 49 49 50 50 ; Only correct cylinders since there are no reports that head or sectors could be wrong 51 MIN_U WORD [es:si+ATA1.wCylCnt], MAX_PCHS_CYLINDERS ; Limit to max allowed value 51 mov cx, MAX_PCHS_CYLINDERS 52 MIN_U [es:si+ATA1.wCylCnt], cx ; Limit to max allowed value 52 53 53 54 ; Note! There are ATA ID words 54-58 that also need to be modified! However,
Note:
See TracChangeset
for help on using the changeset viewer.