Page 1 of 1

58 функция

Posted: Sat Feb 05, 2005 4:31 pm
by halyavin
Может ли кто-нибудь сказать мне полное описание этой функции на данный момент. К сожалению в sysfuncr.txt не описаны, например, возращаемые значения.

Posted: Sun Feb 13, 2005 5:44 pm
by CodeWorld
Ну от версии 0.74 вот:

Code: Select all

58 = ДОСТУП К ФАЙЛОВОЙ СИСТЕМЕ
        SYSTEM TREE ACCESS

     ebx    указатель на блок fileinfo

     примеры путей к файлам:

     '/RAMDISK/FIRST/KERNEL.ASM',0
     '/RD/1/KERNEL.ASM',0

     '/HARDDISK/FIRST/KERNEL.ASM',0
     '/HD/1/KERNEL.ASM',0
     '/HARDDISK/FIRST/MENUET/PICS/TANZANIA.BMP',0

     fileinfo:

     dd   0            ; 0 = ЧТЕНИЕ ФАЙЛА (2 удалить / 3 дописывать)
     dd   0x0          ; номер блока (512 байт, нумерация начинается с нуля)
     dd   0x1          ; сколько блоков считывать
                       ; (/байтов записывать/дописывать в конец файла)
     dd   0x20000      ; куда считывать
     dd   0x10000      ; память для работы ОС - 16384 байта

     db   '/RAMDISK/FIRST/KERNEL.ASM',0
     ; строка с путем к файлу, заканчивается нулем (ASCIIZ)

     или

     fileinfo:

     dd   1            ; 1 = ЗАПИСЬ НОВОГО ФАЙЛА
     dd   0x0          ; не используется
     dd   10000        ; сколько байтов записывать
     dd   0x20000      ; откуда записывать
     dd   0x10000      ; память для работы ОС - 16384 байта

     db   '/RAMDISK/FIRST/KERNEL.ASM',0
     ; строка с путем к файлу, заканчивается нулем (ASCIIZ)


     или

     ; LBA

     fileinfo:

     dd   8            ; 8 = чтение LBA (/9 = запись LBA)
     dd   0x0          ; номер блока для чтения/записи
     dd   0x1          ; всегда 1
     dd   0x20000      ; куда записывать
     dd   0x10000      ; память для работы ОС - 16384 байта

     dd   '/HARDDISK/SECOND',0
     ; физическое устройство (ASCIIZ)

     NOTE: В этом контексте строка указывает не на логическое,
           а на физическое устройство.
   для жесткого диска: first=pri.master, second=pri.slave
                       third=sec.master, fourth=sec.slave
     или

     fileinfo:

     dd   16           ; 16 = ЗАПУСТИТЬ ПРОГРАММУ
     dd   0x0          ; не используется
     dd   param        ; 0 или указатель на строку с параметрами (max 256 байт)
     dd   0x0          ; не используется
     dd   0x10000      ; память для работы ОС - 16384 байта

     db   '/HD/1/MENUET/APPS/FIRE',0
     ; строка с путем к файлу, заканчивается нулем (ASCIIZ)

     результат: eax = pid или 0xfffffff0+ ошибка

Posted: Wed May 25, 2005 8:57 am
by willow
Ну про это все знают.
Однако я заглядывал, кажется, в FAT32.INC, там есть код для дополнительных подфункций типа File append, Create directory. Если они работают, это мог бы быть праздник. Надо будет потестить по свободе.

Posted: Wed May 25, 2005 1:11 pm
by mike.dld
willow
Они-то, может быть, и работают, но только для FAT32 (или для FAT16 тоже?). А вот для FAT12 (рам-диск) их вроде бы нет... А надо!

Posted: Thu May 26, 2005 1:16 pm
by willow
Ну, все равно на RD много не загонишь, да и "менее перманентны" там изменения. Конечно, хотелось бы для все типов дисков такие возможности...