┌────────────────────────────┐
│ ░▒▓▓█ DOS REVIEW #02 █▓▓▒░ │
└────────────────────────────┘
Теперь можно поговорить о
наиболее старой, распространен-
ной и проблематичной системе
CP/M.
В том или ином виде она
использовалась на огромном коли-
честве компьютеров. Многие
зарубежные и отечественные
производители ПК пытались
использовать эту систему на
своих компьютерах. Пытались де-
лать это и на СПЕКТРУМ'е. Но
тогда были чудесные времена,
когда формат MS-DOS, а равно и
ее возможности, были лишь слад-
кой мечтой. Сама фирма IBM
использовала эту систему при по-
мощи восьмидюймовых дисководов.
Тем не менее, старая
восьмиразрядная система, каза-
лось бы, должна прекрасно подхо-
дить для многих простых компь-
ютеров. В некотором роде это
правильно. Но правильнее ска-
зать, что ее возможности по
осовместивниванию ( =:( ) -
ред. ) разных компьютеров весьма
скромны. Система эта создавалась
для работы с текстовыми термина-
лами. У нее нет средств работы с
графикой! Да и с большим коли-
чеством памяти могут возникнуть
проблемы.
Осталась только элементарная
совместимость по общей памяти,
тексту и формату диска. Но и тут
совместимость мизерная. На
СПЕКТРУМЕ весьма затруднительно
вывести 80 символов в строке.
Но самым интересным оказался
вопрос дискового формата. Все
дело в том, что на восьмидюймо-
вых дисках было 77 дорожек и на
каждой размещались 26 секторов
по 128 байт.
Вроде бы, проблема разрешима и
диски можно прочитать. Однако,
почитаем соответствующую литера-
туру.
Весьма часто можно видеть
ссылку на такую книгу:
Уейт М. Ангермейер Дж.
Операционная система CP/M.
Пер. с англ. М: Радио и связь,
1986.
Но при детальном осмотре ока-
залось, что это явно пособие в
работе, но не по программирова-
нию в этой системе.
Такой же оказалась книга:
Н. В. Макарова и др. Работаем на
персональном компьютере
РОБОТРОН 1715 Л: Машиностроение,
1989.
Похоже, что эта книга писалась
во времена, когда под словом
КОМПЬЮТЕР понималась: Большая
Очень Умная, Дорогая и Сложная
Машина с Большим Экраном Типа
Калькулятора Для Бухгалтера.
Еще можно упомянуть подробную
и научную, но устаревшую и уда-
ленную от практики книгу:
Дейтел Г. М. Введение в
операционные системы. Пер. с
англ. под ред. В.С. Штаркмана.
М: Мир, 1987 В 2 т.
Несколько устаревшая, на мой
взгляд, но весьма полезная для
создателей ОС книга. Но описы-
ваемые там методы весьма сложны,
и на практике описывается как
раз старая CP/M под восмидюймо-
вик.
В результате стнет понятно,
что в этой системе разные машины
используют практически любой
возможный формат разбивки диска.
Только на РОБОТРОН'е стандартно
их три. Немного отличаются мето-
ды сегментации. В результате су-
ществуют две модели компьютера
КОРВЕТ, не совместимых между со-
бой ( Когда-то мне об этом пове-
дала учительница информатики из
нашей школы ). Но с КОРВЕТ'ом
как со школьным компьютером и
так почти покончено, ибо су-
ществует масса несовместимых
между собой школьных агрегатов.
А ведь постановка CP/M на КОРВЕТ
называлась одной из самых удач-
ных. Называлась теми, кто ее
присобачивал к компьютеру ОРИОН-
128, на котором не только дис-
ков, но контроллеров с портами
существует пяток версий.
То же самое можно сказать и о
других компьютерах. Поэтому
трудновато будет запустить на
РОБОТРОН'е и даже на КОРВЕТ'e
игру от PROFI или ATM-TURBO.
Но оказывается, что некоторая
совместимость есть, формат дис-
ков, описываемый ниже, хотя и
является наиболее применительным
для КОРВЕТ'а, вполне читаем и на
других компах, несмотря на то,
что их операционки называются
вроде по разному: CP/M (-80) и
MICRODOS, к тому же разных вер-
сий. Стало понятно, что читать
диски от разных компов можно, но
как их различать - неизвестно.
Вот и приходится с трудом
разбираться что к чему. К сожа-
лению, я никогда вживую не видел
ATM-TURBO. Поэтому про него я
ничего пока не буду говорить, а
попытаюсь сначала его поглядеть.
Про КОРВЕТ и ОРИОН немало гово-
рилось в журналах РАДИО и РА-
ДИОЛЮБИТЕЛЬ. Я также пытался
изучить диск от PROFI, но с ним
у меня получилась печальная ис-
тория. Я попросил сделать копию
этого единственного диска при
помощи NEXTCOPY. В результате
исходник испортился, а на мой
диск скопировались пара дорожек,
содержащих каталог. И при помощи
его я и узнал общие принципы
хранения информации на таком
диске.
Разбивка была, как и на КОР-
ВЕТ'е и других машинах, на 5
секторов по 1024 байта. И такой
формат следует признать общим.
Описатели каталога состояли из
32 байтов, из которых 16 послед-
них явно описывали блоки на ко-
торых были расположены байты.
И только много позже я узнал
некоторые подробности. К этой
поре я уже походил в библиотеку
и поставил себе эмулятор этой
системы: MYZ80 v 1.0 by Simeon
Cran. Он, правда, использовал
виртуальный диск, который не
совсем похож на реальные. Но
некоторые интересные вещи я от-
туда извлек. Потом я подробно
изучил документацию к КОРВЕТ'у и
еще много чего выяснил.
Все осложняет наличие самых
разнообразных единиц измерения:
от записей по 128 байт, до
экстентов и блоков по 16КБ и
4КБ. И похоже, что все размеры
отличаются в зависимости от вер-
сии.
Но общие принципы не меняются.
Где-то на диске расположен ката-
лог: у PROFI - на второй дорож-
ке, у РОБОТРОН'а - на третей.
На файл уделяется по 32 байта,
но в старых системах было и по
33. Описатель содержит в себе
цепочку байтов - последователь-
ность блоков, в которых поме-
щается файл. Таким образом, на
диске эмулятора можно было соз-
давать файлы до 32768 ( 16384 )
байт длиной. Но для систем с
жесткими дисками максимальная
упоминаемая длина достигала 8МБ.
Также ограничивается и размер
диска: около 256МБ. Но и эту
проблему можно преодолеть увели-
чением размера блоков. Также
упоминается возможность созда-
вать цепочки из нескольких
описателей для одного файла,
всего до 16. А отдельные куски
больших файлов получили название
экстентов. На следующий описа-
тель раньше указывал 33-ий байт.
Позже за это стал отвечать байт
с другим номером.
Каталоги в этой системе не
поддерживаются. Но существует
одна примечательная возможность.
Дело в том, что раньше на одну
машину приходилось по множеству
пользователей. А даже гибких и,
тем более, жестких дисков было
мало. Надо было решать вопрос о
разделении данных на дисках.
Поэтому было решено разбить диск
на несколько USER-областей, все-
го до 16, но теоретически до
255. Каталог был общим, но в
описателе каждого файла содержа-
лась пометка принадлежности фай-
ла к определенной области. Таким
образом, на одном жестком диске
существовало несколько логичес-
ких, как и в MS-DOS. Но диск при
этом рассматривался как единое
целое и процедуры загрузки, за-
писи и удаления файлов, а также
чистящие утилиты, не определяли
принадлежность файла к опреде-
ленной области и разделение было
чисто внешним.
Теперь можно рассмотреть опи-
сатель файла более подробно:
0-ой байт: он как раз и содер-
жит номер USER-области, к кото-
рой принадлежит файл. Используя
его можно организовать не очень
развесистую, но весьма обширную
структуру каталогов. Все системы
ограничивают число областей до
15, но при помощи небольшой пе-
ределки эту цифру можно увели-
чить до 255. Если файл удален,
то нулевой его байт равен #E5.
Байты 1-8 содержат имя файла,
а байты 9-11 - его расширение. У
КОРВЕТ'а старшие биты этих бай-
тов содержат атрибуты: 9-ый -
только чтение, 10-ый - системный
файл.
Байты 13-15 содержат системную
информацию. На старых системах и
на эмуляторе использовался толь-
ко байт 15. Он содержал длину
файла в записях по 128 байт каж-
дая. Остаток сектора может быть
заполнен кодом #E5. У КОРВЕТ'а
байт 12 - номер текущего экстен-
та, номер того 16-ти килобайтно-
го блока файла, которому соот-
ветствует текущий описатель.
Байт 13 у него указывает коли-
чество байтов в последней записи
файла, общее число которых также
содержатся в байте 15.
Байты 16-31 содержат карту
размещения файла. Она состоит из
восьми пар байт, каждая из кото-
рых содержит значения блока, на
котором содержится часть файла.
В эмуляторе размер блока равен
4096 байт, на РОБОТРОН'е и КОР-
ВЕТ'е - 2048 байт.
В принципе, данной информации
уже достаточно для чтения и за-
писи файлов. Тем не менее, на
старых системах на диске также
размещалась битовая карта на 243
байта. Каждый ее бит отвечал за
кластер из 8 секторов
( 8*128=1024 ). При записи файла
устанавливался первый найденный
сброшенный бит и в описатель
заносился номер соответствующего
блока.
Однако, для записи нового фай-
ла достаточно просканировать ка-
талог, хотя эту операцию не сов-
сем удобно реализовать програм-
мно, к тому же надо пропускать
удаленные файлы. Лучше сначала
создать таблицу свободных блоков
в памяти и сделать это при пер-
вом же прочтении диска, а затем,
используя и корректируя ее в па-
мяти, перезаписывать только
измененный каталог. Поэтому я не
нашел больше никакого упоминания
о подобной таблице размещения в
более поздних моделях компьюте-
ров.
Тем не менее, нельзя не ска-
зать, что данная система исполь-
зует самый оригинальный способ
сегментирования. Прочие системы
размещают информацию о сегментах
либо в общей таблице, и тогда
каталог так или иначе ссылается
на один из ее пунктов. Другие
содержат ее на отдельных секто-
рах для каждого файла, и в ката-
логе делается ссылка на такие
сектора. Но при копировании ра-
зумно было бы рассматривать та-
кие сектора, как сегменты файла.
IS-DOS в этом смысле весьма ори-
гинальна и использует и таблицу
и сектора, а также позволяет
создавать вообще не сегментиро-
вание секторы. Ее авторы, по ви-
димому, изучали CP/M, но приня-
тый на ней способ сегментации
так и оказался уникальным.
В документации на КОРВЕТ
стандартным также являлся самый
первый сектор на диске - его 128
байт содержат размеры всех об-
ластей на диске: и размер секто-
ров в байтах, количество их на
дорожках - и если эта информация
вместе с форматом каталога яв-
ляется более-менее стандартной,
то можно постараться и написать
универсальную читалку-писалку на
диски всех систем, претендующих
на CP/M совместимость.
В нем содержится:
┌───────┬───────────────┬─────────────────────────────────────┐
│Байты │Стандартно │Назначение │
├───────┼───────────────┼─────────────────────────────────────┤
│0-1 │0 или #BE80 │Адрес загрузки ОС │
│ │ │ │
│2-3 │0 или #BF00 │Адрес запуска ОС │
│ │ │ │
│4-5 │0 или #0D │Количество секторов под ОС │
│ │ │ │
│6 │0 │Размер диаметра НГМД (133мм) │
│ │ │ │
│8 │0 │96 дорожек на дюйм (1 - 48 дор.) │
│ │ │ │
│9 │1 │Данные вектора перевода секторов │
│ │ │(0 - не используется) │
│ │ │ │
│10 │3 │Размер сектора: │
│ │ │(0 - 128 байт │
│ │ │ 1 - 256 │
│ │ │ 2 - 512 │
│ │ │ 3 - 1024) │
│ │ │ │
│11 │1 │Двухсторонний НГМД (четные дорожки │
│ │ │сверху, 0 - односторонний) │
│ │ │ │
│12-13 │5 │Количество секторов на дорожке │
│ │ │ │
│14-16 │0080 │Количество дорожек на одной стороне │
│ │ │(TPD, TPD'=2TPD) │
│ │ │ │
│16-17 │40 │Количество логических записей по 128 │
│ │ │байт на дорожке (SPT) │
│ │ │ │
│18 │4 │Фактор сдвига ( =LOG2(BLS/128) ) │
│ │ │ │
│19 │15 │Маска расположения блока данных │
│ │ │( =BLS/128-1 ) │
│ │ │ │
│20 │0 │Маска размера блока │
│ │ │( =BLS/1024-1-DSM/256 ) │
│ │ │ │
│21-22 │#187 │Количество блоков данных на диске │
│ │ │( DSM=SPT*(TPD'-OFF)*128/BLS-1 ) │
│ │ │ │
│23-24 │#7F │Число элементов оглавления минус 1 │
│ │ │( DRM ) │
│ │ │ │
│25-26 │2 │Количество блоков под оглавление │
│ │ │( =32*DRM/BLS) │
│ │ │ │
│27-28 │#0020 │Размер вектора контроля оглавления │
│ │ │(Контрольная сумма каталога ?) │
│ │ │ │
│29-30 │3 │Количество дорожек под операционную │
│ │ │систему, включая нулевую (OFF) │
│ │ │ │
│31 │#E7(#F1) │Контрольная сумма этого сектора │
│ │ │ │
│32-128 │0 │Резерв для вектора перевода секторов │
└───────┴───────────────┴─────────────────────────────────────┘
Осталось не выясненным, где
хранится BLS - размер блока дан-
ных ( 2048/4096 ) как таковой.
Но его можно рассчитать из 19-го
байта - маски блока данных.
Прошло время, и мне встрети-
лись также диски от других
CP/M/MICRODOS совместимых сис-
тем: Вектор-06Ц, АТМ и Скор-
пионовские.
Под Вектор-06Ц у меня был эму-
лятор с внешней программой MST,
работающей с егошними дисками.
Но, к сожалению, наиболлее глюч-
но она работает в процессе фор-
матирования дисков - много везде
плохих дорожек, а в других сис-
темах диск форматируется нор-
мально. Посему точно ничего ска-
зать не берусь, но каталог вроде
стандартный.
Под АТМ диски я форматировал
Honey Commander'ом V 1.0, како-
вая версия еще работала на любом
128'ом. Диск - как в TR-DOS 16
секторов по 256 байт, блоки вро-
де по 4096, но НИКАКОГО признака
для их определения, кроме байтов
#E5 в наальных секторах. Рабо-
тать с ними, в общем, возможно.
Установленые седьмые биты первых
двух букв расширения файла соот-
ветствуют атрибутам READ ONLY и
SYSTEM, что для вышеупомянутого
командера означает HIDDEN: файл
с такии битом просто так в ката-
логе уже не показывается. Также
как и в КОРВЕТ'е используются
байты 12 и 15 описателя файла.
Под Скорп CP/M адаптировал гн.
MOA аж в 1992. Плохо это, или
нет, да только образчик такого
диска у меня пока один, под наз-
ванием SEXDEMO - есть на нем ка-
кие-то картинки и музоны, пара
исполняемых файлов... Только вот
Скорпа-то у меня нетуть, под
эмулем прут каки-то READING
ERRORS 8-!, а при детальном ос-
мотре файлов в них обнаружились
то ли разрывы, то ли дырки, за-
битые нулями. Да и структура ка-
талога заметно отличалась от
стандартной: в табличке описания
местонахожления блоков файла на
диске было заметно, что на каж-
дый блок уделяется не по паре
байт, а по одному байту. Это и
понято: при размере блока 4096
байт на диске их поместится око-
ло 150. Но эти разрывы в катало-
ге, заполненые нулями, застав-
ляют меня подождать других об-
разцов или информации.
Таким образом, CP/M совмести-
мость компьютера абсолютно ниче-
го не говорит о разбивке его
диска. Но в целом, приведенной
информации должно хватить для
работы хотябы со стандартными
КОРВЕТ'овскими дисками.
ASC SOUND MASTER
А еще, говорят, есть такой хи-
трый ASM - музыкальный редактор.
Не говорю о его музыкальных воз-
можностях, но вспомнил я, что с
некоторых версий он ваще-то об-
ладает еще и своим, известным
только автору, дисковым форма-
том. Ну и, конечно, я не нашел
причины, чтобы на асмовских дис-
ках полазать. Собсно гря, мне
нужды до такого дела нетуть. Да
вот компилировать музоны не
всегда нужно под адрес 49152.
Мудрые кодеры, надо думать, на-
писали бы свой компилятор - ведь
немало их под ST понаписали. А
вот лазить по хитрому диску ник-
то не захотел - написали реком-
пилер под другой адрес.
Я тоже особо возится не стал,
так что может в нижеследующем
описании шо не так - не проверял
пока особо-то.
Короче разбивка диска такая.
Нулевая дорожка совсем хитрая:
первые 8 секторов по 512 байт, а
последний - на 1024 байта. Ну а
остальные - нормально, 10 секто-
ров по 512 байт.
На нулевой дорожке распола-
гается каталог. Сколько секторов
он может занимать я не знаю, при
мне последний сектор всегда пус-
товал.
На запись в каталоге приходит-
ся по 16 байт. Нулевая запись -
первые 16 байт диска - особые.
Там содержится строка: " ADS
1.00 (C) ASC " - по ней легко
определить принадлежность диска
к отряду "музыкальных".
У остальных записях о файлах:
Байты 0-7 - имя.
Байты 8-10 - расширение. Оно
может быть PAT, SAM, IMG, а мо-
жет и еще какое.
Следующий байт, под номером
11, вместе с младшим полубайтом
12-го байта содержат номер пер-
вого блока ( кластера ) файла.
Об этом см. ниже.
Остальные биты 12-го байта -
признак состояния файла, а имен-
но если там содержится число
1 - это нормальный файл;
5 - защищеный от удаления или
записи файл;
0 - удаленый файл.
Потом байты 13-14 записи -
длина файла в байтах.
Байт 15 - всегда #00!!!
Теперь пару слов о сегмента-
ции. Структура диска удивительно
похожа на диск MS-DOS. Куски
файла могут занимать произволь-
ное место на диске, а в записи о
файле указывается ссылка на пер-
вый кусок. Только на данном фор-
мате диска размер куска равен
одному сектору и поэтому его но-
мер можно называть номером клас-
тера, номером блока или смеще-
нием до абсоютного сектора. На-
хождение разбросанных по диску
таких вот кусков осуществляется
при поможи таблицы аналогичной
FAT 12 бит. Две копии этой таб-
лицы размером по 5 секторов ко-
торые находятся на первой дорож-
ке.
Когда нужно прочитать файл,
номер первого куска которого за-
писан в каталоге, читают вначале
этот первый кусок, а затем опре-
деляют, что содержится в таблице
в ячейке с номером равным номеру
первого куска файла. А там со-
держится номер второго куска.
Теперь его читают и повторяют
процесс с третим. И так до тех
пор, пока в таблице будет не но-
мер следующего куска, а признак
конца файла.
При записи, в таблице ищут
ячейки, содержащие признак
незанятого места на диске, и
записывают туда номер следующего
найденого пустого места, а на
сектор, соответствующий номеру
ячейки таблицы, записывают нуж-
ную часть файла.
Проблема в том, что ячейки
имеют размер 12 бит = 1.5 байта,
поэтому приходится извлекать
нужную половинку из трех байт
командами сдвига.
Первая ячейка таблицы всегда
содержит число #AC - медиа-
дискриптор для MS-DOS; #000 -
признак пустого места на диске;
#FFF - признак конца файла -
последняя ячейка, которая содер-
жит номер куска данного файла -
последнего куска.
Словом, объяснить на словах
это трудно, ежели кому надо
разбираться - изучайте на прак-
тике, а краткое описание я за-
кончил.
RT11
Были еще у меня разные диски.
На многих я долго и упорно ко-
пался. Но, видать, без всякой
информации трудно понять что-
либо сразу.
Прежде всего, попались мне в
руки диски от ДВК. Но они были
совершенно нечитаемые несмотря
на то, что об их совместимости
со стандартными форматами раз-
бивки упоминалось не раз.
Чуть больше повезло мне с дис-
ками от УКНЦ. Читались они прос-
то прекрасно, углядывалось имя
диска, загрузчик... Но не было
никакого намека на присутствие
каталога. В дальнейшем у меня
появился доступ к этим машинам и
специалист по ним. Но в докумен-
тах на них я не нашел никакой
пользительной информации на нуж-
ную тему и, даже отформатировав
диск и записав на него известные
файлы, с известным каталогом, я
не нашел его на диске, как тако-
вого. Была только какая-то таб-
лица, структурой напоминавшая то
ли каталог, то ли таблицу разме-
щения файлов, которой кстати
быть не должно, т. к. по полу-
ченной информации структура дис-
ка напоминает СПЕКТРУМ'ский. По-
том, у меня еще завелся эмулятор
ОС RT-11, совместимой с форматом
FODOS на УКНЦ, да еще и конвер-
тилка с дисков такого формата.
Но, опять же, ни дока, ни ката-
лога, а только чушь всякая. В
общем, вопрос тут остался откры-
тым и пока есть еще кое-какие
надежды.
Целый год я надеждами этими
жил, а потом опять пошел в
библиотеку. Перерыл целую кучу
книжек. Вначале выяснилось, что,
в общем-то, все идет от этой са-
мой RT-11, а от нее "откопирова-
лись" всякие там РАФОС, РАФОС 2,
ФОДОС, ФОДОС 2, ОС ДВК и чего-то
там еще - в общем, все то, что
использовалось на старых машинах
СМ и серии "Электроника". На
них, как и, впрочем, на MS-DOS и
на CP/M, более важной казалась
программная совместимоть. В
результате - опять секреты, а
может - стыдно кому за содранное
с иностранных образцов.
Словом про диски от сиих
совместимых ОС сказано мало. Са-
мую подробную информацию я нашел
в справочнике:
Операционная система СМ ЭВМ
РАФОС
Составители: А.И. Валиков, Г.В.
Вигородчик, А.Ю. Воробьев, А.А.
Лукин под общ. ред. В.П. Семина.
М:Финансы и статистика, 1984 г.
- 207 с.
Оказывается, система РАФОС мо-
жет еще работать с дисками ДОС
СМ и ЕС ЭВМ. Скорее всего, это
тоже влияет на хитрый формат
каталога. Почему его нигде не
видно? Да дело в том, что все
символьные строки упакованы в
хитрый ( и, похоже, старющий )
такой код - RADIX-50. Практичес-
ки это небольшая компрессия: три
буквы - в два байта. Но набор
букв, между прочим, состоит не
из 32 символов - по пять бит на
букву, да еще бит в паре байт
остается, а раскодируется все
простым тебе сдвигом - для ката-
лога, вроде, достаточно. Но нет,
тут используется набор из 40
символов: букв, цифр и три
спецзнака. Вроде нужно 6 бит на
символ - в два байта не втис-
нуться. Но это - если работать
сдвигами, а если умножением - то
получится:
40*40*40 = 64 000 - вполне
двухбайтное число.
И получаем:
Код_Первой_Буквы*1600 +
+Код_Второй_Буквы*40 +
+Код_Третей_Буквы =
более #FFFF ни как ни получится,
если код буквы лежит в диапазоне
от 0 до 39!
У "пробела" код - ноль, у букв
A-Z - коды от 1 до 26. Далее
идут спецсимволы: "точка в кру-
жочке", по нашему "$" - код 27,
"точка" - код 28, "/" - код 29 -
этим символом замещают символы,
не имеющие аналогов в коде
RADIX-50. Ну а цифры "0"-"9" -
коды 30-39.
Кодиование и декодирование
осуществляется операциями умно-
жения и деления.
Ну а дальше - проще.
Весь диск разбит на блоки по
512 байт, на УКНЦ это - размер
сектора и нумеруются эти блоки
от нуля и до некоторога максиму-
ма - общего числа блоков. Число
это зависит от количества доро-
жек и секторов на них: 10 или 9
Блок 0 - загрузочный сектор.
Начинается он с кода #A0, есть и
другие примечательные байты, но
как по ним определять количесво
сторон, дорожек и секторов - по-
ка неизвестно.
Блок 1 - содержит: в конце -
имя пользователя, диска и
опрерационной системы, а в нача-
ле - таблица замещения дефектных
блоков. Как в ней кодируются эти
плохие бдоки - нигде не написа-
но, кроме того, там присутсвуют
кое-какие всегда постоянные бай-
ты.
Блоки 2-5 - сама система или
пусто - если диск не загрузоч-
ный.
Начиная с блока 6 находится
каталог. Он состоит из одного
или нескольких сегментов - каж-
дый по 1024 байта - 2 блока. Ко-
личество сегментов может зада-
ваться при инициализации диска.
Принято, что вся информация в
каталоге двухбайтная - всего 512
слов ( пар байт ) в сегменте.
Первые пять слов - служебные:
Слово 1 - число сегментов в
каталоге.
Слово 2 - номер следующего
сегмента: сегменты образуют спи-
сок, последний сегмент имеет но-
мер ноль.
Слово 3 - количество занятых
сегментов, изменяется только в
первом сегменте.
Слово 4 - число дополнительных
байт в каждой записи о файле.
Система использует 14 байт - 7
слов на файл, но специальные
программы могут иметь свои сег-
менты со своей длиной описателя
файла.
Слово 5 - номер начального
блока первого файла данного
сегмента.
Стандартная запись о файле - 7
слов:
Слово 1 - тип записи в файле:
#0100 - временный
файл, при нем
используесся слово
шесть
#0200 - удаленый файл -
пустое место на
диске
#0400 - нормальный файл
#8400 - READ ONLY
#0800 - конец сегмента,
но не каталога,
конец каталога
определяется если
сегмент этот -
последний исполь-
зованый.
Не обязательно используется весь
сегмент до конца, переход на но-
вый сегмент, возможно с другой
длиной описателя файла, может
произойти в любом месте.
Слова 2, 3, 4 - имя и расшире-
ние в коде RADIX-50 - 6 и 3 сим-
вола.
Слово 5 - длина файла или пус-
того места.
Слово 6 - для временного файла
в младшем байте номер канала
связанной с этим файлом задачи,
номер которой - в старшем байте.
Слово 7 - дата создания файла:
биты 0-4 - год-1972
(т.е.1972 - 2004)
биты 5-9 - день (1-31)
биты 10-14 - месяц (1-12)
Могут быть и дополнительные
байты.
Положение файла на диске
приходится определять сложением
длин файлов начиная с первого
файла данного сегмента и по
файл, идущий перед заданным,
плюс пятое слово данного сегмен-
та. Похоже на мотание ленты в
магнитофоне по счетчику, в про-
чем данная ОС ведет свое летоис-
числение с ленточных времен.
Напосдедок добавлю, что в ОС РА-
ФОС возможны виртуальные диско-
воды-файлы, структура которых
повторяет разбивку диска.