Virtual Worlds #01
31 декабря 1999

Техпомощь - Dos Review 3: материал по формату дисковых операционных систем CP/M, ASC SOUND MASTER, RT11, СМ ЭВМ РАФОС.

<b>Техпомощь</b> - Dos Review 3: материал по формату дисковых операционных систем CP/M, ASC SOUND MASTER, RT11, СМ ЭВМ РАФОС.
 ┌────────────────────────────┐
░▒▓▓█ 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)

  Могут  быть  и  дополнительные
байты.

  Положение   файла   на   диске
приходится  определять сложением
длин  файлов  начиная  с первого
файла   данного  сегмента  и  по
файл,   идущий  перед  заданным,
плюс пятое слово данного сегмен-
та.  Похоже  на  мотание ленты в
магнитофоне  по счетчику, в про-
чем данная ОС ведет свое летоис-
числение с ленточных времен.

Напосдедок добавлю, что в ОС РА-
ФОС  возможны виртуальные диско-
воды-файлы,   структура  которых
повторяет разбивку диска.







Другие статьи номера:

От редакции - история создания журнала.

Путеводитель - подробное содержание номера.

Описание оболочки - описание оболочки и методов ее правильной эксплуатации.

Авторы - об авторах.

Ассемблер - Z80 Flags: недокументированные комманды процессора Z80.

Ассемблер - Оверлеи для JC: Описание методов создания утилит работающих под управлением Jemmini_Commander 4.0T.

Ассемблер - Секреты TR-DOS: о методах пределения наличия дисководов.

Ассемблер - Круги на воде: Алгоритмы имитации эффекта известного на других платформах, под названием "круги на воде".

Ассемблер - Поиск пути. Решение задачи "статического" поиска наикратчайшего маршрута между двумя точками.

Отдохни - Механический эффект. История о том, что бывает, если использовать презервативы сомнительного происхождения.

Железо - Глюки клавиатуры: почему в играх для двух игроков, при игре вдвоем, компьютер не слушается вашего управления и информация о том, как этого избежать.

Железо - Прерывания: Кое-что непонятное о прерываниях второго рода.

Техпомощь - Мысли вслух. Интересно письмо из конференции fido7.zx.spectrum на тему "К вопросу о стандартизации".

Техпомощь - File FAQ. Полный разбор форматов файлов, наиболее часто встечающихся в Интернет, и не только; а также способы их конвертации в "нормальный" вид.

Техпомощь - Dos Review: материал по формату дисковой операционной системы IS-DOS.

Техпомощь - Dos Review 2: материал по формату дисковых операционных систем ПК "АГАТ", Радио-86РК, SP-DOS, БК-0011М.

Техпомощь - Dos Review 3: материал по формату дисковых операционных систем CP/M, ASC SOUND MASTER, RT11, СМ ЭВМ РАФОС.

Техпомощь - Dos Review 4: материал по формату дисковой операционной системы от неизвестного автора.

DI:HALT:99 - Анализ DH:99. Наконец-то вся правда о прошедшей летом, в г.Дзержинске пати, от самих организаторов.

DI:HALT:99 - Hidden Parts. Жизнь дзержинских (и не только) спектрумистов в период проведения DI:HALT:99.

DI:HALT:99 - Результаты. После прошествия DH:99, чуть ли не каждая вторая газета, считала своим долгом придумать новый вариант результатов. Данная статья направле- на на то, чтобы окончательно поставить все точки над "И".

Программы - Alien: описание и прохождение игры по фильму "Чужой".

Программы - описание Universal AntiProtector 0.01 (программа для автоматического раскалывания ряда популярных защитных систем).

Программы - редактор игровых экранов "Белые Пятна".

Программы - Exhumator: программа для "эксгумации дисков".

Программы - чанковый графический редактор: Hard Core ver 3.01

Программы - Глаз Вопиющего: програмка позволяющая смотреть картинки, спрайты, слушая при этоммузыку.

Отдохни - Стих о Sysop'e. Поэзия однако...

Отдохни - Секс в Фидо. Юмористический расказ о том, как же на самом деле занимаются любовью заядлые фидошники.

Отдохни - Анекдоты. Подборка анекдотов с компьютерной тематикой.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Алгоритм - Один полезный трюк с ^ (алгоритм круга).
Review - Hardware Retrofetishism .
Презентация - Генератор Спрайтов v4.5 от REAL SOFT.

В этот день...   17 октября