Inferno #07
31 мая 2005

Ликбез - Подробно о дисковых форматах, имеющих FAT.

          То, что вы хотели знать о дисковых форматах,
                  но не знали, у кого спросить
                            by Nuts 

                         --------------
                         История версий
                          --------------
    xx.xx.1998 - Первая редакция в формате 42 символа в строке.
   хх.хх.1999 - Журнальная редакция в формате 32 символа в стро─
ке. Описаны MS-DOS, iS-DOS, AGAT, DOS 2.9 - РАДИО-86РК, SP-DOS -
ОРИОН-128, AO-DOS 2.02  (и  совместимые  с  ней  MicroDOS, NORD, 
NORTON, MK-DOS ) - BK-11M, CP/M (MICRODOS)  - КОРВЕТ,  РОБОТРОН, 
ОРИОН-128,  PROFI,  ATM-TURBO,  ASM  (ASC  SOUND  MASTER),  RT11 
(РАФОС,ФОДОС, ОС ДВК) - УКНЦ, СМ, ДВК, "Электроника-60М", NEWDOS 
 - письмецо из Нета.
   01.06.2000  -  Свободно распространяемая версия, 64 символа в
 строке. Добавлено описание AN-DOS (БК-11М). Всего 11 систем.
   01.09.2000  -  Переформатировано  в  редакторе  Слово  и Дело
v6.40. Добавлено  описание  Profi DOS,  VFAT  (расширение FAT) -
длинные имена в Windows. Журнальная версия, кажется, вскоре тоже
 увидит свет.
   14.10.2001  -  Журнальная  версия  вышла  в  свет.  Добавлено
описание  CP/M 2.3 by Michael Markowsky, 1995, CP/M и MX-DOS для
компьютера Специалист-МХ, диски программы Realtime Audio Player,
 2000, 2001, Halloween and Triumph.
   Ред.: Описание MB02  см. в Adventurer #13. Описание ZXVGS - в
Inferno#4. Описание  CacheVox - в  IG#5. У  меня  также  имеется 
документация  по DISCiPLE/+D на английском, она, возможно, будет 
 опубликована в следующем номере. 
   18.06.2005 (Alone Coder)  -  Добавлен  новый формат каталогов
iS-DOS, исправлены многие опечатки.Справочник разбит на 4 части. 

                           ----------
                             MS-DOS
                           ----------
   Начнем с того, что все параметры диска хранятся в 0-ом секто─
ре 0-ой дорожки. Только дело в том,что количество параметров на─ 
ращивалось вместе с версиями MS-DOS, и только в 4-ой версии мож─
но всё узнать о диске. Но поскольку форматер FLOPPY FORMAT Ивана
Рощина записывает в этот так называемый BOOT-сектор то же, что и 
сама MS-DOS, то забудем об этой проблеме и вернёмся к содержанию
этого сектора, в чём поможет таблица.
┌────────┬─────┬───────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ│ДЛИНА│НАЗНАЧЕНИЕ                                     │ 
├────────┼─────┼───────────────────────────────────────────────┤ 
│0       │3    │Команда перехода на код загрузчика             │ 
│3       │8    │Имя программы - форматера                      │ 
│#0b     │2    │Длина сектора в байтах                         │ 
│#0d     │1    │Количество секторов в кластере                 │ 
│#0e     │2    │Количество зарезервированных секторов (начиная │ 
│        │     │с начала диска)                                │ 
│#10     │1    │Количество FAT                                 │ 
│#11     │2    │Максимально возможное количество файлов в      │ 
│        │     │корневом каталоге                              │ 
│#13     │2    │Общее количество секторов на диске             │ 
│#15     │1    │Байт - описатель типа диска                    │ 
│#16     │2    │Число секторов в одной FAT                     │ 
│#18     │2    │Количество секторов на одной дорожке           │ 
├────────┼─────┼──────────────────────────────────────> DOS 3.0│ 
│#1A     │2    │Количество головок на диске                    │ 
│#1C     │2    │Количество спрятанных секторов                 │ 
│#20     │4    │Если размер диска >32M,то его размер в секторах│ 
├────────┼─────┼───────────────────────────────────────>DOS 4.0│ 
│#24     │1    │Номер диска (только винчестера) - его номер в  │ 
│        │     │BIOS                                           │ 
│#25     │1    │Резерв                                         │ 
│#26     │1    │Сигнатура расширенного сектора, т.е. только то,│ 
│        │     │что пишет DOS 4.0 и выше, содержит здесь #29   │ 
│#27     │4    │Серийный номер - пишется при форматировании    │ 
│        │     │диска, содержит индивидуальный номер и дату    │ 
│#26     │11   │Имя диска                                      │ 
│#36     │8    │Содержит "FAT12   " или "FAT16   "             │ 
└────────┴─────┴───────────────────────────────────────────────┘ 
   Что же обозначают эти цифры...
   Я старательно  буду умалчивать о работе с винчестером. Это не
потому, что я по каким-либо соображениям хочу это утаить. Наобо─
рот, ситуация с винчестером весьма поучительна для установки его
под  другие  системы, но  и гораздо более сложна для того, чтобы
описывать  её в обзоре дискетных форматов: там ведь тебе и проб─
лемы наращивания объема,и главный загрузочный раздел с возможно─
стью  размещения нескольких операционных систем, и куча форматов
 при работе с уплотненным диском... А я рассказ веду о дискетах.
   Ред.: Статья ZET-9 в этом  номере дополняет информацию Nuts'а
как раз по вопросу о файловой системе на винчестерах. 
   Для начала немного теории. Операционные системы в большинстве
своём  оперируют  не  с секторами и дорожками, а со смещениями в
абсолютных секторах. Т.е. понятие "дорожка" практически не упот─
ребляется, а существует куча секторов, начиная с нулевого  и  до
какого-то  конечного, может быть, стотысячного. Если, скажем, на
диске 10 секторов на одной логической дорожке,считая с нулевого,
то  на нулевой логической дорожке будут находится сектора с 0-го
по  9-ый, на  1-ой логической дорожке - с 10-го по 19-ый, и  так 
далее. Более того,чтобы ограничить количество бит,задающих номер
абсолютного сектора, весь диск разделяется на блоки по несколько
секторов. Причем нулевой блок может находиться и не в начале ди─
ска - может начинаться с какого-либо абсолютного сектора. Первые
сектора как раз и являются загрузочными и информационными.
   В MS-DOS такие блоки называются кластерами. Количество секто─
ров, приходящихся  на один кластер, можно узнать из загрузочного
сектора. Номер логического сектора, на котором располагается ну─
левой кластер,приходится подсчитывать на основе данных из загру─
зочного сектора, но об этом позже.
   Такая хитрая разбивка служит для того,чтобы всегда знать сво─
бодные места на диске, и разные куски одного файла записывать  в
различные области диска, куда только возможно, и  собирать  его,
даже если он не находится на последовательных секторах.  Поэтому
можно долго не заботиться об очистке диска от удалённых файлов.
   Чтобы знать место расположения каждого куска файла,служит та─
блица FAT. Каждый её элемент, начиная с первого, содержит ссылку
на тот элемент этой таблицы,где продолжается файл,номер кластера
которого  соответствует этому элементу таблицы. То есть, если мы
узнали,что начало файла находится,скажем,на пятом кластере,то мы
загружаем его и смотрим на пятый элемент таблицы FAT. А там зна─
чится, положим,число 25. Ну тогда мы спокойно читаем 25-ый клас─
тер. И  смотрим  25-ый  элемент таблицы. А он указывает на номер 
следующего  кластера - он же номер следующего элемента в таблице
или  число, означающее, что  этот кластер является последним для
этого  файла и больше ничего читать не надо. Он также может ука─
зывать, что данный сектор свободен или помечен как дефектный.
   Проблема  лишь  в том, что на дискетах размер одного элемента
равен 12 битам, и половинки каждого второго байта относятся одна
к предыдущему  байту, а  другая - к следующему. Для  определения
 содержимого элемента таблицы нужно:
  1. Умножить данный  номер кластера на 1.5, получим смещение до
пары байтов в таблице, которая содержит номер следующего класте─ 
 ра; 
  2. Если  предыдущий  кластер имел нечётный номер (определяется
по нулевому биту в номере кластера),то надо использовать 12 мла─ 
дших битов этой пары, иначе - 12 старших. 
   Если  полученное  значение равно 0, то этот кластер свободен.
Если  #FF8 - #FFF, то это последний кластер файла. #FF0 - #FF7 -
зарезервированные сектора, в том числе: #FF7 - сбойный кластер.
   Только 0-ой элемент этой таблицы является исключением. Он со─
держит копию байта-описателя данного диска. Например,для дисков,
которые можно  прочитать  на Спектруме (Ред.: имеется в виду, на
 Спектруме без доработки для чтения HD-дисков): 
               ┌─────┬────────────────────────────┐
               │Байт:│ Тип диска:                 │
               ├─────┼────────────────────────────┤
               │#f9  │ 3'5 720 kb 2SD 9SEC 80TRKS │
               │#fa  │5'25 320 kb 1SD 8SEC 80TRKS │
               │#fb  │5'25 640 kb 2SD 8SEC 80TRKS │
               │#fc  │5'25 180 kb 1SD 9SEC 40TRKS │
               │#fd  │5'25 360 kb 2SD 9SEC 40TRKS │
               │#fe  │5'25 160 kb 1SD 8SEC 40TRKS │
               │#ff  │5'25 320 kb 2SD 8SEC 40TRKS │
              └─────┴────────────────────────────┘
   Но  такие байты имеют и многие другие диски, в том числе и не
со стандартной разбивкой.
   На самом деле  в  этих  байтах-описателях  типа  используются
только младшие 3 бита, а старшие биты всегда равны единице.
   В этом байте...
 0-ой бит: 1 - двухсторонний; 
          0 - односторонний.
 1-ый бит: 1 - 8 секторов на дорожке; 
          0 - не 8.
 2-ой бит: 1 - постоянный диск; 
          0 - сменный диск.
   Для  определения начала FAT в загрузочном секторе указывается
число  зарезервированных  и  загрузочных  секторов. Там же можно
найти и количество таблиц FAT - для надежности делают  несколько
копий. После них идет корневой  каталог, размер  которого  можно
высчитать из количества файлов в нем.
   Корневой  каталог  всегда присутствует на диске. В нем содер─
жится  информация о файлах и подкаталогах 1-го уровня. Последние
представляют из себя обыкновенные файлы, но с нулевой длиной, их
размер  определяется  по таблице FAT, и они могут быть сегменти─
рованы - разбросаны по всему диску. В начале каждого подкаталога
есть описатели двух файлов: "." и ".." . Первый повторяет описа─
ние данного каталога в каталоге более низкого уровня и дублирует
информацию  об  этом каталоге. Второй - содержит описание самого
предыдущего каталога-прародителя. Оба они служат для удобной на─
вигации по диску. Если каталог-прародитель лежит в нулевом клас─
тере - то  значит, это  корневой  каталог. В этом каталоге таких
ссылок нет, но если диск загрузочный, то там находятся описатели
системных файлов.
   Описатель любого файла или каталога занимает 32 байта:
