Subversion Repositories Kolibri OS

Rev

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