1) SATA IDE support for HDD and ATAPI
2) PIO LBA48 read for HDD git-svn-id: svn://kolibrios.org@3702 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -44,6 +44,10 @@ FindHDD:
|
||||
jmp EndFindHDD
|
||||
|
||||
FindHDD_1:
|
||||
movzx eax,word [ChannelNumber]
|
||||
DEBUGF 1, "K : Channel %d ",eax
|
||||
movzx eax,byte [DiskNumber]
|
||||
DEBUGF 1, "Disk %d\n",eax
|
||||
call ReadHDD_ID
|
||||
cmp [DevErrorCode], 0
|
||||
jne FindHDD_2
|
||||
@@ -52,7 +56,7 @@ FindHDD_1:
|
||||
cmp [Sector512+12], word 255
|
||||
ja FindHDD_2
|
||||
inc byte [DRIVE_DATA+1]
|
||||
jmp FindHDD_2_2
|
||||
jmp Print_Device_Name
|
||||
FindHDD_2:
|
||||
call DeviceReset
|
||||
cmp [DevErrorCode], 0
|
||||
@@ -62,6 +66,21 @@ FindHDD_1:
|
||||
jne FindHDD_2_2
|
||||
inc byte [DRIVE_DATA+1]
|
||||
inc byte [DRIVE_DATA+1]
|
||||
Print_Device_Name:
|
||||
pushad
|
||||
pushfd
|
||||
mov esi,Sector512+27*2
|
||||
mov edi,dev_name
|
||||
mov ecx,20
|
||||
cld
|
||||
@@:
|
||||
lodsw
|
||||
xchg ah,al
|
||||
stosw
|
||||
loop @b
|
||||
popfd
|
||||
popad
|
||||
DEBUGF 1, "K : Dev: %s \n", dev_name
|
||||
FindHDD_2_2:
|
||||
ret
|
||||
|
||||
@@ -70,10 +89,11 @@ FindHDD_3:
|
||||
shl byte [DRIVE_DATA+1], 2
|
||||
ret
|
||||
|
||||
|
||||
; Адрес считываемого сектора в режиме LBA
|
||||
uglobal
|
||||
SectorAddress DD ?
|
||||
dev_name:
|
||||
rb 41
|
||||
endg
|
||||
;*************************************************
|
||||
;* ЧТЕНИЕ ИДЕНТИФИКАТОРА ЖЕСТКОГО ДИСКА *
|
||||
|
@@ -17,7 +17,8 @@ $Revision$
|
||||
search_partitions_ide0:
|
||||
test [DRIVE_DATA+1], byte 0x40
|
||||
jz search_partitions_ide1
|
||||
mov [hdbase], 0x1f0
|
||||
mov eax,[hd_address_table]
|
||||
mov [hdbase], eax ;0x1f0
|
||||
mov [hdid], 0x0
|
||||
mov [hdpos], 1
|
||||
mov [known_part], 1
|
||||
@@ -39,7 +40,8 @@ $Revision$
|
||||
search_partitions_ide1:
|
||||
test [DRIVE_DATA+1], byte 0x10
|
||||
jz search_partitions_ide2
|
||||
mov [hdbase], 0x1f0
|
||||
mov eax,[hd_address_table]
|
||||
mov [hdbase], eax ;0x1f0
|
||||
mov [hdid], 0x10
|
||||
mov [hdpos], 2
|
||||
mov [known_part], 1
|
||||
@@ -61,7 +63,8 @@ $Revision$
|
||||
search_partitions_ide2:
|
||||
test [DRIVE_DATA+1], byte 0x4
|
||||
jz search_partitions_ide3
|
||||
mov [hdbase], 0x170
|
||||
mov eax,[hd_address_table+16]
|
||||
mov [hdbase], eax ;0x170
|
||||
mov [hdid], 0x0
|
||||
mov [hdpos], 3
|
||||
mov [known_part], 1
|
||||
@@ -83,7 +86,8 @@ $Revision$
|
||||
search_partitions_ide3:
|
||||
test [DRIVE_DATA+1], byte 0x1
|
||||
jz end_search_partitions_ide
|
||||
mov [hdbase], 0x170
|
||||
mov eax,[hd_address_table+16]
|
||||
mov [hdbase], eax ;0x170
|
||||
mov [hdid], 0x10
|
||||
mov [hdpos], 4
|
||||
mov [known_part], 1
|
||||
|
Reference in New Issue
Block a user