┌─────────┬────────────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ:│                   НАЗНАЧЕНИЕ:                      │ 
├─────────┼────────────────────────────────────────────────────┤ 
│0-7      │Имя  файла  или  каталога  большими буквами, остаток│ 
│         │заполнен пробелами. Если  0-ой  байт  равен  #E5, то│ 
│         │файл удалён, если #05, то  код  первой  буквы  файла│ 
│         │действительно   #E5.  Если  0  -  место  никогда  не│ 
│         │использовалось - конец каталога.                    │ 
│8-10     │Расширение.                                         │ 
│11       │Атрибуты  файла.  Биты:  0  - только для чтения; 1 -│ 
│         │скрытый  файл;  2  - системный файл; 3 - имя диска в│ 
│         │первых  11-ти  байтах,  только в корневом  каталоге,│ 
│         │начального сектора и длины не имеет; 4 - подкаталог,│ 
│         │не   использует  поле  длины,  5  -  архивный  файл:│ 
│         │заархивировали его (для сохранности) или нет.       │ 
│12-21    │Резервируются.                                      │ 
│22-23    │Время   создания   или  последней  коррекции  файла,│ 
│         │хранится  как 16-ти битное слово: биты 15-11 - часы,│ 
│         │биты 10-5 - минуты, биты 4-0 - секунды/2.           │ 
│24-25    │Дата  создания  файла  или  его последней коррекции,│ 
│         │хранится  как  16-ти  битное слово: биты 15-9 - год,│ 
│         │начиная  с  1980  и  кончая  2099  (!!!); биты 8-5 -│ 
│         │месяц, биты 4-0 - день.                             │ 
│26-27    │Номер  первого  кластера  файла,  начиная с младшего│ 
│         │байта.   Первые   два   кластера  занимает  корневой│ 
│         │каталог, все файлы начинаются со второго кластера.  │ 
│28-31    │Размер  файла  в  байтах.  Первая пара байт содержит│ 
│         │младшие разряды значения, обе пары байт начинаются с│ 
│         │младшего  байта.  Всего  длина  может достигать до 4│ 
│         │гигабайт,  но  на  формате  830k используется 20 бит│ 
│         │максимум.                                           │ 
└─────────┴────────────────────────────────────────────────────┘ 
   Вот и всё,что надо для работы с диском. Для перехода от номе─
ра кластера к абсолютным секторам нужно отнять 2 от номера клас─
тера,умножить на количество секторов в кластере и прибавить сме─
щение до второго кластера в абсолютных секторах.Затем полученное
число  нужно поделить на количество секторов на дорожке. В резу─
льтате  получим  логическую  дорожку, где находится кластер, а в
остатке - сектор.
   Замечу, что  в большинстве виденной мною литературы предлага─
лось считать корневой каталог, т. е. несколько самых первых кла─
стеров,- вроде  бы и не кластерами. Взамен вводилось понятие на─
чала  данных: следующий  после каталога второй кластер считается
вроде как нулевым, ну, и,соответсвенно,все номера кластеров счи─
таются от него, при помощи приплюсования-минусования размера ка─
талога. Словом, только лишние  вычисления. На  мой  взгляд, если
каталог лежит в нулевом кластере, то его и нужно считать за  на─
чало  данных, а не за что-то особенное. Так сделано, например, в
CP/M. 
   Но  на самом деле корневой каталог не считается первыми двумя
кластерами, а именно особой областью диска,  размер  которой  не
кратен размеру кластера. Именно  поэтому  данные  начинаются  со
второго кластера и смещение до него определяется суммой абсолют─
ного начала корневого  каталога  и  его  размера.  И  приходится
производить вычисления.
   Со  времени появления расширений данной файловой системы, ис─
пользуемых  в  Windows 9X, появилась ещё одна проблема - длинные
имена. Старая добрая MS-DOS справляется с подобной напастью - и,
хотя  имена  файлов выглядят не совсем обычно, тем не менее, ни─
какого мусора между ними не возникает,  чего  нельзя  сказать  о
многочисленных конвертерах и читалках. Если  вкратце,  то  глюки
эти  происходят  оттого, что в некорректно написанных программах
не отлавливаются заголовки, у которых в байте флагов  установлен
третий бит.
   Но мне было уж очень интересно,как же всё-таки хранятся длин─
ные  имена. Самое  интересное, что вопрос этот оказался довольно
недокументированным  (малопопулярным?)  (Ред.: закрытым. Научно─
техническая информация, по законам западного рынка,- объект тор─ 
говли). Гипотезы  я слышал самые фантастические, но точный ответ 
дала  мне документация для ОС Linux, которая поддерживает неско─
лько файловых систем (в основном редкостных и малозадокументиро─
ванных),в том числе VFAT (на которую как раз документашка оказа─
лась).
   Описание это носит название:

         NOTES ON THE STRUCTURE OF THE VFAT FILESYSTEM
---------------------------------------------------------------- 
(This  documentation  was  provided by Galen C. Hunt <gchunt@cs. 
    rochester.edu> and lightly annotated by Gordon Chaffee).

   Привожу неточный и не дословный перевод:
 

   Данный  документ  содержит очень упрощенный технический обзор
исследований расширенной файловой системы  FAT,  используемой  в 
Windows NT 3.5 and  Windows 95.  Никакой  гарантии  относительно 
корректности информации не дается. 
   Extended  FAT file system  почти  идентична  FAT file system,
применяемой в более ранних версиях MS-DOS. Наиболее важным отли─ 
чием  является  поддержка  имен  длиной до 255 символов, включая 
 пробелы, большие и малые буквы. 
   Далее следует описание традиционного хедера для Windows 95:
┌─────────┬────────────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ:│                   НАЗНАЧЕНИЕ:                      │ 
├─────────┼────────────────────────────────────────────────────┤ 
│0-7      │Имя файла                                           │ 
│8-10     │Расширение                                          │ 
│11       │Атрибуты файла                                      │ 
│12       │Регистр для имени и расширения                      │ 
│13       │Время создания (миллисекунды)                       │ 
│14-15    │Время создания                                      │ 
│16-17    │Дата создания                                       │ 
│18-19    │Дата последней модификации                          │ 
│20-21    │Зарезервировано                                     │ 
│22-23    │Time stamp ???                                      │ 
│24-25    │Date stamp ???                                      │ 
│26-27    │Номер первого  кластера  файла                      │ 
│28-31    │Размер файла                                        │ 
 └─────────┴────────────────────────────────────────────────────┘ 
   Байт  регистра  указывает - должны  ли  быть заглавными буквы
имени  и/или  расширения. Он  имеет  несколько разные значения в 
Windows 95 и Windows NT. Имя файла в стандарте 8.3, записанное в 
Windows NT маленькими буквами, будет показано в Windows 95 боль─ 
 шими буквами. 
    Всё это распространенная и доступная информация.
   Вместе  с  extended FAT system  Microsoft  добавляет дополни─
тельные  заголовки  в каталоги (если оно не укладывается в стан─ 
дарт 8.3), может даже и по нескольку для каждого файла - в зави─ 
симости от длины имени. Далее эти дополнительные  заголовки  бу─ 
дут называться слотами. Упрощенно, слот есть специальный элемент 
каталога, содержащий до 13 символов расширенного имени. Их  мож─ 
но представить как дополнительные  метки  к  заголовку  соответ─ 
ствующего файла. Microsoft  предпочитает  представлять  стандар─ 
тный заголовок 8.3 файла как сокращенное имя (alias), а дополни─ 
 тельные слоты - как имя файла. 
   Структура слота такова.
┌─────────┬────────────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ:│                   НАЗНАЧЕНИЕ:                      │ 
├─────────┼────────────────────────────────────────────────────┤ 
│0        │id - идентификатор слота                            │ 
│1-10     │5 символов имени (из 13-ти)                         │ 
│11       │Атрибут (всегда #0f, см. ниже)                      │ 
│12       │Резерв (0)                                          │ 
│13       │Контрольная сумма alias'а (заголовка 8.3)           │ 
│14-25    │Еще 6 символов имени                                │ 
│26-27    │Первый кластер файла (всегда 0, см. ниже)           │ 
│28-31    │Еще 2 символа имени                                 │ 
 └─────────┴────────────────────────────────────────────────────┘ 
   Такая разбивка слотов выглядит несколько иррационально, пото─
му что Microsoft пыталась обеспечить совместимость с более  ста─ 
рыми  версиями  своего  программного  обеспечения. Для этого ис─ 
 пользуются следующие приёмы: 
  1) Байт атрибутов в слоте равен #0F. Это означает, что  данный
файл является меткой, спрятанным, системным, защищённым от запи─ 
си, чтобы он игнорировался этим старым ПО как метка диска, хотя, 
 на самом деле, у метки установлен только один бит; 
  2) Начальный  кластер  установлен  в  0,  что  невозможно  для
 ДОС'овского файла. 
   Для  того, чтобы старое ПО могло работать с каталогами, а но─
вое - определить,к какому alias относятся расширенные слоты,при─ 
 меняются следующие методы: 
  1) Размещение. Слоты файла всегда связаны со своим alias. Вдо─
бавок, у каждого слота есть идентификатор  id,  который  показы─ 
вает порядок этого слота в расширенном имени. Ниже следует  при─ 
мер файла "My Big File.Extension which is long", с порядком сле─ 
 дования хедеров: 
         <слот #3, id = 0x43, символы = "h is long">
         <слот #2, id = 0x02, символы = "xtension whic">
         <слот #1, id = 0x01, символы = "My Big File.E">
         <нормальный хедер, имя = "MYBIGFIL.EXT">
   Это означает, идут с последнего по первый. Слоты пронумерова─
ны с 1 до N. К N'ому слоту добавлено число 64=#40, что означает, 
 что этот слот последний. 
  2) Контрольная сумма. Каждый слот содержит  контрольную  сумму
 своего alias'а 8.3, вычисленного по следующему алгоритму: 
         for (sum = i = 0; i < 11; i++)
          {sum = (((sum&1)<<7)|((sum&0xfe)>>1)) + name[i]}
   Что  означает  примерно  следующее  (для всех 11 символов): у
контрольной суммы оставить 0-й и 7-й биты, поменять их местами и 
 добавить код данного символа. 
   Все  расширенные  имена хранятся в коде Unicode, по ДВА байта
на  ОДИН  символ. Конец  имени - два нуля, а остаток заполняется 
байтом #FF. 

   Такой вот перевод. Добавлю, что, форматируя диски в Масдае95,
я  получил диск, у которого был сброшен 4-й бит медиадескриптора
(см. выше). Это, очевидно, и является признаком расширенной фай─
ловой системы FAT.

                    ------------------------
                        ASC SOUND MASTER
                    ------------------------
   Это вообще-то музыкальный редактор, но вспомнил я,что с неко─
торых версий он вообще-то обладает ещё и своим, известным только
автору, дисковым  форматом. В  редакторе было упоминание о некой
версии  CP/M  того же автора. Системы этой я и в жизнь не видел,
но я не нашел причины,чтобы на 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 бит) - номер первого блока(кластера) фай-│ 
│        │ла.О этом см. ниже.Остальные биты 12-го байта - приз-│ 
│        │нак состояния файла, а  именно, если  там  содержится│ 
│        │число: 1 - это  нормальный  файл;  5 - защищённый  от│ 
│        │удаления или записи файл; 0 - удалённый файл.        │ 
│13-14   │Длина файла в байтах.                                │ 
│15      │Всегда #00 !!!                                       │ 
└────────┴─────────────────────────────────────────────────────┘ 
   Теперь  пару  слов о сегментации. Структура диска удивительно
похожа на диск MS-DOS. Куски файла могут  занимать  произвольное
место  на диске, а в записи о файле указывается ссылка на первый
кусок. Только на данном формате диска размер куска равен  одному
сектору, и поэтому его номер можно  называть  номером  кластера,
номером блока или смещением до абсолютного  сектора.  Нахождение
разбросанных по диску таких вот кусков осуществляется при  помо─
щи  таблицы, аналогичной  FAT-12. Две копии этой таблицы, разме─
ром по 5 секторов каждая, занимают всю первую дорожку.
   Когда нужно прочитать файл,номер первого куска которого запи─
