© Grand, 2001, 2003, 2006
E-mail: mirage_101©ngs.ru

ОПИСАНИЕ ЛОГИЧЕСКОГО ФОРМАТА БЛОЧНЫХ УСТРОЙСТВ ДИСКОВЫХ ОПЕРАЦИОННЫХ СИСТЕМ ДИАЛОГОВЫХ ВЫЧИСЛИТЕЛЬНЫХ КОМПЛЕКСОВ






СОДЕРЖАНИЕ

Предисловие
Формат блочного устройства
Идентификационный блок
Заголовок сегмента каталога
Элемент каталога
Приложения






ПРЕДИСЛОВИЕ

    Этот документ кратко описывает всю информацию о логическом формате блочных устройств (другие названия: устройства прямого доступа, файловые устройства справочной структуры и пр.) совместимых между собой дисковых операционных систем RAFOS, ФОДОС, RT11 и других, в диалоговых вычислительных комплексах (ДВК).
    Представленный материал был собран автором этого документа из невнятных технических описаний к выше упомянутым операционным системам, а также на основе собственных экспериментальных работ, которые были проделаны при создании программы DVK UTILITY на Sinclair ZX Spectrum-совместимых компьютерах, предназначенной для работы с дисками двойной плотности от ДВК.
    Цель этого описания — помощь программистам, которые захотят создать качественныe программы для обработки данных с ДВК на других платформах, а также тем, кому придется восстанавливать информацию на дисках ДВК в случае ее порчи.

Все числа в этом тексте — десятичные.

При подготовке текста и графики использовался Sinclair ZX Spectrum-совместимый компьютер.





ЛОГИЧЕСКИЙ ФОРМАТ БЛОЧНОГО УСТРОЙСТВА

Схема логического формата





ИДЕНТИФИКАЦИОННЫЙ БЛОК

Таблица 1. Функциональное назначение байтов идентификационного блока
Смещение в байтах от началаКол-во байтовНазначение
+02Равны нулю.
+13256Нуль в первом байте указывает, что устройство инициализировано впервые (в этом случае остальные 55 байтов не используются), иначе — область хранит данные старого каталога: 10 байтов заголовка первого сегмента и два первых элемента каталога из него по 14 байтов (для возможности восстановления пока на устройство не было записано новых файлов); оставшиеся байты не используются и равны нулю.
+4484Назначение неизвестно, равны нулю.
+4666Назначение неизвестно, равны: 1, 0, 6, 0, 83, 142.
+47212Имя тома (устройства) в кодировке КОИ7; выдается в строке "Volume ID", при печати каталога.
+48412Имя владельца тома (устройства) в кодировке КОИ7; выдается в строке "Owner", при печати каталога.
+49612Имя инициализировавшей системы в кодировке КОИ7; ОС RT11, например, заносит в эти байты сообщение: "DECRT11A    ".




ЗАГОЛОВОК СЕГМЕНТА КАТАЛОГА

Таблица 2. Функциональное назначение байтов заголовка сегмента каталога
Смещение в байтах от началаКол-во байтовНазначение
+02Число сегментов, отведенных под каталог (до 31), заданное при инициализации. Здесь и далее — первый байт младший.
+22Номер следующего открытого сегмента каталога. В последнем сегменте записан 0; первый имеет номер 1, второй — 2 и т. д.
+42Счетчик сегментов, имеющих элементы каталога (только в первом сегменте). Об элементах каталога см. ниже.
+62Число дополнительных байтов в элементе каталога (после инициализации стандартными средствами всегда равно 0).
+82Номер блока, с которого начинаются файлы в данном сегменте.

    За заголовком сегмента следуют элементы каталога — области постоянной длины, в каждой из которых содержится информация об одном файле, хранящимся на устройстве.




ЭЛЕМЕНТ КАТАЛОГА

