Changeset 150 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH0h_HReset.asm
- Timestamp:
- Apr 29, 2011, 7:04:13 PM (14 years ago)
- google:author:
- aitotat
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH0h_HReset.asm
r148 r150 13 13 ; If bit 7 is set all hard disks and floppy disks reset. 14 14 ; DS:DI: Ptr to DPT (in RAMVARS segment) 15 ; SS:BP: Ptr to I NTPACK16 ; Returns with INTPACK in SS:BP:15 ; SS:BP: Ptr to IDEPACK 16 ; Returns with INTPACK: 17 17 ; AH: Int 13h return status (from drive requested in DL) 18 18 ; CF: 0 if succesfull, 1 if error … … 89 89 90 90 ;-------------------------------------------------------------------- 91 ; ResetHardDisksHandledByOurBIOS91 ; AH0h_ResetHardDisksHandledByOurBIOS 92 92 ; Parameters: 93 93 ; BL: Requested drive (DL when entering AH=00h) 94 94 ; DS: RAMVARS segment 95 ; SS:BP: Ptr to IDEPACK 95 96 ; Returns: 96 97 ; BH: Error code from requested drive (if available) 97 98 ; Corrupts registers: 98 ; AX, CX, DX, DI99 ; AX, CX, DX, SI, DI 99 100 ;-------------------------------------------------------------------- 100 101 ALIGN JUMP_ALIGN … … 103 104 test dh, dh 104 105 jz SHORT .AllDrivesReset ; Return if no drives 105 mov dl, [RAMVARS.bFirstDrv] ; Load number of first ourdrive106 mov dl, [RAMVARS.bFirstDrv] ; Load number of our first drive 106 107 add dh, dl ; DH = one past last drive to reset 107 108 ALIGN JUMP_ALIGN … … 132 133 .BackupErrorCodeFromMasterOrSlaveToBH: 133 134 call BackupErrorCodeFromTheRequestedDriveToBH 134 mov cx, [RAMVARS.wIdeBase]; Load base port for resetted drive135 135 call GetBasePortToCX ; Load base port for resetted drive 136 push cx 136 137 inc dx ; DL to next drive 137 call FindDPT_ForDriveNumber ; Get DPT to DS:DI, store port to RAMVARS138 jnc SHORT .NoMoreDrivesOrNoSlaveDrive139 cmp cx, [RAMVARS.wIdeBase]; Next drive is from same controller?138 call GetBasePortToCX 139 pop di 140 cmp cx, di ; Next drive is from same controller? 140 141 je SHORT BackupErrorCodeFromTheRequestedDriveToBH 141 142 .NoMoreDrivesOrNoSlaveDrive: 142 143 dec dx 144 ret 145 146 ;-------------------------------------------------------------------- 147 ; GetBasePortToCX 148 ; Parameters: 149 ; DL: Drive number 150 ; DS: RAMVARS segment 151 ; Returns: 152 ; CX: Base port address 153 ; CF: Set if valid drive number 154 ; Cleared if invalid drive number 155 ; Corrupts registers: 156 ; DI 157 ;-------------------------------------------------------------------- 158 ALIGN JUMP_ALIGN 159 GetBasePortToCX: 160 xchg cx, bx 161 xor bx, bx 162 call FindDPT_ForDriveNumber 163 jnc SHORT .DptNotFound 164 mov bl, [di+DPT.bIdevarsOffset] 165 mov bx, [cs:bx+IDEVARS.wPort] 166 .DptNotFound: 167 xchg bx, cx 143 168 ret 144 169
Note:
See TracChangeset
for help on using the changeset viewer.