сан  в каталоге, читают вначале этот первый кусок, а затем опре─
деляют в таблице, что содержится в ячейке с номером,равным номе─
ру первого куска файла. А там содержится  номер  второго  куска.
Теперь  его  читают  и повторяют процесс с третьим. И так до тех
пор, пока  в  таблице будет не номер следующего куска, а признак
конца файла.
   При записи в таблице ищут ячейки,содержащие признак незанято─
го места на диске, и записывают в туда номер следующего  найден─
ного пустого места, а на сектор соответствующего  номеру  ячейки
таблицы записывают нужную часть файла.
   Проблема  в том, что  ячейки имеют размер 12 бит = 1.5 байта,
поэтому приходится извлекать нужную половинку из трех байт кома─
ндами сдвига.
   Первая  ячейка  таблицы всегда содержит число #AC - медиадес─
 криптор для MS-DOS:
   #000 - признак пустого места на диске;
  #FFF - признак конца файла - последняя ячейка,которая содержит
номер куска данного файла - последнего куска. 
   Словом,объяснить на словах это трудно. Ежели кому надо разби─
раться - изучайте на практике, а краткое описание я закончил.

                    ------------------------
                           Profi DOS
                    ------------------------
   Продолжая разговор о дисках,в которых структура FAT аналогич─
на MS-DOS, упомяну и про эту систему. Диски  для  неё  полностью
копируют структуру MS-DOS. Системные (загрузочные) файлы хранят─
ся  на  строго фиксированных местах. Упоминавшиеся в документаш─
ках  USER области  пока  замечены не были, а посему не могу ска─
зать, где в хедере файла хранится номер области, если он хранит─
ся вообще.

         (Про FAT-систему AN-DOS для БК см. в 4-й части)
                         -----------
                            iS-DOS
                          -----------
   Как свидетельствует программа FLOPPY FORMAT Ивана Рощина, эта
DOS поддерживает восемь разбивок диска, которые могут очень даже
сильно  отличаться  друг  от  друга, т. к. размер  сектора может
быть  как 256, так и 1024 байта (у запускаемых дисков). Количес─
тво  секторов  при  этом будет 16 или 5 соответственно. Диск при
этом может быть как односторонним, так и двухсторонним.
   Внимания  заслуживает  порядок секторов на дорожке. Поскольку
диск может быть автозапускаемым, то,хотя на нём и находится по 5
секторов на дорожке, последний из них имеет номер 9.
   Теперь  рассмотрим  структуру диска. Её описание находится на
диске  с ассемблером  iS-DOS. Но оно рассчитано на программиста,
работающего непосредственно в этой DOS. Здесь же я изложу основ─
ные факты из этого описания.
   "Внутри"  iS-DOS абсолютно ВСЕ устройства хранения информации
представляются набором блоков,по 256 байт каждый,с номерами от 0
до  некого максимального. Положение любого файла и вообще любого
нужного  места  на  диске задается смещением относительно начала
диска - 0-го блока. И измеряется это смещение в этих  же  блоках
по  256 байт. Т. е. не так важен размер сектора. Для определения
 дорожки и сектора можно воспользоваться формулами:
               ДОР. = INT(СМЕЩ./ 5120) (или /4096)
         СЕКТ. = INT((СМ.-ДОР.*5120)/1024) (или /4096)
   А остаток  от разности между смещением до сектора и смещением
 до нужного блока даст нам смещение внутри 1024-байтного сектора.
   0-ой блок - это 0-ой сектор 0-ой дорожки. В нём содержится:
┌────────┬─────┬───────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ│ДЛИНА│НАЗНАЧЕНИЕ                                     │ 
├────────┼─────┼───────────────────────────────────────────────┤ 
│0       │2    │Резерв.                                        │ 
│2       │8    │Имя устройства (диска).                        │ 
│10      │3    │Признак iS-DOS: "DSK". По нему можно определить│ 
│        │     │принадлежность диска к этой системе.           │ 
│13      │3    │[Признак iS-DOS 2000: тоже "DSK".]             │ 
│16      │2    │Резерв.                                        │ 
│18      │2    │Объем диска в блоках.                          │ 
│20      │2    │Номер 0-го блока главного каталога. Для дисков │ 
│        │     │80TR/DS обычно 3-ий, т.е. тот же 0-ой сектор   │ 
│        │     │для 1024 байтовых секторов. Или же 3-ий -      │ 
│        │     │для 256 байтовых.                              │ 
│22      │1    │Количество цилиндров на устройстве (для HDD).  │ 
│23      │1    │Тип диска - биты (0/1):                        │ 
│        │     │0-ой - 40/80 дорожек;                          │ 
│        │     │1-ый - 1/2 стороны.                            │ 
│24      │1    │Размер сектора. 1/2/4: 256/512/1024 байта.     │ 
│25      │1    │Количество секторов на дорожке.                │ 
│26      │1    │Резерв.                                        │ 
│27      │1    │Контрольная сумма файла ????_dos.sys. Это нечто│ 
│        │     │вроде MAGIC'а - копия памяти компьютера с      │ 
│        │     │системой. Загружается и разгружается он особыми│ 
│        │     │программами, а его параметры хранятся в особом │ 
│        │     │месте. ???? - четыре любых символа.            │ 
│28      │2    │Резерв.                                        │ 
│30      │2    │Дата (чего ???).                               │ 
│32      │32   │Описатель файла(см.ниже) ????_dos.sys (см.выше)│ 
│64      │16   │Таблица номеров секторов.                      │ 
 └────────┴─────┴───────────────────────────────────────────────┘ 
   1-ый блок  содержит бит-карту устройства: каждый её бит соот─
ветствует своему  блоку на устройстве. 1 бит/блок: 0 - свободен,
1 - занят. 
   Подобная  таблица - битовая  карта диска, часто применяется в
различных операционных системах.
   Теперь поговорим о файлах и каталогах. Мы уже знаем,где нахо─
дится главный каталог. Полезно вспомнить, что файлы в iS-DOS бы─
вают не только сегментированными, как в MS-DOS, но и непрерывны─
ми, как в TR-DOS.
   Т. е. файл  может  быть разбросан кусками-сегментами по всему
диску, будет долго грузиться, и восстановить его после того, как
запись  в каталоге о нем будет испорчена, крайне затруднительно.
Но забот о чистке диска от удалённых файлов почти не станет.
   Также файл может быть  непрерывным,  грузиться  будет быстро,
но проблемы с командой MOVE или,точнее, SQUEEZE (так она называ─
ется  в  HOBET'е  на ПЦ) знакомы всем спектрумщикам (если они не
работают под эмулятором). Правда,по некоторым сведениям,эта про─
блема разрешима (см. ниже),но как - пока неизвестно. Большинство
(ВСЕ?) конверторы IBM<>ZX работают по принципу условной последо─
вательности секторов файла, а если писать свой конвертер IS<>TR,
то  можно сделать этот файл и несегментированным, но для полноты
картины  надо  рассказать, каким образом система iS-DOS собирает
сегменты своих файлов с диска.
   Так  вот, в  каталоге  описатель такого файла содержит ссылку
не на начальный блок файла как такового, а ссылку на особый блок
- Таблицу Размещения Секторов Файла или, как его называют в фир─
менном  описании, Блок Описателя Сегментов Файла. 0-ой  его байт
содержит  количество сегментов файла - на сколько частей он раз─
бит. Остальные  255  байт содержат 85 3-байтовых записей, каждая
из  которых  описывает свой сегмент файла. Первые два байта каж─
дой  содержат  номер  нулевого  блока этого сегмента, а третий -
число блоков в сегменте.
   И  для  чтения  нужного файла нужно сначала определить начало
этого Описателя, затем считать его. Потом организуется  цикл  по
количеству сегментов. По первым двум байтам каждой тройки  опре─
деляется начало конкретного сегмента и обыкновенным образом счи─
тывается последовательность секторов,содержащих блоки этого сег─
мента. При необходимости нужно позаботиться об исключении ненуж─
ных остатков первого и последнего секторов. Для последнего  бло─
ка это можно сделать простой  манипуляцией  с  адресом  загрузки
следующего сегмента. А вот с первым сложнее. Придется делать пе─
ремещения командой LDIR или читать сектора в  промежуточный  бу─
фер. Но в любом случае размер 1024 байт придется учитывать.
   Для сохранения файлов придется также побеспокоить битовую ка─
рту диска. Нужно искать незанятые блоки - соответствующий им бит
будет  сброшен. Его нужно установить, затем заполнить нужную за─
пись в Блоке Описателя или  добавить блоков к старой записи. Де─
лать эти операции лучше в ОЗУ.
   Каталоги, как  ни странно, представляют из себя почти обычные
файлы, но  у  них два описателя: внешний - в каталоге-родителе и
внутренний - в  нем  самом. У  главного каталога только внутрен─
ний  описатель - его  0-ой файл. Именно  во внутреннем описателе
содержится  информация  количестве  файлов и уровне вложенности.
Кроме того, запись о файле/каталоге содержит определяющую метку,
показывающую принадлежность файла к определенной группе (см. ни─
же). Следует  также помнить об ограничениях: кол-во файлов в ка─
талоге - до 128, уровень вложенности - до 6. Каталог тоже  может
быть сегментированным или несегментированным.
   Теперь  подробнее  о структуре описателя файла. Замечу, что в
описании структуры записи внутреннего описателя каталога мне  не
всё стало ясно.
┌────────┬─────┬───────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ│ДЛИНА│ОПИСАНИЕ                                       │ 
├────────┼─────┼───────────────────────────────────────────────┤ 
│0       │8    │Имя файла                                      │ 
│8       │3    │Тип файла                                      │ 
│11      │1    │Регистр состояния файла:                       │ 
│        │     │бит (0/1)                                      │ 
│        │     │0 - удалён/существует                          │ 
│        │     │2 - защищён от чтения (1)                      │ 
│        │     │3 - защищён от записи (1)                      │ 
│        │     │4 - видимый/скрытый файл                       │ 
│        │     │5 - файл/каталог (корневой файл)               │ 
│        │     │6 - сегментированный/несегментированный        │ 
│        │     │7 - защищён от удаления (1)                    │ 
│12      │2    │Адрес загрузки по умолчанию                    │ 
│14      │3    │Длина                                          │ 
│17      │2    │Номер Блока Описателя Сегмента или 0-го блока  │ 
│        │     │файла - если файл непрерывен                   │ 
│19      │1    │"Special"                                      │ 
│20      │6    │Резерв                                         │ 
│26      │2    │Контрольная сумма файла                        │ 
│28      │2    │Время                                          │ 
│30      │2    │Дата                                           │ 
└────────┴─────┴───────────────────────────────────────────────┘ 
   Дата и время кодируются,как в MS-DOS. Контрольная сумма, воз─
можно, тоже.
   Вот что известно про описатель внутреннего каталога:
