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 ? ;количество обрабатываемых секторов |