Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5851 → Rev 5852

/kernel/trunk/detect/dev_hdcd.inc
7,61 → 7,44
 
$Revision$
 
; HDD and CD search
 
;******************************************************
; поиск приводов HDD и CD
; автор исходного текста Кулаков Владимир Геннадьевич.
; адаптация и доработка Mario79
;******************************************************
 
;****************************************************
;* ПОИСК HDD и CD *
;****************************************************
cmp [ecx+IDE_DATA.ProgrammingInterface], 0
je EndFindHDD
 
FindHDD:
push ecx
 
xor ebx, ebx
inc ebx
 
mov [DeviceNumber], 0
cmp ecx, IDE_controller_1
jz .find
add bl, 5
add [DeviceNumber], sizeof.HD_DATA*4
cmp ecx, IDE_controller_2
jne @f
 
jz .find
add bl, 5
jmp .find
@@:
cmp ecx, IDE_controller_3
jne .find
 
add bl, 10
;--------------------------------------
add [DeviceNumber], sizeof.HD_DATA*4
.find:
 
mov [ChannelNumber], 1
mov [DiskNumber], 0
call FindHDD_2
call FindHDD_1
 
mov [DiskNumber], 1
inc [DiskNumber]
call FindHDD_2
 
inc [ChannelNumber]
dec [DiskNumber]
call FindHDD_2
 
mov [DiskNumber], 0
inc [DiskNumber]
call FindHDD_2
 
mov [DiskNumber], 1
call FindHDD_1
 
pop ecx
jmp EndFindHDD
;-----------------------------------------------------------------------------
FindHDD_2:
call FindHDD_1
add [DeviceNumber], sizeof.HD_DATA
shl byte [ebx+DRIVE_DATA], 2
ret
;-----------------------------------------------------------------------------
FindHDD_1:
DEBUGF 1, "K : Channel %d ",[ChannelNumber]:2
DEBUGF 1, "Disk %d\n",[DiskNumber]:1
80,6 → 63,9
ja .FindCD
 
inc byte [ebx+DRIVE_DATA]
movzx eax, [DeviceNumber]
bt word [Sector512+166], 10
adc [eax+hd0_data.hd48], 0
jmp .Print_Device_Name
;--------------------------------------
.FindCD:
262,6 → 248,7
ChannelNumber dw ?
; Номер диска
DiskNumber db ?
DeviceNumber db ?
; Базовый адрес группы портов контроллера ATA
ATABasePortAddr dw ?
; Параметры ATA-команды
/kernel/trunk/detect/sear_par.inc
13,27 → 13,27
xor eax, eax
mov edx, IDE_controller_1
mov ax, [edx + IDE_DATA.BAR0_val]
mov [hd0_data.hdbase], eax
mov [hd1_data.hdbase], eax
mov [hd0_data.hdbase], ax
mov [hd1_data.hdbase], ax
mov ax, [edx + IDE_DATA.BAR2_val]
mov [hd2_data.hdbase], eax
mov [hd3_data.hdbase], eax
mov [hd2_data.hdbase], ax
mov [hd3_data.hdbase], ax
 
mov edx, IDE_controller_2
mov ax, [edx + IDE_DATA.BAR0_val]
mov [hd4_data.hdbase], eax
mov [hd5_data.hdbase], eax
mov [hd4_data.hdbase], ax
mov [hd5_data.hdbase], ax
mov ax, [edx + IDE_DATA.BAR2_val]
mov [hd6_data.hdbase], eax
mov [hd7_data.hdbase], eax
mov [hd6_data.hdbase], ax
mov [hd7_data.hdbase], ax
 
mov edx, IDE_controller_3
mov ax, [edx + IDE_DATA.BAR0_val]
mov [hd8_data.hdbase], eax
mov [hd9_data.hdbase], eax
mov [hd8_data.hdbase], ax
mov [hd9_data.hdbase], ax
mov ax, [edx + IDE_DATA.BAR2_val]
mov [hd10_data.hdbase], eax
mov [hd11_data.hdbase], eax
mov [hd10_data.hdbase], ax
mov [hd11_data.hdbase], ax
; 2. Notify the system about /hd* disks.
; For every existing disk, call ide_disk_add with correct parameters.
; Generate name "hdN" on the stack; this is 4 bytes including terminating zero.