┌────────┬─────┬───────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ│ДЛИНА│ОПИСАНИЕ                                       │ 
├────────┼─────┼───────────────────────────────────────────────┤ 
│0       │8    │Имя текущего каталога.                         │ 
│8       │3    │Его тип (пробелы).                             │ 
│11      │1    │CSR (атрибуты ???) каталога.                   │ 
│12      │2    │CBNN (похоже, начальный блок) каталога -       │ 
│        │     │прародителя.                                   │ 
│14      │2    │Размер каталога (в байтах).                    │ 
│16      │1    │Уровень вложенности каталога (до 6)            │ 
│        │     │ [или 0 для iS-DOS 2000].                      │ 
│17      │2    │Номер блока описателя сегмента. (Это интересно.│ 
│        │     │Каталог может быть непрерывным, тогда здесь    │ 
│        │     │может быть и номер первого блока. Но тогда для │ 
│        │     │определения в CSR должны быть биты состояния.) │ 
│19      │2    │Номер 0-го блока каталога (это тогда зачем?).  │ 
│21      │1    │Общее число файлов.                            │ 
│        │     │(включая сам каталог и удалённые).             │ 
│22      │1    │Число файлов                                   │ 
│        │     │(без каталога и удалённых).                    │ 
 └────────┴─────┴───────────────────────────────────────────────┘ 
   Ред.: Структура  каталогов на дисках iS-DOS поздних версий (к
ним относятся "Open Letters" ) несколько изменилась. Плагин xISD 
HalfElf'а  к  Far'у  понимает  "новый" iS-DOS (2000) и позволяет 
копировать с/на него файлы. Дополнение по исходникам xISD: 
│23      │1    │levelChic (уровень вложенности каталогов до 32)│ 
│24      │6    │Резерв.                                        │ 
│30      │2    │Дата.                                          │ 
└────────┴─────┴───────────────────────────────────────────────┘ 
Цитата из А. Леонтьева: "24.12.96  уровень  вложенности каталога 
перенесен из 16-го байта описателя файла в 23-ий,т.к.16-ый байт, 
строго говоря, является старшим байтом длины файла и, хотя ката─ 
логи и не бывают длиной более 16 блоков, но при отладке программ 
бывали случаи,когда это совмещение изрядно вредило. <...> в ста─ 
рой системе  через открытый как файл каталог становятся доступны 
для  чтения и, что самое страшное, для записи блоки, находящиеся 
далеко за пределами каталога!" 

                    -----------------------
                        CP/M (MICRODOS)
                    -----------------------
   В  том  или  ином виде эта система использовалась на огромном
количестве компьютеров. Многие зарубежные и отечественные произ─
водители ПК пытались использовать эту систему на своих компьюте─
рах. Пытались  делать  это и на СПЕКТРУМ'е. Но тогда были чудес─
ные  времена, когда формат 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, к  тому  же  разных  версий. Стало понятно, что читать 
диски от разных компов можно, но как их различать - неизвестно.
   Вот и приходится с трудом разбираться, что к чему.
   Про  КОРВЕТ  и  ОРИОН  немало  говорилось  в журналах РАДИО и
РАДИОЛЮБИТЕЛЬ. Я также пытался изучить диск от PROFI, но с ним у 
меня получилась печальная история. Я попросил сделать копию это─
го единственного диска при помощи NEXTCOPY. В результате  исход─
ный  диск  испортился, а на мой диск скопировались пара дорожек,
содержащих  каталог. И  при  помощи его я и узнал общие принципы
хранения информации на таком диске.
   Разбивка была, как и на КОРВЕТ'е и других машинах,на 5 секто─
ров по 1024 байта. И такой формат следует признать общим. Описа─
тели каталога состояли из 32 байтов, из которых 16 последних яв─
но описывали блоки, на которых были расположены байты.
   И только  много  позже  я узнал некоторые подробности. К этой
поре  я уже  походил  в библиотеку  и уже поставил себе эмулятор
этой системы: MYZ80 v 1.0 by Simeon Cran. Он,правда, использовал
виртуальный диск, который не совсем похож на реальные. Но  неко─
торые интересные вещи я оттуда извлек. Потом я  подробно  изучил
документацию к КОРВЕТ'у и ещё много чего выяснил.
   Все  осложняет  наличие самых разнообразных единиц измерения:
от записей по 128 байт до экстентов и блоков по 32(16) Кб и 4(2)
Кб. И похоже,что все размеры отличаются в зависимости от версии. 
   Но общие принципы не меняются. Где-то на диске расположен ка─
талог: у PROFI на второй дорожке, у РОБОТРОН'а на третьей.
   На файл уделяется по 32 байта, но в старых системах было и по
33.  Описатель   содержит  в  себе  цепочку  байтов - последова─ 
тельность  блоков, в  которых помещается файл. Таким образом, на
диске  эмулятора можно было создавать файлы до 32768(16384) байт
длиной. Но для систем с жесткими дисками максимальная длина упо─
минаемая длина достигала 8Мб. Также ограничивается и размер дис─
ка: около 256Мб. Но и эту  проблему можно преодолеть увеличением
размера блоков. Также упоминается возможность создавать  цепочки
из  нескольких  описателей  для одного файла, всего до 16. А от─
дельные куски больших файлов  получили  название  экстентов.  На
следующий  описатель  раньше  указывал  33-ий байт. Позже за это
стал отвечать байт с другим номером.
   Каталоги в этой системе не поддерживаются. Но существует одна
примечательная возможность. Дело в том, что раньше на одну маши─
ну  приходилось по множеству пользователей. А даже гибких, не то
что  жестких, дисков было мало. Надо было решать вопрос о разде─
лении данных на дисках. Поэтому было решено разбить диск на нес─
колько USER-областей, всего до 16, но теоретически до 255. Ката─
лог был общим, но в описателе каждого файла содержалась  пометка
принадлежности  файла  к определенной области. Таким образом, на
одном  жестком  диске существовало несколько логических, как и в
MS-DOS. Но диск при этом рассматривался как единое целое, и про─ 
цедуры загрузки, записи и удаления файлов, а также чистящие ути─
литы, не определяли принадлежность файла к определенной области,
и разделение было чисто внешним.
   Теперь можно рассмотреть описатель файла более подробно:
┌────────┬─────────────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ│ЗНАЧЕНИЕ                                             │ 
├────────┼─────────────────────────────────────────────────────┤ 
│0       │Он как раз и содержит номер USER - области,  к  кото-│ 
│        │рой принадлежит файл. Используя его  можно  организо-│ 
│        │вать не очень развесистую, но весьма обширную  струк-│ 
│        │туру каталогов. Все системы ограничивают число облас-│ 
│        │тей до 15, но при помощи небольшой переделки эту циф-│ 
│        │ру можно увеличить до 255. Если файл удалён, то нуле-│ 
│        │вой его байт равен #E5.                              │ 
│1-8     │Имя файла.                                           │ 
│9-11    │Расширение. Cтаршие биты этих байтов содержат атрибу-│ 
│        │ты: 9-ый - только чтение, 10-ый - системный файл.    │ 
│12      │Номер  текущего  экстента, номер того 16-килобайтного│ 
│        │блока файла,которому соответствует текущий описатель.│ 
│13-14-15│Системная информация. Судя по документации  для  Кор-│ 
│        │вет'а, байт 13 указывает количество байтов  в послед-│ 
│        │ней записи файла, общее число которых также содержит-│ 
│        │ся в байте 15.                                       │ 
│        │   Но при детальном исследовании выяснилось, что байт│ 
│        │15 содержит длину данного экстента в записях, по  128│ 
│        │байт каждая. Максимально это число достигало  128,  и│ 
│        │при большей длине создавался новый экстент.          │ 
│16-31   │Карта размещения файла. Она  состоит  из  восьми  пар│ 
│        │байт, каждая из которых содержит значения  блока,  на│ 
│        │котором содержится часть файла.  В  эмуляторе  размер│ 
│        │блока равен 4096 байт, на  РОБОТРОН'е  и  КОРВЕТ'е  -│ 
│        │2048 байт.                                           │ 
└────────┴─────────────────────────────────────────────────────┘ 
   Остаток сектора может быть заполнен кодом #E5.
   В  принципе, данной информации уже достаточно и для чтения, и
для  записи  файлов. Тем  не  менее, в  старых системах на диске
также размещалась битовая карта на 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'ом v1.0, како─
вая версия ещё работала на любом 128'ом. Диск - как в TR-DOS: 16
секторов по 256 байт, блоки вроде по 4096, но НИКАКОГО  признака
для их определения, кроме байтов #E5 в начальных секторах. Рабо─
тать с ними, в общем,возможно. Установленные седьмые биты первых
двух  букв  расширения файла соответствуют атрибутам READ ONLY и
SYSTEM, что для вышеупомянутого коммандера означает HIDDEN: файл 
с таким битом просто так в каталоге уже не показывается. Так же,
как и в КОРВЕТ'е, используются байты 12 и 15 описателя файла.
   Под Скорп CP/M адаптировал г-н MOA аж в 1992. Плохо  это  или
нет, да  только образчик такого диска у меня пока один, под наз─
ванием  типа  SEXDEMO - есть  на нем какие-то картинки и музоны,
пара исполняемых файлов... Только вот Скорпа -то у меня  нетуть,
под эмулем прут какие-то READING ERRORS 8-!, а при детальном ос─
мотре файлов в них обнаружились то ли разрывы, то ли дырки,заби─
тые  нулями. Да и структура каталога заметно отличалась от стан─
дартной: в  табличке  описания  местонахождения  блоков файла на
диске было заметно, что на каждый  блок  уделяется  не  по  паре
байт, а по одному байту. Это и понято: при  размере  блока  4096
байт на диске их поместится около 150. Но эти разрывы в  катало─
ге, заполненные нулями, заставляют меня подождать других  образ─
цов или информации.
   Чуть позже я достал прогу TT 3.02, в кою была встроена возмо─
жность читать CP/M -овские диски. И, как оказалось,читает она их
неплохо, несмотря на разрывы. При  небольшом  взломе  оказалось,
что процедура чтения довольно хитра. Детально я  разбираться  не
стал,потому как стал сильно сомневаться в достоинствах этой сис─
темы.
   Снова  диски  CP/M  PROFI  появились  у  меня  благодаря г-ну
Melted'у Snow, за что ему большой thanks. Были это диски от про─ 
фийной  якобы SP-DOS with Concurent BIOS (или что-то там такое -
в общем, всё та же CP/M ). При их  рассмотрении выяснилось ниже─
следущее.
   Во-первых, каталог находится на первых четырех секторах нуле─
вой дорожки. Формат оного каталога соответствует стандарту.
   Во-вторых, размер блока - 2048 байт, то бишь,каталог занимает
первые два блока: нулевой и первый.
   В-третьих, стандартная  разбивка,- вроде бы, пять секторов по
1024  байта. Но на нулевой дорожке последний сектор всегда имеет 
нумер  девять. Ясно, что вышепоименованный сектор служит для ав─
тостарта  из  под  TR-DOS - на ЗАГРУЖАЕМЫХ дисках там всегда си─
дит файл BOOTK (или что-то в этом духе). А на незагружаемых дис─
ках  там  может  размещаться  любой  файл, что создает некоторую
трудность при его чтении - приходится делать корректировки.
   Но достоинством такого диска (он,похоже,был отформатирован не
стандартным, в смысле, не системным форматером) было чередование
секторов  1:1  и  без  всяких смещений. У загрузочного диска (он
уже, скорее,был отформатирован стандартно) было смещение -1 (или
6 - на первой дорожке 1,2,3,4,5; на второй 2,3,4,5,1 ).Я дописал 
программку для SOFTCOPY - первый диск  читался  гораздо  быстрее
второго. Конечно, когда пишешь какой нибудь хитрый автоподстраи─
вающийся  лоадер, сей  факт  не имеет никакого значения, но факт
остаётся фактом.
   Далее у меня появились эмуляторы и диски от ОРИОН'а. Как ока─
залось, их структура полностью идентична дискам КОРВЕТ'а, только
в загрузочном секторе прописан другой адрес для загрузки  систе─
мы и, соответственно, изменилась контрольная сумма; как  считать
её - всё так же неизвестно.
   Кроме  того, от  Capry/STALL  получены  диски  и информация о
