Subversion Repositories Kolibri OS

Rev

Rev 346 | Rev 425 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 346 Rev 389
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
33
        
33
 
34
        jmp     EndFindHDD
34
        jmp     EndFindHDD
Line 35... Line 35...
35
 
35
 
36
FindHDD_1:
36
FindHDD_1:
37
        call    ReadHDD_ID
37
        call    ReadHDD_ID
38
        cmp     [DevErrorCode],0
38
        cmp     [DevErrorCode],0
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:
Line 56... Line 56...
56
        ret
56
        ret
57
 
57
 
58
FindHDD_3:
58
FindHDD_3:
59
        call    FindHDD_1
59
        call    FindHDD_1
Line 60... Line 60...
60
        shl     byte [0x40001],2  
60
        shl     byte [DRIVE_DATA+1],2
61
        ret
61
        ret
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 253... Line 253...
253
        jmp @@End_2
253
        jmp @@End_2
254
@@Err4: mov     [DevErrorCode],4
254
@@Err4: mov     [DevErrorCode],4
255
        jmp @@End_2
255
        jmp @@End_2
256
@@Err5: mov     [DevErrorCode],5
256
@@Err5: mov     [DevErrorCode],5
257
; Çàâåðøåíèå ðàáîòû ïðîãðàììû
257
; Çàâåðøåíèå ðàáîòû ïðîãðàììû
258
@@End_2: 
258
@@End_2:
259
        ret
259
        ret
Line 260... Line 260...
260
 
260
 
261
;*************************************************
261
;*************************************************
262
;*     ×ÒÅÍÈÅ ÈÄÅÍÒÈÔÈÊÀÒÎÐÀ ÓÑÒÐÎÉÑÒÂÀ ATAPI    *
262
;*     ×ÒÅÍÈÅ ÈÄÅÍÒÈÔÈÊÀÒÎÐÀ ÓÑÒÐÎÉÑÒÂÀ ATAPI    *
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
; Ñáðîñèòü ïðèçíàê îøèáêè