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:
Marat Zakiyanov (Mario79)
2013-06-25 03:15:38 +00:00
parent 1812e8064e
commit d9b8117616
7 changed files with 257 additions and 36 deletions

View File

@@ -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
;*************************************************
;* ЧТЕНИЕ ИДЕНТИФИКАТОРА ЖЕСТКОГО ДИСКА *

View File

@@ -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