Changeset 363 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeDPT.asm
- Timestamp:
- Mar 26, 2012, 4:20:43 PM (13 years ago)
- google:author:
- aitotat@gmail.com
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeDPT.asm
r361 r363 14 14 ; CF: Clear, IDE interface only supports hard disks 15 15 ; Corrupts registers: 16 ; AX 16 ; AX, BX, CX, DX 17 17 ;-------------------------------------------------------------------- 18 18 IdeDPT_Finalize: 19 ; Fall to .StoreBlockMode20 19 21 20 ;-------------------------------------------------------------------- … … 34 33 mov ah, [es:si+ATA1.bBlckSize] ; Max block size in sectors 35 34 mov [di+DPT_ATA.wSetAndMaxBlock], ax 36 ; Fall to IdeDPT_StoreReversedAddressLinesFlagIfNecessary 35 36 %ifdef MODULE_ADVANCED_ATA 37 ;-------------------------------------------------------------------- 38 ; .StoreDeviceType 39 ; Parameters: 40 ; DS:DI: Ptr to Disk Parameter Table 41 ; ES:SI: Ptr to 512-byte ATA information read from the drive 42 ; CS:BP: Ptr to IDEVARS for the controller 43 ; Returns: 44 ; Nothing 45 ; Corrupts registers: 46 ; Nothing 47 ;-------------------------------------------------------------------- 48 .StoreDeviceType: 49 call IdeDPT_StoreDeviceTypeFromIdevarsInCSBPtoDPTinDSDI 50 51 ;-------------------------------------------------------------------- 52 ; .StorePioModeAndTimings 53 ; Parameters: 54 ; DS:DI: Ptr to Disk Parameter Table 55 ; ES:SI: Ptr to 512-byte ATA information read from the drive 56 ; CS:BP: Ptr to IDEVARS for the controller 57 ; Returns: 58 ; Nothing 59 ; Corrupts registers: 60 ; AX, CX, DX 61 ;-------------------------------------------------------------------- 62 .StorePioMode: 63 call AtaID_GetMaxPioModeToAXandMinCycleTimeToDX 64 call AtaID_ConvertPioModeFromAXandMinCycleTimeFromDXtoActiveAndRecoveryTime 65 mov [di+DPT_ATA.bPioMode], al 66 mov [di+DPT_ADVANCED_ATA.wMinPioActiveTimeNs], cx 67 mov [di+DPT_ADVANCED_ATA.wMinPioRecoveryTimeNs], dx 68 69 ;-------------------------------------------------------------------- 70 ; .DetectAdvancedIdeController 71 ; Parameters: 72 ; DS:DI: Ptr to Disk Parameter Table 73 ; ES:SI: Ptr to 512-byte ATA information read from the drive 74 ; CS:BP: Ptr to IDEVARS for the controller 75 ; Returns: 76 ; Nothing 77 ; Corrupts registers: 78 ; AX, BX, CX, DX 79 ;-------------------------------------------------------------------- 80 .DetectAdvancedIdeController: 81 mov dx, [cs:bp+IDEVARS.wPort] 82 mov [di+DPT_ADVANCED_ATA.wIdeBasePort], dx 83 call AdvAtaInit_DetectControllerForIdeBaseInDX 84 mov [di+DPT_ADVANCED_ATA.wControllerID], ax ; Store zero if none detected 85 mov [di+DPT_ADVANCED_ATA.wControllerBasePort], cx 86 jnc SHORT .NoAdvancedControllerDetected 87 88 ; Use highest common PIO mode from controller and drive. 89 ; Many VLB controllers support PIO modes up to 2. 90 call AdvAtaInit_GetControllerMaxPioModeToAL 91 jnc SHORT .ChangeTo32bitDevice 92 MIN_U [di+DPT_ATA.bPioMode], al 93 94 ; We have detected 32-bit controller so change Device Type since 95 ; it might have been set to 16-bit on IDEVARS 96 .ChangeTo32bitDevice: 97 mov BYTE [di+DPT_ATA.bDevice], DEVICE_32BIT_ATA 98 99 .NoAdvancedControllerDetected: 100 101 %endif ; MODULE_ADVANCED_ATA 37 102 38 103 ;-------------------------------------------------------------------- … … 42 107 ; CS:BP: Ptr to IDEVARS for the controller 43 108 ; Returns: 44 ; CF: Always clear , we don't support floppies on the IDE inteface109 ; CF: Always clear 45 110 ; Corrupts registers: 46 111 ; Nothing … … 53 118 .SetFlagForSwappedA0andA3: 54 119 or BYTE [di+DPT.bFlagsHigh], FLGH_DPT_REVERSED_A0_AND_A3 55 56 120 .EndDPT: 57 121 clc 58 122 ret 123 124 125 %ifdef MODULE_ADVANCED_ATA 126 ;-------------------------------------------------------------------- 127 ; IdeDPT_StoreDeviceTypeFromIdevarsInCSBPtoDPTinDSDI 128 ; Parameters: 129 ; DS:DI: Ptr to Disk Parameter Table 130 ; CS:BP: Ptr to IDEVARS for the controller 131 ; Returns: 132 ; Nothing 133 ; Corrupts registers: 134 ; AL 135 ;-------------------------------------------------------------------- 136 IdeDPT_StoreDeviceTypeFromIdevarsInCSBPtoDPTinDSDI: 137 mov al, [cs:bp+IDEVARS.bDevice] 138 mov [di+DPT_ATA.bDevice], al 139 ret 140 %endif
Note:
See TracChangeset
for help on using the changeset viewer.