Таблица 3. Функциональное назначение байтов элемента каталога
Смещение в байтах от началаКол-во байтовНазначение
+01Всегда равен нулю (не используется).
+11Отдельные установленные биты этого байта указывают вид файла:
  • b0 - временный (не закрытый) файл (приравнивается к пустому);
  • b1 - пустой (свободная область);
  • b2 - постоянный;
  • b3 - конец данных в сегменте каталога;
  • b7 - защита от удаления (для постоянного файла).
+22Первый, второй и третий символы имени файла в кодировке Radix50.
+42То же для четвертого, пятого и шестого.
+62То же для первого, второго и третьего символов расширения файла.
+82Длина файла в блоках.
+102Специальные байты (не используются для постоянного файла, равны 0).
+122Дата создания файла (только для постоянного) от 01-Jan-72 до 31-Dec-99 (т. е. на сегодняшний день не актуально); два байта составляют слово (первый байт младший), отдельные биты которого обозначают:
  • b0...b4 - код года, к нему прибавляется 72, результат - число соответствующее двум последним цифрам года прошлого века;
  • b5...b9 - день месяца;
  • b10...b14 - номер месяца.
Если все биты равны 0, то это указывает на отсутствие даты.
+14nБайты дополнительной информации (если есть); системой не обрабатываются.




ПРИЛОЖЕНИЯ


  1. Инициализация блочного устройства

        Как известно, перед началом работ с новым блочным устройством, требуется его инициализация которая происходит следующим образом:

    1. Проверяется каталог устройства; если оно ранее использовалось и содержит защищенные файлы, у пользователя запрашивается разрешение для дальнейших действий.
    2. Нулевой блок устройства заполняется нулями, и в него записывается программа выдачи сообщения об отсутствии системного загрузчика.
    3. В первый блок устройства записываются данные согласно таблицы 1.
    4. В 6-м блоке устройства создаются: заголовок первого сегмента каталога; элемент каталога, указывающий о всей длине свободной области на устройстве (пустой файл); и маркер конца каталога.


  2. Создание нового сегмента каталога

        В процессе создания файлов, сегмент ката­лога может оказаться заполненным элементами каталога. В случае, если имеется возможность открыть новый сегмент (их количество задается при инициализации), операционная система выполняет следующие действия:

    1. Заполняется заголовок нового сегмента и в него переписывается примерно половина последних элементов каталога из заполненного сегмента.
    2. Корректируются связи сегментов (таким образом, сегменты могут быть связаны не по порядку своих номеров).
    3. Укороченный и новый сегменты записываются на устройство.
    4. Новый элемент каталога будет помещен в тот сегмент, в котором окажется информация о подходящей свободной области для файла.


  3. "Сборка мусора"

        При ведении устройства (т. е. при создании новых файлов и удалении старых) на нем могут оказаться множество мелких свободных областей, в любую из которых новый файл не помещается, хотя общего свободного пространства для этого достаточно. Логический формат блочного устройства не позволяет создавать сегментированные файлы (такие, как например, в операционной системе IS-DOS на Sinclair ZX Spectrum-совместимых компьютерах). Однако, существует операция, называемая "сборкой мусора" (команда монитора — SQUEEZE), которая, последовательно копируя файлы на устройстве, сдвигает их, выделяя тем самым одну максимально свободную область. Устройство может иметь сбойные области, которые указываются файлами с расширением .BAD; они не затрагиваются этой операцией, и остаются на прежних местах.


  4. Блочное устройство MY:

        Контроллер: КМД.
        Метод записи: модифицированная частотная модуляция (двойная плотность).
        Запоминающее устройство: накопитель на гибких магнитных дисках.
        Носитель: гибкий магнитный диск для двойной плотности записи, диаметром 133 либо 89 мм.
        Физический формат диска:
            дорожек: 40 или 80;
            сторон: одна или две;
            всего секторов: 400, 800 или 1600;
            секторов на дорожке: 10;
            размер сектора: 512 байтов; один сектор на диске соответствует одному логическому блоку данных блочного устройства.