Rev 593 | Rev 2288 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 593 | Rev 1276 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 593 $ |
8 | $Revision: 1276 $ |
9 | 9 | ||
10 | 10 | ||
Line 70... | Line 70... | ||
70 | shl byte [DRIVE_DATA+1],2 |
70 | shl byte [DRIVE_DATA+1],2 |
71 | ret |
71 | ret |
Line 72... | Line 72... | ||
72 | 72 | ||
- | 73 | ||
73 | 74 | ; Àäðåñ ñ÷èòûâàåìîãî ñåêòîðà â ðåæèìå LBA |
|
74 | ; Àäðåñ ñ÷èòûâàåìîãî ñåêòîðà â ðåæèìå LBA |
75 | uglobal |
75 | SectorAddress DD ? |
76 | SectorAddress DD ? |
76 | 77 | endg |
|
77 | ;************************************************* |
78 | ;************************************************* |
78 | ;* ×ÒÅÍÈÅ ÈÄÅÍÒÈÔÈÊÀÒÎÐÀ ÆÅÑÒÊÎÃÎ ÄÈÑÊÀ * |
79 | ;* ×ÒÅÍÈÅ ÈÄÅÍÒÈÔÈÊÀÒÎÐÀ ÆÅÑÒÊÎÃÎ ÄÈÑÊÀ * |
79 | ;* Âõîäíûå ïàðàìåòðû ïåðåäàþòñÿ ÷åðåç ãëîáàëüíûå * |
80 | ;* Âõîäíûå ïàðàìåòðû ïåðåäàþòñÿ ÷åðåç ãëîáàëüíûå * |
Line 97... | Line 98... | ||
97 | add DX,7 ;àäðåñ ðåãèñòðà ñîñòîÿíè |
98 | add DX,7 ;àäðåñ ðåãèñòðà ñîñòîÿíè |
98 | mov ecx,0xffff |
99 | mov ecx,0xffff |
99 | @@WaitCompleet: |
100 | @@WaitCompleet: |
100 | ; Ïðîâåðèòü âðåìÿ âûïîëíåíèÿ êîìàíäû |
101 | ; Ïðîâåðèòü âðåìÿ âûïîëíåíèÿ êîìàíäû |
101 | dec ecx |
102 | dec ecx |
102 | cmp ecx,0 |
103 | ; cmp ecx,0 |
103 | je @@Error1 ;îøèáêà òàéì-àóòà |
104 | jz @@Error1 ;îøèáêà òàéì-àóòà |
104 | ; Ïðîâåðèòü ãîòîâíîñòü |
105 | ; Ïðîâåðèòü ãîòîâíîñòü |
105 | in AL,DX |
106 | in AL,DX |
106 | test AL,80h ;ñîñòîÿíèå ñèãíàëà BSY |
107 | test AL,80h ;ñîñòîÿíèå ñèãíàëà BSY |
107 | jnz @@WaitCompleet |
108 | jnz @@WaitCompleet |
108 | test AL,1 ;ñîñòîÿíèå ñèãíàëà ERR |
109 | test AL,1 ;ñîñòîÿíèå ñèãíàëà ERR |
Line 114... | Line 115... | ||
114 | ; mov ES,AX |
115 | ; mov ES,AX |
115 | mov EDI,Sector512 ;offset Sector512 |
116 | mov EDI,Sector512 ;offset Sector512 |
116 | mov DX,[ATABasePortAddr] ;ðåãèñòð äàííûõ |
117 | mov DX,[ATABasePortAddr] ;ðåãèñòð äàííûõ |
117 | mov CX,256 ;÷èñëî ñ÷èòûâàåìûõ ñëîâ |
118 | mov CX,256 ;÷èñëî ñ÷èòûâàåìûõ ñëîâ |
118 | rep insw ;ïðèíÿòü áëîê äàííûõ |
119 | rep insw ;ïðèíÿòü áëîê äàííûõ |
119 | jmp @@End |
120 | ret |
120 | ; Çàïèñàòü êîä îøèáêè |
121 | ; Çàïèñàòü êîä îøèáêè |
121 | @@Error1: |
122 | @@Error1: |
122 | mov [DevErrorCode],1 |
123 | mov [DevErrorCode],1 |
123 | jmp @@End |
124 | ret |
124 | @@Error6: |
125 | @@Error6: |
125 | mov [DevErrorCode],6 |
126 | mov [DevErrorCode],6 |
126 | @@End: ret |
127 | @@End: ret |
Line 127... | Line 128... | ||
127 | 128 | ||
128 | 129 | ||
129 | 130 | iglobal |
|
- | 131 | ; Ñòàíäàðòíûå áàçîâûå àäðåñà êàíàëîâ 1 è 2 |
|
- | 132 | StandardATABases DW 1F0h, 170h |
|
130 | ; Ñòàíäàðòíûå áàçîâûå àäðåñà êàíàëîâ 1 è 2 |
133 | endg |
131 | StandardATABases DW 1F0h, 170h |
134 | uglobal |
132 | ; Íîìåð êàíàëà |
135 | ; Íîìåð êàíàëà |
133 | ChannelNumber DW ? |
136 | ChannelNumber DW ? |
134 | ; Íîìåð äèñêà |
137 | ; Íîìåð äèñêà |
Line 146... | Line 149... | ||
146 | ; Êîä îøèáêè (0 - íåò îøèáîê, 1 - ïðåâûøåí äîïóñòèìûé |
149 | ; Êîä îøèáêè (0 - íåò îøèáîê, 1 - ïðåâûøåí äîïóñòèìûé |
147 | ; èíòåðâàë îæèäàíèÿ, 2 - íåâåðíûé êîä ðåæèìà àäðåñàöèè, |
150 | ; èíòåðâàë îæèäàíèÿ, 2 - íåâåðíûé êîä ðåæèìà àäðåñàöèè, |
148 | ; 3 - íåâåðíûé íîìåð êàíàëà, 4 - íåâåðíûé íîìåð äèñêà, |
151 | ; 3 - íåâåðíûé íîìåð êàíàëà, 4 - íåâåðíûé íîìåð äèñêà, |
149 | ; 5 - íåâåðíûé íîìåð ãîëîâêè, 6 - îøèáêà ïðè âûïîëíåíèè |
152 | ; 5 - íåâåðíûé íîìåð ãîëîâêè, 6 - îøèáêà ïðè âûïîëíåíèè |
150 | ; êîìàíäû) |
153 | ; êîìàíäû) |
151 | DevErrorCode DB ? |
154 | DevErrorCode dd ? |
152 | 155 | endg |
|
153 | ;**************************************************** |
156 | ;**************************************************** |
154 | ;* ÏÎÑËÀÒÜ ÊÎÌÀÍÄÓ ÇÀÄÀÍÍÎÌÓ ÄÈÑÊÓ * |
157 | ;* ÏÎÑËÀÒÜ ÊÎÌÀÍÄÓ ÇÀÄÀÍÍÎÌÓ ÄÈÑÊÓ * |
155 | ;* Âõîäíûå ïàðàìåòðû ïåðåäàþòñÿ ÷åðåç ãëîáàëüíûå * |
158 | ;* Âõîäíûå ïàðàìåòðû ïåðåäàþòñÿ ÷åðåç ãëîáàëüíûå * |
156 | ;* ïåðåìåííûå: * |
159 | ;* ïåðåìåííûå: * |
157 | ;* ChannelNumber - íîìåð êàíàëà (1 èëè 2); * |
160 | ;* ChannelNumber - íîìåð êàíàëà (1 èëè 2); * |
Line 201... | Line 204... | ||
201 | ; mov eax,[timer_ticks] |
204 | ; mov eax,[timer_ticks] |
202 | ; mov [TickCounter_1],eax |
205 | ; mov [TickCounter_1],eax |
203 | @@WaitHDReady: |
206 | @@WaitHDReady: |
204 | ; Ïðîâåðèòü âðåìÿ îæèäàíè |
207 | ; Ïðîâåðèòü âðåìÿ îæèäàíè |
205 | dec ecx |
208 | dec ecx |
206 | cmp ecx,0 |
209 | ; cmp ecx,0 |
207 | je @@Err1 |
210 | jz @@Err1 |
208 | ; mov eax,[timer_ticks] |
211 | ; mov eax,[timer_ticks] |
209 | ; sub eax,[TickCounter_1] |
212 | ; sub eax,[TickCounter_1] |
210 | ; cmp eax,300 ;îæèäàòü 300 òèêîâ |
213 | ; cmp eax,300 ;îæèäàòü 300 òèêîâ |
211 | ; ja @@Err1 ;îøèáêà òàéì-àóòà |
214 | ; ja @@Err1 ;îøèáêà òàéì-àóòà |
212 | ; Ïðî÷èòàòü ðåãèñòð ñîñòîÿíè |
215 | ; Ïðî÷èòàòü ðåãèñòð ñîñòîÿíè |
Line 251... | Line 254... | ||
251 | inc DX ;ðåãèñòð êîìàíä |
254 | inc DX ;ðåãèñòð êîìàíä |
252 | out DX,AL |
255 | out DX,AL |
253 | sti |
256 | sti |
254 | ; Ñáðîñèòü ïðèçíàê îøèáêè |
257 | ; Ñáðîñèòü ïðèçíàê îøèáêè |
255 | mov [DevErrorCode],0 |
258 | mov [DevErrorCode],0 |
256 | jmp @@End_2 |
259 | ret |
257 | ; Çàïèñàòü êîä îøèáêè |
260 | ; Çàïèñàòü êîä îøèáêè |
258 | @@Err1: mov [DevErrorCode],1 |
261 | @@Err1: mov [DevErrorCode],1 |
259 | jmp @@End_2 |
262 | ret |
260 | @@Err2: mov [DevErrorCode],2 |
263 | @@Err2: mov [DevErrorCode],2 |
261 | jmp @@End_2 |
264 | ret |
262 | @@Err3: mov [DevErrorCode],3 |
265 | @@Err3: mov [DevErrorCode],3 |
263 | jmp @@End_2 |
266 | ret |
264 | @@Err4: mov [DevErrorCode],4 |
267 | @@Err4: mov [DevErrorCode],4 |
265 | jmp @@End_2 |
268 | ret |
266 | @@Err5: mov [DevErrorCode],5 |
269 | @@Err5: mov [DevErrorCode],5 |
267 | ; Çàâåðøåíèå ðàáîòû ïðîãðàììû |
270 | ; Çàâåðøåíèå ðàáîòû ïðîãðàììû |
268 | @@End_2: |
- | |
269 | ret |
271 | ret |
Line 270... | Line 272... | ||
270 | 272 | ||
271 | ;************************************************* |
273 | ;************************************************* |
272 | ;* ×ÒÅÍÈÅ ÈÄÅÍÒÈÔÈÊÀÒÎÐÀ ÓÑÒÐÎÉÑÒÂÀ ATAPI * |
274 | ;* ×ÒÅÍÈÅ ÈÄÅÍÒÈÔÈÊÀÒÎÐÀ ÓÑÒÐÎÉÑÒÂÀ ATAPI * |
Line 295... | Line 297... | ||
295 | add DX,7 ;ïîðò 1õ7h |
297 | add DX,7 ;ïîðò 1õ7h |
296 | mov ecx,0xffff |
298 | mov ecx,0xffff |
297 | @@WaitCompleet_1: |
299 | @@WaitCompleet_1: |
298 | ; Ïðîâåðèòü âðåì |
300 | ; Ïðîâåðèòü âðåì |
299 | dec ecx |
301 | dec ecx |
300 | cmp ecx,0 |
302 | ; cmp ecx,0 |
301 | je @@Error1_1 ;îøèáêà òàéì-àóòà |
303 | jz @@Error1_1 ;îøèáêà òàéì-àóòà |
302 | ; Ïðîâåðèòü ãîòîâíîñòü |
304 | ; Ïðîâåðèòü ãîòîâíîñòü |
303 | in AL,DX |
305 | in AL,DX |
304 | test AL,80h ;ñîñòîÿíèå ñèãíàëà BSY |
306 | test AL,80h ;ñîñòîÿíèå ñèãíàëà BSY |
305 | jnz @@WaitCompleet_1 |
307 | jnz @@WaitCompleet_1 |
306 | test AL,1 ;ñîñòîÿíèå ñèãíàëà ERR |
308 | test AL,1 ;ñîñòîÿíèå ñèãíàëà ERR |
Line 312... | Line 314... | ||
312 | ; mov ES,AX |
314 | ; mov ES,AX |
313 | mov EDI,Sector512 ;offset Sector512 |
315 | mov EDI,Sector512 ;offset Sector512 |
314 | mov DX,[ATABasePortAddr] ;ïîðò 1x0h |
316 | mov DX,[ATABasePortAddr] ;ïîðò 1x0h |
315 | mov CX,256 ;÷èñëî ñ÷èòûâàåìûõ ñëîâ |
317 | mov CX,256 ;÷èñëî ñ÷èòûâàåìûõ ñëîâ |
316 | rep insw |
318 | rep insw |
317 | jmp @@End_1 |
319 | ret |
318 | ; Çàïèñàòü êîä îøèáêè |
320 | ; Çàïèñàòü êîä îøèáêè |
319 | @@Error1_1: |
321 | @@Error1_1: |
320 | mov [DevErrorCode],1 |
322 | mov [DevErrorCode],1 |
321 | jmp @@End_1 |
323 | ret |
322 | @@Error6_1: |
324 | @@Error6_1: |
323 | mov [DevErrorCode],6 |
325 | mov [DevErrorCode],6 |
324 | @@End_1: |
326 | @@End_1: |
325 | ret |
327 | ret |
Line 358... | Line 360... | ||
358 | out DX,AL |
360 | out DX,AL |
359 | mov ecx,0x80000 |
361 | mov ecx,0x80000 |
360 | @@WaitHDReady_1: |
362 | @@WaitHDReady_1: |
361 | ; Ïðîâåðèòü âðåìÿ îæèäàíè |
363 | ; Ïðîâåðèòü âðåìÿ îæèäàíè |
362 | dec ecx |
364 | dec ecx |
363 | cmp ecx,0 |
365 | ; cmp ecx,0 |
364 | je @@Err1_2 ;îøèáêà òàéì-àóòà |
366 | je @@Err1_2 ;îøèáêà òàéì-àóòà |
365 | ; Ïðî÷èòàòü ðåãèñòð ñîñòîÿíè |
367 | ; Ïðî÷èòàòü ðåãèñòð ñîñòîÿíè |
366 | in AL,DX |
368 | in AL,DX |
367 | ; Ïðîâåðèòü ñîñòîÿíèå ñèãíàëà BSY |
369 | ; Ïðîâåðèòü ñîñòîÿíèå ñèãíàëà BSY |
368 | test AL,80h |
370 | test AL,80h |
369 | jnz @@WaitHDReady_1 |
371 | jnz @@WaitHDReady_1 |
370 | ; Ñáðîñèòü ïðèçíàê îøèáêè |
372 | ; Ñáðîñèòü ïðèçíàê îøèáêè |
371 | mov [DevErrorCode],0 |
373 | mov [DevErrorCode],0 |
372 | jmp @@End_3 |
374 | ret |
373 | ; Îáðàáîòêà îøèáîê |
375 | ; Îáðàáîòêà îøèáîê |
374 | @@Err1_2: mov [DevErrorCode],1 |
376 | @@Err1_2: mov [DevErrorCode],1 |
375 | jmp @@End_3 |
377 | ret |
376 | @@Err3_2: mov [DevErrorCode],3 |
378 | @@Err3_2: mov [DevErrorCode],3 |
377 | jmp @@End_3 |
379 | ret |
378 | @@Err4_2: mov [DevErrorCode],4 |
380 | @@Err4_2: mov [DevErrorCode],4 |
379 | ; Çàïèñàòü êîä îøèáêè |
381 | ; Çàïèñàòü êîä îøèáêè |
380 | @@End_3: |
- | |
381 | ret |
382 | ret |
Line 382... | Line 383... | ||
382 | 383 |