Rev 387 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 387 | Rev 388 | ||
---|---|---|---|
Line 10... | Line 10... | ||
10 | FindHDD: |
10 | FindHDD: |
11 | mov [ChannelNumber],1 |
11 | mov [ChannelNumber],1 |
12 | mov [DiskNumber],0 |
12 | mov [DiskNumber],0 |
13 | call FindHDD_3 |
13 | call FindHDD_3 |
14 | ; mov ax,[Sector512+176] |
14 | ; mov ax,[Sector512+176] |
15 | ; mov [0x40006],ax |
15 | ; mov [DRIVE_DATA+6],ax |
16 | ; mov ax,[Sector512+126] |
16 | ; mov ax,[Sector512+126] |
17 | ; mov [0x40008],ax |
17 | ; mov [DRIVE_DATA+8],ax |
18 | ; mov ax,[Sector512+128] |
18 | ; mov ax,[Sector512+128] |
19 | ; mov [0x40008],ax |
19 | ; mov [DRIVE_DATA+8],ax |
20 | mov [DiskNumber],1 |
20 | mov [DiskNumber],1 |
21 | call FindHDD_3 |
21 | call FindHDD_3 |
22 | ; mov al,[Sector512+176] |
22 | ; mov al,[Sector512+176] |
23 | ; mov [0x40007],al |
23 | ; mov [DRIVE_DATA+7],al |
24 | inc [ChannelNumber] |
24 | inc [ChannelNumber] |
25 | mov [DiskNumber],0 |
25 | mov [DiskNumber],0 |
26 | call FindHDD_3 |
26 | call FindHDD_3 |
27 | ; mov al,[Sector512+176] |
27 | ; mov al,[Sector512+176] |
28 | ; mov [0x40008],al |
28 | ; mov [DRIVE_DATA+8],al |
29 | mov [DiskNumber],1 |
29 | mov [DiskNumber],1 |
30 | call FindHDD_1 |
30 | call FindHDD_1 |
31 | ; mov al,[Sector512+176] |
31 | ; mov al,[Sector512+176] |
32 | ; mov [0x40009],al |
32 | ; mov [DRIVE_DATA+9],al |
Line 33... | Line 33... | ||
33 | 33 | ||
Line 34... | Line 34... | ||
34 | jmp EndFindHDD |
34 | jmp EndFindHDD |
35 | 35 | ||
Line 39... | Line 39... | ||
39 | jne FindHDD_2 |
39 | jne FindHDD_2 |
40 | cmp [Sector512+6],word 16 |
40 | cmp [Sector512+6],word 16 |
41 | ja FindHDD_2 |
41 | ja FindHDD_2 |
42 | cmp [Sector512+12],word 255 |
42 | cmp [Sector512+12],word 255 |
43 | ja FindHDD_2 |
43 | ja FindHDD_2 |
44 | inc byte [0x40001] |
44 | inc byte [DRIVE_DATA+1] |
45 | jmp FindHDD_2_2 |
45 | jmp FindHDD_2_2 |
46 | FindHDD_2: |
46 | FindHDD_2: |
47 | call DeviceReset |
47 | call DeviceReset |
48 | cmp [DevErrorCode],0 |
48 | cmp [DevErrorCode],0 |
49 | jne FindHDD_2_2 |
49 | jne FindHDD_2_2 |
50 | call ReadCD_ID |
50 | call ReadCD_ID |
51 | cmp [DevErrorCode],0 |
51 | cmp [DevErrorCode],0 |
52 | jne FindHDD_2_2 |
52 | jne FindHDD_2_2 |
53 | inc byte [0x40001] |
53 | inc byte [DRIVE_DATA+1] |
54 | inc byte [0x40001] |
54 | inc byte [DRIVE_DATA+1] |
55 | FindHDD_2_2: |
55 | FindHDD_2_2: |
56 | ret |
56 | ret |
Line 57... | Line 57... | ||
57 | 57 | ||
58 | FindHDD_3: |
58 | FindHDD_3: |
59 | call FindHDD_1 |
59 | call FindHDD_1 |
60 | shl byte [0x40001],2 |
60 | shl byte [DRIVE_DATA+1],2 |
Line 61... | Line 61... | ||
61 | ret |
61 | ret |
62 | 62 | ||
Line 82... | Line 82... | ||
82 | mov [ATACommand],0ECh |
82 | mov [ATACommand],0ECh |
83 | call SendCommandToHDD |
83 | call SendCommandToHDD |
84 | cmp [DevErrorCode],0 ;ïðîâåðèòü êîä îøèáêè |
84 | cmp [DevErrorCode],0 ;ïðîâåðèòü êîä îøèáêè |
85 | jne @@End ;çàêîí÷èòü, ñîõðàíèâ êîä îøèáêè |
85 | jne @@End ;çàêîí÷èòü, ñîõðàíèâ êîä îøèáêè |
86 | mov DX,[ATABasePortAddr] |
86 | mov DX,[ATABasePortAddr] |
87 | add DX,7 ;àäðåñ ðåãèñòðà ñîñòîÿíèÿ |
87 | add DX,7 ;àäðåñ ðåãèñòðà ñîñòîÿíè |
88 | mov ecx,0xffff |
88 | mov ecx,0xffff |
89 | @@WaitCompleet: |
89 | @@WaitCompleet: |
90 | ; Ïðîâåðèòü âðåìÿ âûïîëíåíèÿ êîìàíäû |
90 | ; Ïðîâåðèòü âðåìÿ âûïîëíåíèÿ êîìàíäû |
91 | dec ecx |
91 | dec ecx |
92 | cmp ecx,0 |
92 | cmp ecx,0 |
Line 189... | Line 189... | ||
189 | inc DX |
189 | inc DX |
190 | mov ecx,0xfff |
190 | mov ecx,0xfff |
191 | ; mov eax,[timer_ticks] |
191 | ; mov eax,[timer_ticks] |
192 | ; mov [TickCounter_1],eax |
192 | ; mov [TickCounter_1],eax |
193 | @@WaitHDReady: |
193 | @@WaitHDReady: |
194 | ; Ïðîâåðèòü âðåìÿ îæèäàíèÿ |
194 | ; Ïðîâåðèòü âðåìÿ îæèäàíè |
195 | dec ecx |
195 | dec ecx |
196 | cmp ecx,0 |
196 | cmp ecx,0 |
197 | je @@Err1 |
197 | je @@Err1 |
198 | ; mov eax,[timer_ticks] |
198 | ; mov eax,[timer_ticks] |
199 | ; sub eax,[TickCounter_1] |
199 | ; sub eax,[TickCounter_1] |
200 | ; cmp eax,300 ;îæèäàòü 300 òèêîâ |
200 | ; cmp eax,300 ;îæèäàòü 300 òèêîâ |
201 | ; ja @@Err1 ;îøèáêà òàéì-àóòà |
201 | ; ja @@Err1 ;îøèáêà òàéì-àóòà |
202 | ; Ïðî÷èòàòü ðåãèñòð ñîñòîÿíèÿ |
202 | ; Ïðî÷èòàòü ðåãèñòð ñîñòîÿíè |
203 | in AL,DX |
203 | in AL,DX |
204 | ; Ïðîâåðèòü ñîñòîÿíèå ñèãíàëà BSY |
204 | ; Ïðîâåðèòü ñîñòîÿíèå ñèãíàëà BSY |
205 | test AL,80h |
205 | test AL,80h |
206 | jnz @@WaitHDReady |
206 | jnz @@WaitHDReady |
207 | ; Ïðîâåðèòü ñîñòîÿíèå ñèãíàëà DRQ |
207 | ; Ïðîâåðèòü ñîñòîÿíèå ñèãíàëà DRQ |
Line 283... | Line 283... | ||
283 | ; Îæèäàòü ãîòîâíîñòü äàííûõ HDD |
283 | ; Îæèäàòü ãîòîâíîñòü äàííûõ HDD |
284 | mov DX,[ATABasePortAddr] |
284 | mov DX,[ATABasePortAddr] |
285 | add DX,7 ;ïîðò 1õ7h |
285 | add DX,7 ;ïîðò 1õ7h |
286 | mov ecx,0xffff |
286 | mov ecx,0xffff |
287 | @@WaitCompleet_1: |
287 | @@WaitCompleet_1: |
288 | ; Ïðîâåðèòü âðåìÿ |
288 | ; Ïðîâåðèòü âðåì |
289 | dec ecx |
289 | dec ecx |
290 | cmp ecx,0 |
290 | cmp ecx,0 |
291 | je @@Error1_1 ;îøèáêà òàéì-àóòà |
291 | je @@Error1_1 ;îøèáêà òàéì-àóòà |
292 | ; Ïðîâåðèòü ãîòîâíîñòü |
292 | ; Ïðîâåðèòü ãîòîâíîñòü |
293 | in AL,DX |
293 | in AL,DX |
Line 346... | Line 346... | ||
346 | mov AL,08h |
346 | mov AL,08h |
347 | inc DX ;ðåãèñòð êîìàíä |
347 | inc DX ;ðåãèñòð êîìàíä |
348 | out DX,AL |
348 | out DX,AL |
349 | mov ecx,0x80000 |
349 | mov ecx,0x80000 |
350 | @@WaitHDReady_1: |
350 | @@WaitHDReady_1: |
351 | ; Ïðîâåðèòü âðåìÿ îæèäàíèÿ |
351 | ; Ïðîâåðèòü âðåìÿ îæèäàíè |
352 | dec ecx |
352 | dec ecx |
353 | cmp ecx,0 |
353 | cmp ecx,0 |
354 | je @@Err1_2 ;îøèáêà òàéì-àóòà |
354 | je @@Err1_2 ;îøèáêà òàéì-àóòà |
355 | ; Ïðî÷èòàòü ðåãèñòð ñîñòîÿíèÿ |
355 | ; Ïðî÷èòàòü ðåãèñòð ñîñòîÿíè |
356 | in AL,DX |
356 | in AL,DX |
357 | ; Ïðîâåðèòü ñîñòîÿíèå ñèãíàëà BSY |
357 | ; Ïðîâåðèòü ñîñòîÿíèå ñèãíàëà BSY |
358 | test AL,80h |
358 | test AL,80h |
359 | jnz @@WaitHDReady_1 |
359 | jnz @@WaitHDReady_1 |
360 | ; Ñáðîñèòü ïðèçíàê îøèáêè |
360 | ; Ñáðîñèòü ïðèçíàê îøèáêè |