▊I.2.3. Справочник дискеты ... старейшим из дошедших до нас каталогов признается список литературных произведений на шумерской глиняной плитке, относящийся к 2ООО г. до н.э. Михайлов А.Н.,Черный А.Ч.,Гиляревский Р.С. Справочник▁ (каталог, директория, оглавление) дискеты содержит список всех файлов, находящихся на дискете. Элементы справочника содержат всю необходимую информацию о файле, за исключением информации о размещении файла (которая хранится в Таблице Размещения Файлов). Справочник располагается \/T0/1 ▁▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▚ ▕ α) в секторах 07h ÷ 0Dh, если диск ▇двухсторонний,▁ ▕ ▕ β) в секторах 05h ÷ 0Bh, если диск ▇односторонний.▁ ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▔ \/T1/1- или более подробно для ▇односторонней▁ дискеты: \/T0/1 ▁▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▚ ▕5 сектор▕6 сектор▕7 сектор▕8 сектор▕9 сектор▕A сектор▕B сектор▕ ▇▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▔ ▕◀▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊ Справочник ("Directory") ▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▶▕ \/T1/1- и для ▇двухсторонней▁ дискеты: \/T0/1 ▁▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▚ ▕7 сектор▕8 сектор▕9 сектор▕A сектор▕B сектор▕C сектор▕D сектор▕ ▇▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▔ ▕◀▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊ Справочник ("Directory") ▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▶▕ \/T1/1- Каждый элемент Справочника имеет длину 32 байта. Следовательно, в 512-байтном секторе помещается ровно 16 элементов Справочника. На дис﹣ кете выделено 7 секторов для Справочника, что позволяет хранить 112 элементов (7∙512/32 = 112). Каждый элемент Справочника состоит из восьми полей следующего назна﹣ чения: \/T0/1 Первое поле ▁▊▊▊▊▊▊▊▊▊▊▊▊▚ ▚ 0-й байт▕ ▧▧▧▧▧▧▧▧▧▧ ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ▕ 1-й байт▕ ▧▧▧▧▧▧▧▧▧▧ ▕ ▕ Имя файла (8 символов) ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ▕ ◀▊▊ (если некоторый символ отсутствует,то он ... ▕ ... ▕ ▕ заменяется кодом 20h) ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ▕ 7-й байт▕ ▧▧▧▧▧▧▧▧▧▧ ▕ ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▔ ▔ Второе поле ▁▊▊▊▊▊▊▊▊▊▊▊▊▚ ▚ 8-й байт▕ ▨▨▨▨▨▨▨▨▨▨ ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ▕ Расширение имени файла 9-й байт▕ ▨▨▨▨▨▨▨▨▨▨ ▕ ⁃ ◀▊▊ (если некоторый символ отсутствует,то он ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ▕ заменяется кодом 20h) 10-й байт▕ ▨▨▨▨▨▨▨▨▨▨ ▕ ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▔ ▔ Третье поле ▁▊▊▊▊▊▊▊▊▊▊▊▊▚ 11-й байт▕ ▕ ◀▊▊ Байт атрибутов файла ▇▊▊▊▊▊▊▊▊▊▊▊▊▔ Четвертое поле ▁▊▊▊▊▊▊▊▊▊▊▊▊▚ ▚ 12-й байт▕ :::::::::: ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ▕ 13-й байт▕ :::::::::: ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ⁃ ◀▊▊ Зарезервированное поле ... ▕ ... ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ▕ 21-й байт▕ :::::::::: ▕ ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▔ ▔ Пятое поле ▁▊▊▊▊▊▊▊▊▊▊▊▊▚ ▚ 22-й байт▕ ░░░░░░░░░░ ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ⁃ ◀▊▊ Время создания файла 23-й байт▕ ░░░░░░░░░░ ▕ ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▔ ▔ Шестое поле ▁▊▊▊▊▊▊▊▊▊▊▊▊▚ ▚ 24-й байт▕ ▧▧▧▧▧▧▧▧▧▧ ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ⁃ ◀▊▊ Дата создания файла 25-й байт▕ ▧▧▧▧▧▧▧▧▧▧ ▕ ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▔ ▔ Седьмое поле ▁▊▊▊▊▊▊▊▊▊▊▊▊▚ ▚ 26-й байт▕ ▨▨▨▨▨▨▨▨▨▨ ▕ ▕ Ссылка на первый кластер, в котором на﹣ ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ⁃ ◀▊▊ ходится файл (в 26-ом байте - младший 27-й байт▕ ▨▨▨▨▨▨▨▨▨▨ ▕ ▕ байт адреса, в 27-ом байте - старший ▇▊▊▊▊▊▊▊▊▊▊▊▊▔ ▔ байт) Восьмое поле ▁▊▊▊▊▊▊▊▊▊▊▊▊▚ ▚ 28-й байт▕ ********** ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ▕ 29-й байт▕ ********** ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ⁃◀▊▊▊ Размер файла (в байтах) 30-й байт▕ ********** ▕ ▕ ⁃▊▊▊▊▊▊▊▊▊▊▊▊ ▕ 31-й байт▕ ********** ▕ ▕ ◀▊▊ Старший байт размера файла ▇▊▊▊▊▊▊▊▊▊▊▊▊▔ ▔ \/T1/1- Помните, что для человека звук его имени самый сладкий и самый важный звук в че﹣ ловеческой речи. Д.Карнеги Имя файла▁. Это поле имеет длину 8 байт и содержит имя файла. Если длина имени меньше восьми символов, то недостающие символы заменяются символом "Пробел" (код 20h). Если ▇первый байт имени файла▁ содержит число E5h, то это означает, что файл, которому соответствует этот элемент Справочника, уже уничто﹣ жен, т.е. после уничтожения файла первый символ имени файла заменяется шестнадцатеричным кодом E5. ▇Вся информация в элементе каталога, за ис▁﹣ ▇ключением первого символа имени, сохраняется. Расширение▁. Это поле имеет длину три байта. Оно содержит расширение имени файла. Как и в случае с самим именем, короткое расширение допол﹣ няется символами "Пробел". Если файл не имеет расширения, то это поле содержит три символа "Пробел". Атрибут▁. Это поле состоит из ▇одного▁ байта. Поле атрибута в основном используется для установления признака "скрытого" файла, т.е. такого файла, имя которого не обнаруживается обычными программами работы со Справочниками. В операционной системе MSX-DOS биты байта атрибутов несут следующую нагрузку: \/T0/1 ▁▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▚ ▕ ▕ ▕ 7 6 5 4 3 2 1 0 ▕ ▕ ▕ ▕ Старший бит ▊▊▶ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ◀▊▊ Младший бит ▕ ▕ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ Бит защиты от чтения ▔ ▕ ▕ ▕ ▕ ▕ ▕ ▇ Резервированный бит ▕ ▕ Резервированный бит ▊▊▔ ▕ ▕ ▕ ▕ ▇▊ "Скрытый" файл, защищен от ко﹣ ▕ ▕ ▕ ▕ ▕ ▕ манды просмотра каталога ▕ ▕ Архивный файл ▊▊▔ ▕ ▕ ▇▊▊ Системный файл с особым доступом ▕ ▕ Подкаталог ▊▊▊▔ ▇▊▊▊ Метка тома ▕ ▕ ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▔ \/T1/1- ⁃Бит 0▁ в системе MSX-DOS зарезервирован. ⁃Биты 1-й и 2-й▁ служат для индикации атрибутов "скрытого" и "систем﹣ ного" файла. ▇Первый▁ бит байта атрибутов, установленный в 1, определяет "скрытый" файл, а ▇второй▁ бит, установленный в 1, ▊ системный файл. Таким образом, "видимый" файл будет иметь нулевой байт атрибута (00000000), для "скрытого" файла байт атрибута содержит значение 2 (00000010), для системного файла байт атрибута содержит значение 4 (00000100), а для "скрытого" системного файла байт атрибута содержит значение 6 (00000110). Хотя обработка системного атрибута осуществляется независимо от скрытого, оба этих атрибута практически совпадают по своему функци﹣ ональному назначению. При использовании любого из них файл становится "невидимым". Если ⁃бит 1▁ или ⁃бит 2▁ равен 1, то файл исчезает из каталога. Его нельзя ни стереть, ни прочитать, т.к. при всяком обращении к нему опе﹣ рационная система сообщает: "File not found" . ⁃Бит 3▁ (содержимое байта атрибутов: 00001000) указывает, что элемент Справочника содержит метку тома. Сама метка хранится в полях имени фай﹣ ла и расширения, которые воспринимаются в этом случае как одно целое. Если бит 3 равен 1, то файл исчезает из каталога. Его нельзя ни стереть, ни прочитать, т.к. при всяком обращении к нему говорится: "File not found" В операционной системе MS-DOS ⁃бит 4▁ (содержимое байта атрибутов: 00010000) используется для указания элементов Справочника, соответству﹣ ющих Справочникам нижнего уровня. Поскольку Справочники нижнего уровня хранятся на диске подобно обычным файлам данных, им необходим собствен﹣ ный элемент в корневом Справочнике. В этом элементе используются все поля,кроме размера файла, в данном случае равного нулю. Действительный размер файла Справочника нижнего уровня легко определяется из соот﹣ ветствующей последовательности в Таблице Размещения Файлов. В операционной системе MSX-DOS равенство бита 4 единице приводит к тому, что при просмотре каталога командой DIR, Вы увидите на экране слово в том месте каталога, где должна находиться информация об объеме файла. Это означает, что этот файл - теперь не файл вовсе, а имя некоторого ▇подкаталога▁. ⁃Бит 5▁ (содержимое байта атрибутов: 00100000) предусмотрен для облег﹣ чения создания резервных копий файлов на ▇жестких▁ дисках. ▇Для файлов на ▇гибких дисках этот атрибут бесполезен▁. ⁃Бит 6▁ зарезервирован в системе MSX-DOS. Если ⁃бит 7▁ равен 1, то файл становится нечитаемым (например, Вы не сможете загрузить его в текстовый редактор и т.д.). Зарезервированное поле▁. Это поле зарезервировано для возможного ис﹣ пользования в будущем. Любые ▇новые▁ операции над Справочником файлов мо﹣ гут использовать это поле. Эти байты имеют значение 00. Любые другие значения этого поля указывают на какой-либо вариант его использования. Счастливые часов не наблюдают. А.С.Грибоедов. Горе от ума Время▁. Это поле имеет длину два байта в формате шестнадцатиразрядно﹣ го целого числа без знака. В этом поле хранится время создания или мо﹣ дификации файла. Большинство операций, использующих это поле, таких как операция рас﹣ печатки содержимого Справочника (DIR), выдают время с точностью до ми﹣ нут, хотя число, хранящееся в поле времени, позволяет определить время с точностью до двух секунд. Код времени, хранящийся как шестнадцатиразрядное целое число без знака, вычисляется по следующей формуле: \/T0/1 ▁▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▚ ▕ Время = Часы∙2048+Минуты∙32+Секунды/2 ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▔ 23-й байт 22-й байт ▁▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▚ ▁▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▚ ▕ h4▕ h3▕ h2▕ h1▕ h0▕ m5▕ m4▕ m3▕ ▕ m2▕ m1▕ m0▕ s4▕ s3▕ s2▕ s1▕ s0▕ ▇▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▔ ▇▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▔ \/T1/1- ▇▊▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▔ Часы (0÷23) Минуты (0÷59) Секунды/2 (0÷29) Все врут календари. А.С.Грибоедов. Горе от ума Дата▁. Это поле состоит из двух байтов. Как и время, даты хранятся в виде целого шестнадцатиразрядного числа без знака, которое вычисляется \/T0/1 по формуле: ▁▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▚ ▕ Дата = (Год-1980)∙512+Месяц∙32+День ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▔ \/T1/1- Диапазон значений лет составляет от 1980 до 2079, причем хранятся они в виде относительных величин от 0 до 99. Хотя формат позволяет за﹣ давать относительный номер года 127 (что соответствует 2107 году), опе﹣ рационная система MSX-DOS позволяет работать с годами только до 2079. Никто, правда, не ожидает, что MSX-DOS будет использоваться так долго! 25-й байт 24-й байт \/T0/1 ▁▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▚ ▁▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▏▊▊▊▚ ▕ y6▕ y5▕ y4▕ y3▕ y2▕ y1▕ y0▕ m3▕ ▕ m2▕ m1▕ m0▕ d4▕ d3▕ d2▕ d1▕ d0▕ ▇▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▔ ▇▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▞▊▊▊▔ \/T1/1- ▇▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▞▊▊▊▊▊▊▊▊▊▏▊▊▊▊▊▊▊▊▊▔ Годы (0÷99) Месяцы (1÷12) Дни (1÷31) Как формат, так и размещение полей даты и времени подобраны таким образом, чтобы вместе они образовывали единое четырехбайтовое поле, ко﹣ торое можно использовать в операциях сравнения. Достаточно просто из﹣ влекать компоненты даты и времени из соответствующих полей и вычислять их разность. Например, для разделения даты на составные части можно использовать следующие формулы, записанные на языке программирования Pascal: \/T0/1 ▁▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▚ ▕ Год:=1980+поле_даты div 512 ▕ ▕ Месяц:=(поле_даты mod 512) div 32 ▕ ▕ День := поле_даты mod 32 ▕ ▇▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▔ \/T1/1- Номер начального кластера▁. Это двухбайтовое поле содержит шестнадца﹣ тиразрядное число, являющееся смещением до начальной точки файла в Таб﹣ лице Размещения Файлов. Размер файла▁. Это поле состоит из четырех байтов. Размер файла зада﹣ ется в байтах и хранится в формате четырехбайтового целого числа без знака. Размер файла не всегда указывает точное число байтов. Для всех файлов это поле должно соответствовать размеру файла в секторах. Для программных файлов, представленных в виде "COM"-файла и для фай﹣ лов, созданных из данных фиксированной длины, только поле размера файла позволяет точно определить, где находится конец данных. Для этих файлов значение в поле размера файла хранится с точностью до байта. Для файлов некоторых других форматов такая точность не обязательна и размер файла, указанный в соответствующем поле, может отличаться от действительного. Наиболее часто это случается с текстовыми файлами. Текстовые файлы в кодах ASCII имеют маркер (признак) конца файла, хра﹣ нящийся в самом файле, который фиксирует точный конец данных.