Спектрум-совместимом  ПК "Кворум". Как оказалось, эти диски тоже
совместимы  по формату  с КОРВЕТ 'овскими, естественно, со своим
клоном операционной системы.
   Аналогичная   ситуация   и  с  версией  CP/M  для  компьютера
 Специалист-МХ. Образец диска можно взять по адресу: 
       [http://avshsoftware.by.ru/download/bst_cpm0.zip]
   Но у него есть ещё и собственная ДОС (см. ниже).
   Другое  дело  CP/M 2.3  by Michael Markowsky (KLUG), 1995. На
Klug BBS можно  найти  документацию на переработку Пентагона под 
эту  систему  и  образ  диска с системой и утилитами. Содержимое
 этой BBS можно найти в Интернете по адресу:
                  [ftp://osin.iasnet.ru/klug/]
   Там в подкаталоге SINCLAIR есть файлы: ZXCPM.LZH,SYSZXCPM.LZH
и ZXCPM.ZIP, в них - всё необходимое.
   Опознать дискету  можно, например, по  стрингу  "CP/M BIOS "+
"Ver 2.3, Michael Markowsky (C) 1995", находящемуся  по смещению 
#297=663, в нулевом секторе нулевой дорожки. 
   Экстенты   начинаются  с  4-ой  дорожки,  0-го  сектора - там
находится каталог. Размер каталога - 2 экстента.Размер экстентов
- 2 сектора, т.е., как обычно, - 2 Кб.
   Какой же из всего этого следует вывод?
   CP/M -совместимость  компьютера абсолютно ничего не говорит о
разбивке его диска.Но в целом приведенной информации должно хва─
тить для работы хотя бы со стандартными КОРВЕТ 'овскими дисками.
А точнее,для работы с CP/M придется написать настроечный модуль,
определяющий  или  запрашивающий  подвид системы и настраивающий
системные  переменные. А  уж  потом  универсальная программа при
помощи  этих  переменных будет работать практически с любым CP/M
диском.
   Примером  такой  программы  может  служить писишная 22Disk by
Sydex, inc.  Она, в частности  может работать с CP/M компьютеров 
Spectrum +3  и Amstrad. Есть также и конфигурация для PROFI. Но, 
как известно, PC is...
                    ------------------------
                     Realtime Audio Player
                   a project by PSB^Halloween
                   vizualize by blade^triumph
               2000, 2001, Halloween and Triumph
                    ------------------------
   Этот  плейер работает с дисками своего формата, и записана на
них музыка в WAVE-виде. Описание - непосредственно из документа─
ции к программе.
   Дорожек 80, стороны 2 (обязательно), сектора такие:
┌──────────┬─────┐ 
│физ.номер │длина│ 
│    0     │ 128 │ 
│    1     │1024 │ 
│    2     │1024 │ 
│    3     │1024 │ 
│    4     │1024 │ 
│    5     │1024 │ 
└──────────┴─────┘ 
    Т. е. на диске 800 k под данные (беззнаковый wav,8 bit,mono)
и на 0-й дороге 0-й сектор - информационный. На остальных треках
его  создавать  не  обязательно. Кстати, 0-й - это, в смысле, на
самом деле (физически) нулевой, т.е. если пользоваться #3D13, то
его надо указывать как -1 (#FF). Формат info-сектора такой:
┌────────┬─────┬───────────────────────────────────────────────┐ 
│Смещение│Длина│Назначение                                     │ 
├────────┼─────┼───────────────────────────────────────────────┤ 
│   0    │ 15  │Идентификатор "RAP format v1.0"                │ 
│  15    │ 1   │Номер диска                                    │ 
│  16    │ 32  │Название "TRACK: ..."                          │ 
│  48    │ 11  │Время "TIME: MM:SS"                            │ 
│  59    │ 2   │Частота дискретизации (rate) wav'а             │ 
│  61    │ 21  │Количество дорог на каждом из дисков           │ 
└────────┴─────┴───────────────────────────────────────────────┘ 
   Номер  диска  задаётся  числом  от 0 до 20 (всего 21 диск), а
количество  дисков определяется количеством байт, не равных #FF,
по  смещению  +61. Таким образом, info-сектора каждого из дисков
одного и того же музона отличаются только номером (+15). 
   Таким  образом, определить  диск  этот  можно, но  не по 0-му
сектору нулевой дорожки, как  это можно сделать со всеми другими 
системами, а специально читая #FF-ый сектор.

                       -----------------
                         DOS ПК "АГАТ"
                       -----------------
    Все данные о нём я почерпнул в книге:
  Мымрин М.П. Конструкция, применение, программирование и ремонт
             ПЭВМ "АГАТ". М.:Машиностроение, 1990 г.
   Книга  эта  весьма  подробная и содержит полную информацию об
этом ПК, включая  схему  и  разные  доработки,  а  также  тексты
кое-каких прог.
   Формат  диска: 35  дорожек  (а может быть, физически-то и все
40 ),на каждой по 10 секторов по 256 байт. И, скорее всего, одна 
сторона.
   Из  этих  дорожек  нулевую, первую  и  вторую занимает ДОС, а
каталог  находится  в  самой  середине диска - на 17-ой дорожке.
Причем  всё  указывает  на  то, что  секторы его идут в обратном
порядке: начинается  он  на  15-ом секторе и, если он помещается
на одной дорожке, оканчивается на 0-ом.
   В начале сектора расположены три важных байта. 1-ый - признак
продолжения каталога: если он равен нулю, то процесс  считывания
секторов  каталога  можно  прекращать. Иначе во втором и третьем
байтах  содержатся дорожка и сектор продолжения каталога. И вот, 
если  каталог находится только на одной дорожке, то на всех сек─
торах второй байт ссылается на 17-ую дорожку, а третий байт  бо─
лее старшего сектора - на более младший: 2-ой байт 15-го сектора
равен  14, указывая, что  следующий сектор каталога находится на
14-ом секторе. Аналогичным образом  14-ый  сектор  ссылается  на 
13-ый, 13-ый на 12-ый и т.д., а вот  0-ой  сектор  ссылается  на 
15-ый, будто  бы каталог  закольцован. (Но я надеюсь, что первый 
его  байт равен нулю.) Иначе второй и третий байты нулевого сек─
тора содержат дорожку и сектор продолжения каталога.
   После  этих  трех байт идут 8 зарезервированных байт, а затем
поле описателей файлов.
   На каждый файл отводится по 36 байт, а именно:
┌─────────┬────────────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ:│                   НАЗНАЧЕНИЕ:                      │ 
├─────────┼────────────────────────────────────────────────────┤ 
│ 0       │Номер дорожки и ...                                 │ 
│ 1       │номер сектора размещения файла. Кроме того,1-ый байт│ 
│         │описателя удалённого файла увеличивается  на  160, и│ 
│         │данные о нем сохраняются. Отсюда видно, что теорети-│ 
│         │чески можно использовать и дисководы на 80  дорожек,│ 
│         │или двухсторонние на 40, но не 80TR/DS, или уж файлы│ 
│         │при этом удаляются по-другому.                      │ 
│ 2       │Тип файла:                                          │ 
│         │2 (1-ый бит) - бейсик;                              │ 
│         │4 (2-ой бит) - двоичный (0 - текстовый);            │ 
│         │7-ой бит - защита от записи.                        │ 
│ 3-32    │Имя файла.                                          │ 
│ 33-34   │Длина файла в секторах.                             │ 
│ 35      │Резерв.                                             │ 
└─────────┴────────────────────────────────────────────────────┘ 
   Только вот неизвестно: то ли один описатель файла может нахо─
диться на разных секторах, то ли остаются свободные байты.
   И  насчет сегментации. Каталог явно может быть сегментирован─
ным. Но вот файлы... В вышеупомянутой книге содержится  не  сов─
сем понятное объяснение. Первые два байта описателя могут содер─
жать ссылку на ссылку размещения файла.
   Т. е. они  указывают  на  расположение (дорожку и номер) того
сектора, в  байтах  13-ом  и 14-ом какового содержатся дорожка и
сектор, где начинаются или продолжаются данные. Но тогда как это
различить? Как определить занятость секторов при  записи  нового
файла, и  вообще  почему 13-ый и 14-ый байты сектора, отведенные
по  данные  файла, используются для других целей? Может быть это
особые сектора, содержащие только ссылки, или на это используют─
ся пропавшие байты в секторах каталога?
   Впрочем, вопрос  о сегментации  файлов, хотя и является самым
сложным, является также наименее освещённым в литературе.
   Как  показали  дальнейшие  исследования дисков от APPLE 2, их
формат действительнно совместим или совпадает с вышеприведённым.
Кодировка текста в каталоге (и не только): большие буквы ASCII +
+ 128. 

                    ------------------------
                      DOS 2.6 (РАДИО-86РК)
                    ------------------------
   Основным  достоинством РАДИО-86РК является подробное описание
 в массовом радиожурнале. И описание его ДОС найдено там же:
                РАДИО 93 г., номер 1, стр. 13-16.
   Ну так вот... 80 дорожек: чётные (0, 2, 4...) - сверху,нёчет─
ные - снизу. Пять  секторов по 512 байт - FM метод записи. Поря─
док секторов: 0,3,1,4,2.
   Карта  и каталог диска находится на 32-ой дорожке. Карта - на
0-ом её секторе. Это 160 байт, описывающих занятость секторов на 
соответствующей дорожке. Каждый из пяти младших  битов  отвечает
за свой сектор.
   Например, первой  дорожке  соответствует  первый  байт  этого
сектора. Пусть  значение  нулевого  байта равно #1E (11110 bin). 
Это  означает, что заняты сектора 1,2,3,4, но не 0. Значение #1F
(11111 bin) означает, что  все сектора заняты. #0B (01011 bin) - 
сектора 0,1,3 и т.д.
   Затем идёт каталог диска. На каждый файл выделяется 28 байт:
┌────────┬─────────────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ│ЗНАЧЕНИЕ                                             │ 
├────────┼─────────────────────────────────────────────────────┤ 
│0       │Дорожка и ...                                        │ 
│1       │...сектор следующего сектора каталога. Если 0-ой байт│ 
│        │равен нулю, то это значит, что продолжения не будет. │ 
│2-5     │Резерв, заполнен #00.                                │ 
│7-16    │Имя файла, остаток заполнен #00.                     │ 
│17      │Т.н. нулевой файл - если файл удалён, то первый байт │ 
│        │его имени равен #FF, а сюда записывается первая буква│ 
│        │его имени.                                           │ 
│18-20   │Расширение файла.                                    │ 
│21-22   │Дорожка и сектор размещения т.н. T/S LIST (см. ниже).│ 
│23-24   │Адрес загрузки.                                      │ 
│25-26   │Длина в секторах.                                    │ 
│27      │Атрибуты файла.                                      │ 
 └────────┴─────────────────────────────────────────────────────┘ 
   T/S LIST или, точнее, TRACKS/SECTORS LIST - список  дорожек и
секторов, на  которых  содержится  нужный файл. Первые два байта
этого сектора содержат ссылку на продолжение этого списка, иначе
это  нули. Далее  идет  некоторое количество пар байт (а точнее,
это количество содержится в описателе файла). Каждая пара содер─
жит  дорожку  и  номер очередного сектора файла. Ну, а признаком
окончания списка служат два нуля.
   Не могу только сказать, как располагаются описатели файлов по
секторам: то  ли  впритык, и  тогда один описатель может быть на
двух  разных секторах, или же в каждом секторе каталога остаются
неиспользованные  байты. Однако в любом случае каталог оставляет
немало байт для всякого секретного использования.

                    ------------------------
                       SPDOS (ОРИОН-128)
                    ------------------------
   Описание из журнала РАДИО №°2/93.
   Система эта предназначалась для быстрой дискофикации ОРИОН'а,
при  совместимости  со старым ПО. В дальнейшем она была заменена
на  более  распространенную систему CP/M. Но вопрос о её профес─
сиональности, совместимости и прогрессивности слишком отдалён от
темы  и в дальнейшем  может быть изложен лишь касательно формата
диска. А пока речь пойдет про её предшественицу.
   Две  стороны, 80  дорожек. Пять  секторов  по 1024 байта. Все
счисление  ведется в блоках - секторах по 1024 байта,- и положе─
ние на диске задается смещением в этих блоках. Вся нулевая доро─
жка  зарезервирована: блоки 0-9 не используются. На первой нахо─
дятся два каталога вместе с картой диска (по 2 Кб): резервный на
секторах  1  и  2  (блоки  10 и 11) и основной на секторах 6 и 7
(блоки 15 и 16). И на дорожках с 2-ой по 79-ю (блоки 20  -  799) 
размещается область данных - 780 Кб.
   В  каталоге  находится  до 78 описателей файлов, по 16 байт в
каждом, а именно:
┌────────┬─────────────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ│ЗНАЧЕНИЕ                                             │ 
├────────┼─────────────────────────────────────────────────────┤ 
│ 0-7    │Имя файла. Если первый его байт равен #E5, то этот   │ 
│        │файл удалён, а если - #00, то значит, каталог окон-  │ 
│        │чился.                                               │ 
│ 8-9    │Адрес загрузки файла.                                │ 
│ 10-11  │Размер файла в байтах.                               │ 
│ 12     │Атрибуты файла:                                      │ 
│        │7-ой бит - защищён от записи;                        │ 
│        │4-ый бит - файл создан фиктивно - только в каталоге. │ 
│ 13-15  │Зарезервированы.                                     │ 
└────────┴─────────────────────────────────────────────────────┘ 
   Замечу, что 78*16=1248. Это означает, что в каталоге осталось
ещё 800 байт места. И вот 780 из них используются  для  размеще─
ния таблицы размещения файлов.
   Если  её  байты  условно  пронумеровать от 20 до 799, получим
прямое  соответствие между каждым байтом и блоком на диске. Если
значение  какого  либо  байта  равно #E5, то соответствующий ему
блок  свободен, а если его значение - #FF, то он дефектный. Ина─
че  его  значение будет от 1 до 78, в соответствии с тем, какому
файлу  этот  блок принадлежит, или, точнее, номеру позиции этого
файла в каталоге.
   Таким  образом, совсем  не нужно записывать положение первого
сектора  (блока) файла или создавать таблицу расположения секто─
ров каждого файла. Для чтения файла нужно определить его  поряд─
ковый номер в каталоге, если он неизвестен, а затем  сканировать
таблицу  расположения  файлов, и, найдя искомый номер, загрузить
блок, соответствующий  смещению от начала таблицы, не забыв при─
бавить 20. И продолжать такое сканирование-считывание, пока весь
файл не будет загружен.
   А  для  записи  нового  файла  нужно  в  этой  таблице искать
свободные  блоки,  соответствующий  им  байт  будет  равен  #E5.
Естественно,  надо  пропускать  занятые и дефектные блоки. И при
верификации  записанного  файла  можно даже параллельно помечать
обнаруженные дефектные сектора!
   Примечательна  возможность создания фиктивного файла - только
в каталоге. Но этот бит обязательно нужно учитывать, дабы не ис─
кать  блоки, принадлежащие  несуществующему файлу. Также надо не
забыть о большом количестве свободного места на начальных дорож─
ках. Свободное  место  можно с толком использовать для различных
защит  и  даже вирусов, хотя, к сожалению, максимально возможный
размер  секторов  не позволяет форматировать секторы, изменяющие
какие либо данные в памяти скрыто от чужих глаз.
   В итоге  можно только сказать: зачем использовать старую сис─
тему  CP/M, если эта система совместима со старыми наработками и
её  развитие могло бы привести к лучшим результатам? Это я к то─
му, что  на  СПЕККИ такая же ситуация с операционками, и если уж
кто хочет сделать новую, то пусть учтет подобную ситуацию.

                    ------------------------
                             MX-DOS
                    ------------------------
   Эта  ДОС  предназначена для компьютера Специалист-МХ. Образец
 эмулятора этого компьютера можно взять по адресу:
       [http://avshsoftware.by.ru/download/spmx_v42.zip]
    А образец диска (один диск в двух частях):
        [http://avshsoftware.by.ru/download/bst_mx0_0.zip]
       [http://avshsoftware.by.ru/download/bst_mx0_1.zip]
   Разбивка  диска  стандартная: 162  дорожки  с  двух сторон, 5
секторов, по 1024 байта каждый.
   Опознать диск можно по стрингу "Dos_MX V3.6", который находи─
тся по смещению 5, в нулевом секторе нулевой дорожки.
   Файловая структура дисков весьма необычная: файл позициониру─
ются с точностью до байта. Дело в том,что файловая система осно─
вывается на структуре ROMDISK'а для этого компьютера.
   Структура заголовка файла:
┌─────────┬────────────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ:│                   НАЗНАЧЕНИЕ:                      │ 
├─────────┼────────────────────────────────────────────────────┤ 
│    0    │3 байта #D3 - признак заголовка                     │ 
│    3    │9 байт имени                                        │ 
│   12    │3 байта расширение                                  │ 
│   15    │Если #8C - файл, если #8B - подкаталог              │ 
│   16    │3 байта - дата в BCD виде: старшие 4 бита - десятки,│ 
│         │младшие 4 бита - единицы                            │ 
│         │(например, число 21 будет #21)                      │ 
│   24    │2 байта - стартовый (начальный) адрес файла         │ 
│   26    │2 байта - конечный адрес                            │ 
│   28    │2 байта - контрольная сумма                         │ 
└─────────┴────────────────────────────────────────────────────┘ 
   Назначение  остальных байтов неизвестно, требуется дополните─
льная информация.

                    ------------------------
                      RT-11 (Рафос, Фодос)
                    ------------------------
   Прежде  всего  попались  мне в руки диски от ДВК. Но они были
совершенно  нечитаемые, несмотря  на то, что об их совместимости
со стандартными форматами разбивки упоминалось не раз.
   Чуть больше повезло мне с дисками от УКНЦ. Читались они прос─
то  прекрасно, углядывалось  имя  диска, загрузчик... Но не было
никакого  намека  на  присутствие  каталога. В дальнейшем у меня
появился  доступ  к этим машинам и специалист по ним. Но в доку─
ментах  на  них  я  не нашёл никакой пользительной информации на
нужную тему и, даже отформатировав диск и записав на него извес─
тные  файлы  с  известным каталогом, я не нашёл его на диске как
таковой. Была  только  какая-то таблица, структурой напоминавшая
то ли каталог, то ли таблицу размещения файлов, которой, кстати,
быть не должно, т. к., по полученной информации, структура диска
напоминает  СПЕКТРУМ 'овский. Потом  у меня  завёлся эмулятор ОС
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 слов (пар
байт) в сегменте.
   Первые 5 слов - служебные:
┌────────┬─────────────────────────────────────────────────────┐ 
│Слово   │ЗНАЧЕНИЕ                                             │ 
├────────┼─────────────────────────────────────────────────────┤ 
│1       │Число сегментов в каталоге.                          │ 
│2       │Номер следующего сегмента: сегменты образуют  список,│ 
│        │последний сегмент имеет номер ноль.                  │ 
│3       │Количество занятых  сегментов,  изменяется  только  в│ 
│        │первом сегменте.                                     │ 
│4       │Число дополнительных байт в каждой  записи  о  файле.│ 
│        │Система использует 14 байт - 7 слов на файл, но  спе-│ 
│        │циальные программы могут иметь свои сегменты со своей│ 
│        │длиной описателя файла.                              │ 
│5       │Номер начального блока первого файла данного сегмента│ 
└────────┴─────────────────────────────────────────────────────┘ 
  Стандартная запись о файле - 7 слов:
┌────────┬─────────────────────────────────────────────────────┐ 
│Слово   │ЗНАЧЕНИЕ                                             │ 
├────────┼─────────────────────────────────────────────────────┤ 
│1       │Тип записи в файле:                                  │ 
│        │#0100 - временный файл, при нем используется слово 6;│ 
│        │#0200 - удалённый файл - пустое место на диске;      │ 
│        │#0400 - нормальный файл;                             │ 
│        │#8400 - READ ONLY;                                   │ 
│        │#0800 - конец  сегмента, но  не каталога, конец ката-│ 
│        │лога определяется, если сегмент этот - последний  ис-│ 
│        │пользованный. Не обязательно используется  весь  сег-│ 
│        │мент до конца - перевод на новый сегмент, возможно, с│ 
│        │другой длиной описателя файла, может произойти в  лю-│ 
│        │бом месте.                                           │ 
│2-4     │Имя и расширение в коде RADIX-50 - 6 и 3 символа.    │ 
│5       │Длина файла или пустого места.                       │ 
│6       │Для временного файла  в младшем байте - номер канала,│ 
│        │связанного с этим файлом задачи, номер  которой  -  в│ 
│        │старшем байте.                                       │ 
│7       │Дата создания файла: биты 0-4 - год-1972 (т.е. 1972 -│ 
│        │2004),биты 5-9 - день (1-31),биты 10-14 - месяц(1-12)│ 
└────────┴─────────────────────────────────────────────────────┘ 
   Могут быть и дополнительные байты.
   Положение файла на диске приходится определять сложением длин
файлов, начиная с первого файла данного сегмента и по файл, иду─
щий  перед заданным, плюс 5-ое слово данного сегмента. Похоже на
мотание  ленты в магнитофоне по счётчику; впрочем, данная ОС ве─
дёт своё летоисчисление с ленточных времен.
   Напоследок  добавлю, что в ОС РАФОС возможны виртуальные дис─
ководы - файлы, структура которых повторяет разбивку диска.
   Это  только  подтвердилось, когда  я  немного  ознакомился  с
БК-11М, на котором тоже можно запустить эту систему. Но пока это 
только небольшие  обмолвки  в  документации  на  другие системы.
Посему  не  известны  ни подробности функционирования системы на
БК, ни форматы первых блоков системы. 
                   ------------------------
                       АО-ДОС версии 2.02
                    ------------------------
   Формат её каталога совместим с MicroDOS, NORTON, NORD, MK-DOS
- имеются  в  виду  другие  БК 'шные  системы. Диск  может  быть
40/80 -дорожечным,  1/2 -сторонним. 10  или  9  секторов  по 512 
байт. Проблема заключается в существовании двух вариантов диско─
вых форматов: расширенного и стандартного. Последний формат  как
раз и исследовался, и похоже, что при этом  используется  только
определённая разбивка: 10 секторов.
   Ещё  одной  проблемой  было  то, что для БК основной системой
счисления является восьмеричная,каждый раз на это нужно обращать
внимание.
   Положение на диске задается в смещениях в блоках по 512 байт.
 Пересчёт ведётся по формулам:
                     ДОРОЖКА = INT(СМЕЩЕНИЕ/10)
                   СЕКТОР = СМЕЩЕНИЕ-ДОРОЖКА*10
   Впрочем,положение на диске легко определяется "на глаз": пер─
вые две цифры десятичного числа - дорожка, а последняя - сектор.
   На нулевом блоке (0 дор. 0 сект.) размещается системная инфо─
рмация  и  начало  каталога. Первые  4 байта используются только
для загрузочного диска, у него:
┌────────┬─────────────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ│ЗНАЧЕНИЕ                                             │ 
├────────┼─────────────────────────────────────────────────────┤ 
│0-3     │Коды команды перехода на загрузчик.                  │ 
│4       │Определяет тип формата: если там 26, то формат расши-│ 
│        │ренный, а на изучаемом мною диске там было число  32.│ 
│        │Поэтому расскажу об отличиях. Как свидетельствует до-│ 
│        │кументация, при расширенном формате:                 │ 
├────────┼─────────────────────────────────────────────────────┤ 
│5       │Описывает разбивку диска. Там содержится  размер  до-│ 
│        │рожки диска в секторах, плюс установлен 7-ой бит, ес-│ 
│        │ли диск односторонний.                               │ 
│6-7     │Размер сектора в байтах.                             │ 
│8       │Количество дорожек.                                  │ 
│10      │Зачем-то зарезервирован.                             │ 
│        └─────────────────────────────────────────────────────┤ 
│         В моем варианте формата я увидел на месте  этих  байт│ 
│         стринг "AO-DOS".Далее соответствие восстанавливается.│ 
├────────┬─────────────────────────────────────────────────────┤ 
│12      │Имя диска (12 байт), которое  показывается  оболочкой│ 
│        │DOS SHELL для этой системы.                          │ 
│24      │Содержит количество записей в каталоге.              │ 
│26-27   │Номер первого свободного блока на диске.             │ 
│256-257 │Байты #2E и #A7 - число 123456 в восьмеричной  систе-│ 
│        │ме. Это признак данной ОС.                           │ 
│310     │Недокументированная пара  байт - количество свободных│ 
│        │блоков на диске.                                     │ 
│320     │И далее находится каталог.                           │ 
└────────┴─────────────────────────────────────────────────────┘ 
   Структура его весьма оригинальна. Несмотря на то,что в систе─
ме могут создаваться каталоги с уровнем вложенности как  минимум
до 128, все записи о всех файлах на диске находятся в едином ка─
талоге. Каждый подкаталог, вне зависимости от уровня  вложеннос─
ти, имеет свой индивидуальный номер, записанный в описателе дан─
ного каталога. И каждый файл или подкаталог имеет ссылку на свой
родительский каталог.
   На запись в каталоге отводится 24 байта:
┌────────┬─────────────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ│ЗНАЧЕНИЕ                                             │ 
├────────┼─────────────────────────────────────────────────────┤ 
│ 0-1    │В инструкции  они  называются  словом  признаков  (16│ 
│        │бит). Если запись описывает  подкаталог,  то  младшие│ 
│        │семь бит нулевого  байта  содержат  порядковый  номер│ 
│        │этого подкаталога, иначе в нем  задействованы  только│ 
│        │нулевой, первый и седьмой биты. Тогда их значение та-│ 
│        │ково: 0-ый бит - признак защищённого  файла,  1-ый  -│ 
│        │спрятанного, а 7-ой бит - признак сбойного блока.    │ 
│        │   Младшие  7 бит  первого байта содержат номер роди-│ 
│        │тельского подкаталога, вне зависимости от того, о чём│ 
│        │запись: о файле  или о каталоге. 7-ой бит этого байта│ 
│        │свидетельствует о том,что данный файл удалён. Удалён-│ 
│        │ные каталоги вычищаются чисто физически, и стандартно│ 
│        │они не должны содержать файлов. А  вновь  создаваемые│ 
│        │каталоги чисто физически помещаются не в конец списка│ 
│        │всех файлов, а после последней записи о каталоге.    │ 
│        │   На практике оказалось, что при удалении файлов оба│ 
│        │эти байта принимают значение #FF.                    │ 
│ 2-15   │Имя файла. Расширения  как такового вообще нет. Байты│ 
│        │эти могут содержать коды любых  знаков и  цифр, вклю-│ 
│        │чая точку, которая может  отделять  псевдорасширение,│ 
│        │которое может быть любой длины. В  общем,  эти  байты│ 
│        │служат для визуальной идентификации файла.           │ 
│16-17   │Номер первого занимаемого файлом блока. Для  подката-│ 
│        │лога это всегда число #14.                           │ 
│18-19   │Количество блоков, расходуемых на файл. Для  подката-│ 
│        │логов оно всегда равно нулю.                         │ 
│20-21   │Содержат адрес загрузки, который  всегда  уменьшается│ 
│        │до чётного числа.                                    │ 
│22-23   │Содержат  длину  файла, которая  должна  быть  меньше│ 
│        │32768.                                               │ 
└────────┴─────────────────────────────────────────────────────┘ 
   Как  видим, нет никаких признаков, что файлы и каталоги могут
быть  сегментированными. Да и в её описании  говорится: "Система
использует алгоритм записи  файла,  позволяющий  оптимально  ис─ 
пользовать  дисковое  пространство, не  прибегая к помощи утилит 
сжатия, и снимающий необходимость контроля за состоянием катало─ 
га диска". Тайна этого алгоритма мною не раскрыта. На диске  нет 
ничего похожего на карту диска. Возможно, система пытается запи─
сать  новый файл на место удалённого, подходящего по размерам, и
какая-то часть диска пропадает зря.
   И  действительно, стирая  и  записывая файлы, я убедился, что
меньшие по размеру файлы записываются на  место  уже  удалённых,
больших их по размеру. Если же файл не помещался, запись  проис─
ходила на новые сектора, уменьшая свободное  дисковое  простран─
ство, и  запись  добавлялась  в конец каталога. А если записыва─
лись  маленькие  файлы, то  их  описатель  занимал место удалён─
ного, и, если после этой операции оставалось место от  удалённо─
го файла, то запись о поместившемся новом файле добавлялась пос─
ле старой. Таким образом, файлы шли в последовательности положе─
ния их относительно начала диска. Оставшаяся от удалённого  фай─
ла "дырка" между блоками могла использоваться для  записи  поме─
щающихся в неё файлов, хотя в каталоге о ней записи не было.
   Кроме того, в конце каталога был найден эдакий конечный файл.
Первые два байта его были равны #FF. Байты 16 и 17 у его  описа─
теля содержали номер первого свободного блока, а байты 18 и 19 -
количество свободных блоков. Эту информацию  можно  использовать
для работы с диском.
   Осталось  только  сказать, что  система автоматически создаёт
полную  копию  нулевой дорожки, которая располагается на дорожке
номер 1. Причём на обоих последний сектор, похоже, не используе─
тся, поскольку  он заполнен байтом #00, тогда как неиспользуемое
место в каталоге заполнено байтом #F6.

                    ------------------------
                             NEWDOS
                    ------------------------
   Привожу одно письмо.В нём предлагается новый формат диска для
Спектрума. 

"Привет All ! 
 

   Я тут pазpаботал новый фоpмат хpанения имени файлов на  диске
и хочу, чтоб вы его посмотpели и оценили все возможные недостат─ 
 ки. Может быть, что добавить или убpать нужно,как на Ваш взгляд? 
   Hа диске может находиться либо 64 файла,либо 64 диpектоpии по
16  файлов в каждой, итого максимум 1024 файла на один диск. Мо─ 
жет быть  и pазбpос файл-диpектоpия, т. е. не что-нибудь одно, а 
всё  вместе. В созданной уже диpектоpии создать ещё одну нельзя, 
а можно записать 16 файлов. Эти огpаничения сделаны для облегче─ 
ния  pаботы  в  последующем  пpи написании какого-либо софта под 
этот  фоpмат, а также для уменьшения занимаемого дискового пpос─ 
 тpанства. 
   За  счёт  этого  фоpмата мы теpяем ещё 9 доpожек, т. е. first
 track на диске будет 10. 
   Тепеpь опишу фоpмат названия диpектоpии и файла:

DIRECTORY; 

 +#00 - file mask: 
        #00 - end of catalog or directory;
        #01 - deleted file or directory;
        #02 - directory;
        #03 - file don't delete;
       #04 - hidden file or directory.

+#01-#14   - directory name of 20 symbols; 
+#15-#17   - type of 3 symbols; 
+#18-#1A   - create date DD-MM-YY; 
+#1B       - not used; !!! 
+#1C       - files in directory; 
+#1D       - directory length of sectors; 
+#1E       - first sector; 
+#1F       - first track. 

FILES: 

 +#00 - file mask: 
        #00 - end of catalog or directory;
        #01 - deleted file or directory;
        #02 - directory;
        #03 - file don't delete;
       #04 - hidden file or directory.

+#01-#14   - file name of 20 symbols; 
+#15-#17   - type of 3 symbols; 
 

  +#15= 'B'-'BAS' for basic file
        'C'-'COM' for code file
       'D'-'DAT' for data file

+#18-#19  - start address file; 
+#1A-#1B  - bytes length file; 
+#1C      - number directory for this file; 
+#1D       - lenght of sectors; 
+#1E       - first sector; 
+#1F       - first track. 
 

   То бишь, тепеpь имеем 20 символов имени, 3 символа тип и кучу
 файлов на диске. 
    Как вы на это смотpите?
   Лично я завтpа начинаю писать пеpвоначальную пpогpаммную под─
деpжку, котоpая  впоследствии  станет  одной из доpаботок нового 
DOS'a, а Phantom Ltd начнет писать COMMANDER под этот фоpмат." 

А вот и ответ на это письмо:
 

   "Я бы на твоём месте сделал бы следующее: 512 байт на сектор,
10  секторов  на  дорожке, формат  диска MS-DOS. Это сразу решит 
вопрос  переносимости файлов между всеми остальными досами. Кро─ 
ме того, нет ограничений на количество файлов на диске - ограни─ 
чено только количество файлов/директорий  в  корневом  каталоге. 
Подумай о пользователях HDD - им опять резать винт на ломтики по 
 640 Кб? 
   Теперь  насчёт  формата каталога. Берётся оригинальный формат
MS-DOS, и в него вносятся следующие исправления: вместо  времени 
создания файла записываем стартовый адрес (такой вариант давно и 
успешно применялся на БК). Кроме того, в MS-DOS в записи о  фай─ 
ле пустует ещё 10 байт, так что развернуться можно. 
 

  IK> Эти  огpаничения  сделаны для облегчения pаботы в последую─
 IK> щем пpи написании какого-либо софта под этот фоpмат,
Софт нужно писать под операционку, а не "под формат". 
 

  IK> +#15= 'B'-'BAS' for basic file
  IK>       'C'-'COM' for code file
 IK>       'D'-'DAT' for data file
Планируется ли использование нового доса как замены TR-DOS? Если 
нет, то про бейсик можно сразу забыть. 
 

  IK> +#1E       - first sector;
 IK> +#1F       - first track.
Зачем  повторять чужие ошибки? Линейное расположение файлов сей─ 
 час не актуально. 
   __
__/ /   Powered   [pepsi inside] 
_/  by MOTOROLA [smoking suxx]" 

   Надеюсь, тут суть понятна без особых комментариев, но всё-та─
ки, поддерживать эти форматы или не поддерживать???
   Как  заметил  Time Keeper, письмо  это  взято  из конференции
REAL.SPECCY, и подобных писем там немало.Как по его личному мне─ 
нию, так и по мнению множества других людей, самый  лучший  фор─
мат для винчестера - это MS-DOS FAT, т.к. будет большая  совмес─
тимость  с ПЦ - можно легко переносить информацию в виде ОБРАЗОВ
ДИСКОВ и подключать их к операционной системе тем или иным обра─
зом (напрямую, через RAM-Disk).
   Сделаю  и я небольшую заметку: винчестер режут на ломтики как
раз на БК, каждый ломтик - образ диска - именуется своей буквой,
большой или маленькой. И вообще, если работать с винтом, то надо
и  на  ломтики  делить (для старых систем, и программы поддержки
контроллеров винта на Спеке делают примерно так же) и новый фор─
мат диска придумывать - для новых операционок.А уж будут ли лом─
тики эти в виде файлов или раздельчиков - вопрос к разработчику,
уже сейчас реализован и тот, и другой вариант.
   Таким  образом, описание файловой системы, предлагаемой выше,
можно рассматривать и как предмет дискуссии, так и призыв к дей─
ствию. Здесь он присутствует как практический пример и пособие -
на тот случай, если кто-то этот формат вздумал поддерживать.
   Но  самое  интересное: автор  этого  опуса откликнулся, и его
личность установлена: Himik's ZxZ.

                    ------------------------
                             AN-DOS
                    ------------------------
   Самое время вспомнить опять о БК. AN-DOS и есть та система на
БК, о  которой  вспоминали  чуть  выше.  Она  действительно  ис─ 
пользует  систему размещения файлов при помощи FAT, как у MS-DOS
(и ASC SOUND MASTER ).
   В структуре  диска произошли лишь незначительные изменения. В
загрузочном  секторе  для  команды  перехода  на  загрузчик  ис─
пользуются  не  3, а  4  байта: #A0, #00, #1E, #01, и далее идёт
стринг  "ANDOS". Затем  всё  как  обычно, включая  метку диска и
признак "FAT12". Только разброс параметров: всегда по  две  FAT,
размером по 1200 байт (424 кластера по 4 сектора),размер катало─
га - 7 секторов.
   Кроме того, используется только корневой каталог. Подкаталоги
кодируются  в  стандартной  для БК системе. У каждого каталога и
подкаталога есть свой индивидуальный номер. А у каждого подката─
лога  и файла  есть  ссылка  на номер их каталога-прародителя (в
котором  они находятся). Поэтому произошли небольшие изменения в
структуре каталога:
┌─────────┬────────────────────────────────────────────────────┐ 
│СМЕЩЕНИЕ:│                   НАЗНАЧЕНИЕ:                      │ 
├─────────┼────────────────────────────────────────────────────┤ 
│11       │Атрибуты файла. Бит 3 - признак подкаталога AN-DOS. │ 
│12-19    │Резервируются. MS-DOS зануляет их ???               │ 
│20       │Признак подкаталога и одновременно его номер.       │ 
│21       │Номер родительского подкаталога.                    │ 
│22-23    │Адрес  файла или имя дисковода для ссылки - перехода│ 
│         │на  него. У  ссылки тоже установлен третий бит, но у│ 
│         │подкаталога байты 12-31 занулены.                   │ 
└─────────┴────────────────────────────────────────────────────┘ 
   Структура FAT системы аналогична MS-DOS, а структура подката─
логов похожа на AO-DOS. Т.е. НА ДИСКЕ имеется  один-единственный
каталог. У каждого  подкаталога в нём есть свой порядковый номер
в резервируемой  области хедера, промаркирован он как метка дис─
ка, и  MS-DOS  его не кажет. А у каждого файла в хедере хранится
номер подкаталога, где он находится. Разбивка эта является чисто
визуальной: если  система  пишет  файл и ищет - нет ли уже файла
с таким же именем,- то она сканирует все файлы, не глядя на под─
каталоги.

                    ------------------------
                             ЭПИЛОГ
                    ------------------------
   На  этом я пока заканчиваю своё повествование. В разное время
я имел доступ к дискам и компьютерам самых разных систем,а также
к эмуляторам. И здесь изложены, пожалуй, далеко не все известные
мне форматы дисков.
   Многое я узнал при помощи эмуляторов на IBM ПЦ. Надо сказать,
при  их помощи можно изучить такие системы, которые мало кто ви─
дел вживую, или такие,чьи носители информации не способствуют их
изучению на СПЕКТРУМ'е.
   Например,в компьютере COMMODORE 64 используется хитрый диско─
вод, подключенный к специальной шине компьютера шестью  провода─
ми. Оригинальны  и форматы диска: на дорожках 1-17 располагается
21 сектор по 256 байт, 18-24 - 19 секторов, 25-30 - 18, и на ос─ 
тальных по 17, причем дорожки 36-40 - нестандартные. Поэтому там
используются виртуальные диски и файлы - в виде  файлов  формата
MS-DOS. Эмулятор имитирует работу настоящих дисководов, картрид─ 
жей  и кассет, используя  информацию из этих файлов. Но при этом
возможно  подключение  настоящих  дисководов и кассет при помощи
принтерного порта. Существуют даже специальные программные  обо─
лочки, которые позволяют объединять стандартные и  нестандартные
устройства под общим интерфейсом и производить  удобный  перенос
информации между ними. А ещё существуют и совместимые дисководы,
винчестер  и даже конверторы из/в MS-DOS, но, насколько я понял,
они гораздо более редкие.
   Поэтому  только стандартными просмотрщиками MS-DOS можно изу─
чать виртуальные диски.
   Хотя, например,компьютеры MSX используют диски,весьма похожие
на MS-DOS 'овские,да и автор ОС обоих систем, вроде,общий,несмо─
тря на то, что MSX 'ная, вроде бы, называется  CP/M. Виртуальные
же диски не всегда являются полной копией реальных и,может быть,
мне захочется копаться на реальных при помощи СПЕКТРУМ'а.
   А форматы кассет и картриджей  вообще не поддаются нормальным
исследованиям. Правда, кому нужно старьё 1980-1984 годов?
   Ещё  попадался  мне  компутер  такой - ATARI XE 130. Был  при
нём  и дисковод, и дискеты, и даже кое-какая русскоязычная доку─
ментация. Но дисковод был внешний, соединительные кабели куда-то
делись. Дискеты  читались  с трудом, а кроме того, они использо─
вались  как  две  односторонние. Короче, чего  я  там  на них ни
прочитал, но каталога нигде не нашёл. А в документации  вот  как
раз  про  него - ни  слова. В общем, если найдется какой специа─
лист, то продолжим об этом разговор. А то, что я уже  начал  пи─
сать по сию тачку, к сожалению, стёрлось. Как показали копания в
эмуляторских образцах - каталог содержится где-то в середине ди─
ска и имеет довольно простую структуру.
   Имеются образцы и немного документации про диски SAM Coupe' и
DiSCIPLE Plus. Их особенностью является порядок следования логи─ 
ческих дорожек: дорожки 0-79 находятся на одной стороне диска, а
дорожки 80-159 - на другой. Но малое количество документации  не
стимулирует детальное их исследование.
   Для Opus Discovery нет даже образцов, а только несколько ути─
лит  с краткой документашкой и дизассамблер ПЗУ. И опять же - не
знаю, стоит ли с ними возится.
   И ещё,читал я хорошее описание старинного такого компа: ИСКРА
224  называется. Кое-кто  говаривал, что работал с ним. И стоило 
бы о нём рассказать, хотя бы из принципа  о  необходимости  рас─
пространения  полезной (ли)  информации. Да вот только я даже не
знаю, подключаются  ли  к нему  FDD 5'25", и насколько он сейчас
распространён, чтобы  им  кто-либо  заинтересовался, хотя  бы из
праздного интереса.
   То же, впрочем, можно и сказать о всех вышеперечисленных тач─
ках. Но  я могу с уверенностью сказать, что кто-нибудь каким-ли─
бо образом имеет к ним доступ, а о других  подобных  машинах  не
знает или не хочет знать, несмотря на то, что популярность неко─
торых  из  них даже на текущий момент может быть весьма велика в
определённых слоях. И доступность свежего программного обеспече─
ния к ним, а также подробная информация о них и кооперирование с
более  мощными  и современными  системами помогут продлить инте─
рес к ним,особенно если переход на вышеупомянутые мощные системы
по каким-либо причинам невозможен.
   И  информацией  можно  и нужно  делиться про все платформы, и
кооперированию  их как раз и помогают различные описания всевоз─
можных  стандартов и форматов. Особо важно, по-моему, рассказать
про ПЦ 'шные форматы. Но  дело  в том, что такие интересные вещи
зачастую остаются без внимания теми, у кого они есть,но их долго
ищут те, которым они нужны.
   А те, кто может что-то сказать  по поводу дисков от вышепере─
численных, а также и других компьютеров, могут  писать  об  этом
мне, NUTS 'у. Я с удовольствием приму все дополнения,добавления,
 поправки, исправления и критику.
   Ред.: Не  забудьте  и мне чиркнуть письмецо, в редакцию. Было
бы  очень  полезно  издать справочник по разного рода форматам в 
бумажном  виде. Уже сейчас  я собрал более 300k ZX-публикаций на 
эту тему. 

                    ------------------------
                         Благодарности
                    ------------------------
   Как  уже внесшим вклад в это пользительное дело, хочется ска─
зать большое спасибо:
   Unbeliever'у - за  его CD-R, содержавший, в частности, разный
эмуляторный софт и, соответственно, авторам этого софта;
   Ивану Рощину - за его форматер;
   Евдокимову Алексею - за его программу 'AFRODITA 3.0';
   и всем  тем, кто  помогал  мне  форматировать  диски в разных
системах, а в частности:
   Melted Snow (сотоварищи) - Profi CP/M (Concurent BIOS);
   Ice'DI'Griz/3umph (сотоварищи) - Profi DOS (когда-то  не про─
дававшаяся);
   Capry/STALL - информация  о CP/M для Спектрум-совместимого ПК
"Кворум". 

                    ------------------------
                           Wanted !!!!
                    ------------------------
   Информация  о дисках всех систем и платформ, особенно на БК и
ДВК (CSI, RT-11, ОС ДВК) и ZX Spectrum (D80, Opus Discovery). 
   С целью  апгрейда данного справочника обращайтесь к распрост─
 ранителям или по адресу:
                    606015, Нижегородская обл.
                           г. Дзержинск
                      пр. Ленина д.6 кв.8
                         Полякову Алексею
                    mailto:nuts_@pochtamt.ru
   Естественно, апгрейдеры будут тут упомянуты. Можно такое дело
делать и по музакам, архивам и пр.

Nuts, 1998-14.10.2001 гг. 
Дата последней редакции: 18.07.2005 (Alone Coder) 



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

Классика - Альманашник. А. С. Пушкин.

For Coderz - Распознавание и вычисление арифметических выражений по их символьной записи.

Inferno - Авторы журнала.

For Coderz - О дисциплине при создании больших проектов.

Интервью - Вопросы Константину Свиридову (Conan) о сайте zxnext.narod.ru.

Ликбез - Принципы конвертирования графики PC-ZX.

For Coderz - Программирование смены диска/дисковода на Скорпионе.

Sofтинка - DNA_OS v0.431 - пакет утилит для работы с винчестерами, RAM-дисками и дискетами.

For Coderz - Программирование под DNA_OS ZET-9, пакет утилит для работы с устройствами хранения данных.

Sofтинка - Проблемы и недоработки пакета утилит для работы с устройствами хранения данных DNA_OS.

Ликбез - Подробно о дисковых форматах, имеющих FAT.

Inferno - Вступление от редактора.

Inferno - Ошибки в предыдущих номерах.

For Coderz - Маленькие программерские хитрости.

Gameland - О новых играх: Oneyroid, Dizzy forever, Dridlock.

For Coderz - Пишем архиватор. Практические принципы LZ упаковки.

Gameland - Прохождение новых отгрузок для игры "Чёрный Ворон".

For Coderz - Программирование для видеорежима 384x304.

Inferno - Письма в редакцию.

Звук - Идеи Megus'а по поводу трекера для AY/YM.

Inferno - Об оболочке.

For Coderz - Основы оптимизации под процессор Z80.

Ликбез - Расположение разделов на винчестере.

Gamedev - 3D проецирование пола/трассы в играх.

Звук - Дикие идеи для AY трекеров.

Реклама - Реклама от Романа Чунина.

Реклама - Реклама от В. Богдановича

For Coderz - Как делается крупная перемещаемая программа.

Ремонт - Неисправности Pentagon 128+ и их ремонт.

Inferno - Содержание номера.

Разное - Мысли о конкурсе на лучший софт.

Others - Перенос программного обеспечения на ZX Spectrum с PC.

Видео - Об упаковке видео для ZX Spectrum.


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

Похожие статьи:
Железо - об ошибках, нмеющих место быть в схеме контpоллеpа винчестеpа, опубликованной в ZX-FORMAT №8.
Di:Нalt:Suxx - Нy чтo, пиплы, интeрecнo пoчитaть кaк прoшeл DН99. А вoт и в пaдлy mнe пиcaть кaк вce ЭТO meдлeннo пoгрyжaлocь в фeкaлии...
Sofтинка - Релизы ОС ZXVGS и их различия.

В этот день...   17 июля