Subversion Repositories Kolibri OS

Rev

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
; Ñáðîñèòü ïðèçíàê îøèáêè