Subversion Repositories Kolibri OS

Rev

Rev 5565 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5565 Rev 5984
Line 3... Line 3...
3
;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2015. 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 -... Line 8...
-
 
8
$Revision: 5984 $
Line 8... Line -...
8
$Revision: 5565 $
-
 
9
 
-
 
10
 
-
 
11
;******************************************************
-
 
12
; поиск приводов HDD и CD
-
 
13
; автор исходного текста Кулаков Владимир Геннадьевич.
-
 
14
; адаптация и доработка Mario79
-
 
15
;******************************************************
-
 
16
 
-
 
17
;****************************************************
9
 
18
;*                 ПОИСК HDD и CD                   *
10
; HDD and CD search
19
;****************************************************
-
 
20
        cmp     [ecx+IDE_DATA.ProgrammingInterface], 0
11
 
21
        je      EndFindHDD
12
        cmp     [ecx+IDE_DATA.ProgrammingInterface], 0
22
 
-
 
23
FindHDD:
13
        je      EndFindHDD
24
        push    ecx
14
FindHDD:
25
 
-
 
-
 
15
        push    ecx
-
 
16
        xor     ebx, ebx
-
 
17
        inc     ebx
-
 
18
        mov     [DeviceNumber], 0
-
 
19
        cmp     ecx, IDE_controller_1
26
        xor     ebx, ebx
20
        jz      .find
27
        inc     ebx
21
        add     bl, 5
28
 
-
 
29
        cmp     ecx, IDE_controller_2
22
        add     [DeviceNumber], sizeof.HD_DATA*4
30
        jne     @f
-
 
31
 
-
 
32
        add     bl, 5
23
        cmp     ecx, IDE_controller_2
33
        jmp     .find
-
 
34
@@:
-
 
35
        cmp     ecx, IDE_controller_3
-
 
36
        jne     .find
-
 
37
 
24
        jz      .find
38
        add     bl, 10
-
 
39
;--------------------------------------
25
        add     bl, 5
40
.find:
26
        add     [DeviceNumber], sizeof.HD_DATA*4
41
 
27
.find:
Line 42... Line 28...
42
        mov     [ChannelNumber], 1
28
        mov     [ChannelNumber], 1
43
        mov     [DiskNumber], 0
29
        mov     [DiskNumber], 0
Line 44... Line 30...
44
        call    FindHDD_2
30
        call    FindHDD_1
45
 
-
 
46
        mov     [DiskNumber], 1
31
 
47
        call    FindHDD_2
32
        inc     [DiskNumber]
Line 48... Line 33...
48
 
33
        call    FindHDD_2
49
        inc     [ChannelNumber]
34
 
Line 50... Line 35...
50
 
35
        inc     [ChannelNumber]
51
        mov     [DiskNumber], 0
36
        dec     [DiskNumber]
52
        call    FindHDD_2
37
        call    FindHDD_2
53
 
38
 
54
        mov     [DiskNumber], 1
39
        inc     [DiskNumber]
55
        call    FindHDD_1
40
        call    FindHDD_2
56
 
-
 
57
        pop     ecx
-
 
58
        jmp     EndFindHDD
41
 
59
;-----------------------------------------------------------------------------
42
        pop     ecx
60
FindHDD_2:
43
        jmp     EndFindHDD
61
        call    FindHDD_1
44
;-----------------------------------------------------------------------------
62
        shl     byte [ebx+DRIVE_DATA], 2
45
FindHDD_2:
Line 78... Line 61...
78
 
61
 
79
        cmp     [Sector512+12], word 255
62
        cmp     [Sector512+12], word 255
Line 80... Line 63...
80
        ja      .FindCD
63
        ja      .FindCD
-
 
64
 
-
 
65
        inc     byte [ebx+DRIVE_DATA]
-
 
66
        movzx   eax, [DeviceNumber]
81
 
67
        bt      word [Sector512+166], 10
82
        inc     byte [ebx+DRIVE_DATA]
68
        adc     [eax+hd0_data.hd48], 0
83
        jmp     .Print_Device_Name
69
        jmp     .Print_Device_Name
84
;--------------------------------------
70
;--------------------------------------
85
.FindCD:
71
.FindCD:
Line 260... Line 246...
260
StandardATABases dw ?, ? ; 1F0h, 170h
246
StandardATABases dw ?, ? ; 1F0h, 170h
261
; Номер канала
247
; Номер канала
262
ChannelNumber   dw ?
248
ChannelNumber   dw ?
263
; Номер диска
249
; Номер диска
264
DiskNumber      db ?
250
DiskNumber      db ?
-
 
251
DeviceNumber    db ?
265
; Базовый адрес группы портов контроллера ATA
252
; Базовый адрес группы портов контроллера ATA
266
ATABasePortAddr dw ?
253
ATABasePortAddr dw ?
267
; Параметры ATA-команды
254
; Параметры ATA-команды
268
ATAFeatures     db ? ;особенности
255
ATAFeatures     db ? ;особенности
269
ATASectorCount  db ? ;количество обрабатываемых секторов
256
ATASectorCount  db ? ;количество обрабатываемых секторов