/kernel/trunk/detect/dev_hdcd.inc |
---|
24,13 → 24,26 |
mov [ChannelNumber], 1 |
mov [DiskNumber], 0 |
call FindHDD_3 |
; mov ax,[Sector512+176] |
; mov [DRIVE_DATA+6],ax |
; mov ax,[Sector512+126] |
; mov [DRIVE_DATA+8],ax |
; mov ax,[Sector512+128] |
; mov [DRIVE_DATA+8],ax |
mov [DiskNumber], 1 |
call FindHDD_3 |
; mov al,[Sector512+176] |
; mov [DRIVE_DATA+7],al |
inc [ChannelNumber] |
mov [DiskNumber], 0 |
call FindHDD_3 |
; mov al,[Sector512+176] |
; mov [DRIVE_DATA+8],al |
mov [DiskNumber], 1 |
call FindHDD_1 |
; mov al,[Sector512+176] |
; mov [DRIVE_DATA+9],al |
jmp EndFindHDD |
FindHDD_1: |
/kernel/trunk/const.inc |
---|
179,7 → 179,8 |
_io_map_1 rb 4096 |
ends |
DRIVE_DATA_SIZE equ 10 |
PARTITION_COUNT equ 64 |
DRIVE_DATA_SIZE equ (16+PARTITION_COUNT*100) |
OS_BASE equ 0x80000000 |
/kernel/trunk/kernel.asm |
---|
2248,15 → 2248,27 |
;------------------------------------------------------------------------------ |
align 4 |
sysfn_getdiskinfo: ; 18.11 = get disk info table |
; cmp ecx,1 |
dec ecx |
jnz .exit |
.small_table: |
jnz full_table |
small_table: |
call for_all_tables |
mov ecx, 10 |
cld |
rep movsb |
ret |
for_all_tables: |
mov edi, edx |
mov esi, DRIVE_DATA |
mov ecx, DRIVE_DATA_SIZE ;10 |
ret |
full_table: |
; cmp ecx,2 |
dec ecx |
jnz exit_for_anyone |
call for_all_tables |
mov ecx, DRIVE_DATA_SIZE/4 |
cld |
rep movsb |
.exit: |
rep movsd |
ret |
;------------------------------------------------------------------------------ |
sysfn_lastkey: ; 18.12 = return 0 (backward compatibility) |
/kernel/trunk/docs/sysfuncr.txt |
---|
846,6 → 846,7 |
* ebx = 11 - номер подфункции |
* ecx = тип таблицы: |
* 1 = короткая версия, 10 байт |
* 2 = полная версия, 65536 байт |
* edx = указатель на буфер (в приложении) для таблицы |
Возвращаемое значение: |
* функция не возвращает значения |
876,7 → 877,23 |
если файловая система не поддерживается). В текущей версии ядра |
для жёстких дисков поддерживаются только FAT16, FAT32 и NTFS. |
* +6: 4 db: зарезервировано |
Формат таблицы: полная версия: |
* +0: 10 db: такие же, как и в короткой версии |
* +10: 100 db: данные для первого раздела |
* +110: 100 db: данные для второго раздела |
* ... |
* +10+100*(n-1): 100 db: данные для последнего раздела |
Разделы расположены в следующем порядке: сначала последовательно все |
распознанные разделы на HD на IDE0 (если есть), |
затем на HD на IDE1 (если есть) и т.д. до IDE3. |
Формат информации о разделе: |
* +0: dword: начальный физический сектор раздела |
* +4: dword: последний физический сектор раздела |
(принадлежит разделу) |
* +8: byte: тип файловой системы: |
16=FAT16, 32=FAT32, 1=NTFS |
* формат дальнейших данных зависит от файловой системы, |
может меняться с изменениями в ядре и поэтому не описывается |
Замечания: |
* Короткая таблица может быть использована для получения информации |
об имеющихся устройствах. |
/kernel/trunk/docs/sysfuncs.txt |
---|
846,6 → 846,7 |
* ebx = 11 - subfunction number |
* ecx = type of the table: |
* 1 = short version, 10 bytes |
* 2 = full version, 65536 bytes |
* edx = pointer to the buffer (in the application) for the table |
Returned value: |
* function does not return value |
877,7 → 878,24 |
the file system is not supported). Current version of the kernel |
supports only FAT16, FAT32 and NTFS for hard disks. |
* +6: 4 db: reserved |
Format of the table: full version: |
* +0: 10 db: same as for the short version |
* +10: 100 db: data for the first partition |
* +110: 100 db: data for the second partition |
* ... |
* +10+100*(n-1): 100 db: data for the last partition |
The partitions are located as follows: at first sequentially all |
recoginzed partitions on HD on IDE0 (if present), |
then on HD on IDE1 (if present) and so on up to IDE3. |
Format of the information about partition |
(at moment only FAT is supported): |
* +0: dword: first physical sector of the partition |
* +4: dword: last physical sector of the partition |
(belongs to the partition) |
* +8: byte: file system type: |
16=FAT16, 32=FAT32, 1=NTFS |
* other data are dependent on file system, are modified with |
kernel modifications and therefore are not described |
Remarks: |
* The short table can be used for obtaining the information about |
available devices. |