MEMDISK - файловая система для памяти
MEMDISK разработан для хранения файлов в
областях памяти. Память может быть фрагме-
нтирована, поэтому несколько микросхем I2C
EEPROM могут быть использованы как один
диск. Это также полезно для рамдисков в
страничном ОЗУ или файлов, хранимых в
EPROM.
Структура MEM/0 была первой идеей.В перес-
мотренной версии MEM/1 были добавлены ука-
затели на родителя.Так что сейчас достато-
чно одного указателя для оперирования фай-
лом или каталогом и нет необходимости в
запоминании указателей на элементы пути.
Это упрощает, например,удаление файлов или
перемещение в другой каталог.
Структура диска
содержимое длина описание
+0 "MEM",#01 4 имя файловой системы
+4 3 символа+#0 4 имя физического диска
+8 structure F Є26 дескриптор файла
... structure D Є26 дескриптор каталога
... structure A Є7 дескриптор области
данных
Первый дескриптор файла (structure F) при-
сутствует всегда. Указывает на первый файл
или директорию на диске, содержит количес-
тво полезного свободного пространства и
указатель на цепочку свободной области
(structures A). Также может указывать на
родительскую директорию - значение 0 озна-
чает,что это корень.
Таким образом,пустой диск содержит 8-байт-
ный заголовок,одну structure F и как мини-
мум одну structure A.
Структуры
Structure F - file descriptor
Structure D - directory descriptor
Structure A - data area
длина содержимое примечания для:
байт str.F str.D str.A
+0 4 указатель следующий файл only A
на следующую или каталог в
структуру этом каталоге
+4 2 длина этой от 20 до 64 от 1 до
структуры 65535
+6 1 номер версии #00 #80 ┌─────┐
+7 1 флаги │ │
+8 4 указатель на каталог,содер- │ │
родительскую жащий данный │обла-│
структуру файл / каталог │ сть │
+12 4 параметр длина │ │
файла │ дан-│
+16 4 указатель на only A первый │ ных │
порождаемую элемент│ │
структуру subdir.│ │
+20 4 дата и время упаковано │ │
+24 Є2 имя с имя имя │ │
#00 в конце файла каталога└─────┘
Все указатели и поля длины лежат в формате
little Endian (менее значащий байт первым)
Пример - пустой 8kB диск
Выбранным для примера устройством является
M24C64 - I2C 8kB EEPROM, подключенный к
AY-3-8912.
База указателя #E0A0, что означает: память
подключена к AY (#E0 - bit 0 порта A это
SDA, bit 1 это SCL.) и внутренний номер -
#A0. Номер соединения #E2 используется на
компьютерах TC2068 и означает: bit 4 порта
A это SDA, bit 5 это SCL. Внутренний номер
для микросхем M24C64 может быть в диапазо-
не #A0..#AE (только чётные значения) и ус-
танавливается с помощью входов E0, E1 и E2
микросхемы.
адрес содержимое описание
#0000 4D 45 4D 01 имя файловой системы
"MEM/1"
#0004 45 45 30 00 физическое имя диска
"EE0" (с нулевым
кодом в конце)
#0008 F 00 00 00 00 нет следующего эле-
мента каталога (тут
начинается
structure F)
#000C 19 00 длина элемента
(#0027-#000E)
#000E / 00 00 элемент без установ-
ленных флагов
#0010 00 00 00 00 нет родительской
структуры
#0014 D3 1F 00 00 полная длина свобод-
ного места
#0018 27 00 A0 E0 указатель на
A structure, которая
начинается с #0027
#001C B5 44 22 2C дата и время
форматирования:
2002-01-02 08:37:42
#0020 45 45 44 48 53 4B 00
имя диска "EEDISK"
(с нулём в конце)
#0027 A 00 00 00 00 нет следующих струк-
тур (structure A
начинается здесь)
#002A D3 1F длина области
(#2000-#002D)
#002D / FF FF FF FF FF ...
пустая область -
#1FD3 байт
#1FFF FF последний байт пус-
той области памяти
------------------------------------------
(c) 2002-08-28 Jarek Adamski
{zxvgs@yarek.com},{http://zxvgs.yarek.com}