Сам по себе БК хранит файлы на магнитной ленте. У файла есть такие атрибуты, как имя - 16 произвольных символов в кодировке КОИ-8 без ограничения на диапазон кодов, длина до 65535 байт, и начальный адрес в диапазоне от нуля до 65535 ($FFFF, @177777). Начальный адрес учитывается при загрузке файла, если прямо не указан адрес его загрузки.
Когда на БК появились дисковые накопители (включая винчестер), и задолго до этого при появлении локальных сетей на базе БК, а в настоящее время - и эмуляторов БК, встал вопрос о хранении файлов БК на дисках разнообразных систем. Ни одна из существующих ОС не имеет возможности хранить начальный адрес файла. В связи с этим на БК было «изобретено» множество форматов дисков, которые представляли собой как модификацию существующих форматов (MS-DOS), так и свои уникальные разработки.
| Формат | Что собой представляет |
|---|---|
| #?.BIN | Самый старый и один из самых известных. Файл имеет заголовок, состоящий из двух слов (младший байт в слове идёт первым) - начального адреса файла и его длины. Этот формат применялся в системе RT-11 на центральной машине локальной сети КУВТ-86, а такая структура была обусловлена тем, что информация о длине файла в RT-11 хранилась в 512-байтных блоках, а адрес загрузки хранить было вообще негде. Имя файла - обычно до шести заглавных латинских символов (два слова в коде RADIX-50), плюс суффикс (расширение) .BIN (необязательное), либо любое другое, если в исходном имени уже присутствует расширение. |
| ALTEC | Применялся (не исключено, что применяется и до сих пор:) в эмуляторе БК0010 Николая Подкопаева, работавшем в среде ОС БК (RT-11) на БК0011М. Похож на предыдущий, но в отличие от него хранил в заголовке файла ещё и информацию о его полном имени (16 символов), а также некоторую служебную информацию - такую, например, как номер палитры на БК0011М. |
| ANDOS | Формат операционки ANDOS. ANDOS для хранения файлов использует диски в формате MS-DOS, а начальный адрес хранится в поле времени создания файла. При копировании этих файлов на диск AMIGA DOS время создания файла сохраняется неизменным, следовательно, информация о начальном адресе файла сохраняется. |
| Другие | Формат эмулятора БК от Дмитрия Тюрева на IBM PC - кроме самих файлов, хранится их список в отдельном файле, где и приведены полные имена, адреса и длины. |
| Disk Image - «образ дискеты» БК. Формат диска в данном случае не имеет особого значения, поскольку с дискетой в данном случае работает сама операционка на БК. Форматы дискет расписаны ниже. |
| Формат | Что собой представляет |
|---|---|
| ANDOS |
Формат ANDOS - подмножество форматов MS-DOS. В отличие от MS-DOS, имеет
фиксированный размер служебных областей, другую организацию поддиректорий
и несколько другое назначение некоторых полей записи каталога - но
несмотря на это, совместимость с MS-DOS сохранена, и диски ANDOS легко
пишутся/читаются под MS-DOS (соответственно, и под CrossDOS - тоже).
Кроме того, изменено назначение поля времени создания файла - вместо него
ANDOS хранит начальный адрес этого файла. Формат имени файла не изменён,
и так и остался 8+3. При записи файла ANDOS анализирует имя, выделяет из
него до восьми символов до первой точки, если символов больше - берётся
первые семь и последний. Аналогично ANDOS поступает и с расширением
имени. Эти преобразования делаются как при записи файлов, так и при
чтении. Поскольку даже файлы с «длинными» (в категориях PC) именами как
правило различаются последним символом в имени, проблем с таким
сокращением имени не возникает. Назначение остальных полей записи каталога оставлено прежним. Поддиректории ANDOS основаны на идее USER-областей CP/M - у каждой поддиректории есть номер, и у каждого файла указано, к какой поддиректории он принадлежит. Имена поддиректорий - такие же записи каталога, как и файлы, и отличаются от них установленным флагом VOLUME, благодаря чему MS-DOS «не видит» эти записи, и для MS-DOS такие диски представляются линейным списком файлов. |
| MicroDOS, MK-DOS, AO-DOS, NORD | Чисто «самодельный» формат, совместим только сам с собой. Диск не имеет кластерной структуры, фрагментация файлов не допускается, файлы размещаются только линейно. Длина имени файла - 14 символов. Структура поддиректорий, так же как и в ANDOS, аналогична CP/M. В MicroDOS поддиректорий ещё не было, впервые они появились в NORD, затем уже были AO-DOS и MK-DOS. В отличие от ANDOS, нестандартный формат диска (например, односторонний диск) не допускается. Ввиду несовместимости с MS-DOS перенос файлов непосредственно на диск AMIGA DOS затруднён. |
| ОС БК (RT-11) | Формат разработан Digital Equipment Corporation ещё в 1970-х годах. Структура диска тоже исключительно линейная, значительные ограничения на имя файла - 6 символов имени и 3 символа расширения, при этом символы только заглавные латинские, цифры и несколько специальных знаков. Длина файла кратна 512 байтам (задаётся в блоках). RT-11 работает только на БК0011М, при этом запуск программ для БК0010 осуществляется с помощью различных эмуляторов среды БК0010 - «фирменного» (прилагающимся к ОС БК) и уже упоминавшегося выше эмулятора, написанного Николаем Подкопаевым (эта процедура чем-то напоминает загрузку kickstart 1.3 на современных AMIGAх). |
| DOSB10 (Вариант формата RT-11) | Расширение формата диска RT-11. Каталог RT-11 содержит число дополнительных слов в записи, в DOSB10 это число отлично от нуля. В дополнительные поля занесены все необходимые для БК параметры - 16-символьное имя, начальный адрес и длина файла в байтах. Такой диск читается и пишется под RT-11 без проблем, благодаря совместимости форматов файлы легко переносимы. |
| BK-DOS | Малораспространённая система. В ней практически полностью реализован формат MS-DOS, включая поддиректории. Наиболее удобный для переноса файлов в AMIGA DOS вариант. Но, к сожалению, ввиду малой распространённости этой системы преимущество сводится почти к нулю. |
Большинство из вышеперечисленных форматов применялись исключительно из-за ограничений, налагаемых на имена файлов различными операционными системами, невозможности применения во многих случаях русских букв и даже латинских строчных. Кроме этого, ни одна из не-БКшных ОС не имела такого параметра, как адрес загрузки файла. AMIGA DOS не имеет ограничений на имя файла, и практически любые БКшные имена могут быть представлены корректно (за исключением служебных символов с кодом менее пробела). Однако, адреса у файлов AMIGA DOS тоже нет, и эта проблема обойдена довольно оригинальным способом.
В результате взвешивания всех «за» и «против» был выработан следующий
механизм работы с файлами. За основу был взят формат ANDOS. Благодаря
совместимости по формату диска с MS-DOS диски ANDOS легко читаются с
помощью CrossDOS filesystem, и БКшные файлы можно просто
скопировать с этих дискет.
Имена файлов на диске MS-DOS состоят из двух частей
- собственно имени (до восьми символов) и расширения (до трёх символов);
со стороны AMIGA DOS они сливаются в одну строку, разделяясь точкой при
наличии расширения. Ряд программ на БК (в частности, прошитый в ПЗУ
Бейсик) тоже ориентируется на такое разделение имени файла на части,
поэтому эмулятор выделяет в имени файла участки, начинающиеся с точки, и
сдвигает их влево при наличии пробелов перед ними.
Дополнительной возможностью является запись адреса загрузки файла в
комментарий в виде восьмеричной константы - при загрузке эмулятор в первую
очередь анализирует число в комментарии, и только при его отсутствии берёт
время создания файла. Большинство файлов будут «пониматься» без
изменений, указание адреса в комментарии действительно необходимо лишь в
тех случаях, когда конкретный адрес будет интерпретироваться как
некорректное время (например, 28 часов или 62 минуты). При записи файлов
эмулятор всегда прописывает адрес в комментарии, благодаря чему проблем
возникать не будет.
Кроме адреса, в имени файла можно указывать дополнительные параметры
управления режимами работы эмулятора. Параметры указываются ДО адреса
загрузки, указание их после адреса вызовет игнорирование самого адреса
(алгоритм анализа числа аналогичен применённому в мониторе самого БК).
| Параметр | Его действие |
|---|---|
| M (Monochrome) | Переключение в монохромный режим, независимо от текущего. Переключение происходит при любой попытке загрузки этого файла. Если в данный момент уже установлен монохромный режим, он не изменится. Этот параметр имеет смысл использовать для программ, работающих только в монохромном режиме, например, для большинства отладчиков. |
| C (Color) | Переключение в цветной режим, независимо от текущего. Действует аналогично параметру M. В основном применимо для «игрушек». |
| R (ROM) | Правомерность загрузки файла в ПЗУ, например, для шрифтов. Попытка загрузить в ПЗУ файл, не имеющий такого параметра, будет игнорироваться. |
| S (Slow) | Включение замедления эмуляции до реальной скорости БК. Если при этом быстродействие получается меньше, чем надо - режим не включается. Применимо опять же в основном для игрушек. |
| F (Fast) | Выключение замедления. Полезно для прикладных программ. |
| Комментарий S720 | - | означает адрес загрузки 720 и включение замедления после загрузки. |
| Комментарий MF | - | означает включение монохромного режима и выключение замедления при загрузке файла. |
| Комментарий R116076 | - | устанавливается у файла, содержащего шрифт для загрузки в ПЗУ по адресу 116076. |
При попытке загрузки файла с такой длиной, что конец этого файла попадает в ПЗУ, эмулятор загружает только умещающуюся в памяти часть файла. При записи файла в аналогичных условиях он будет записан вместе с «куском» ПЗУ (точно так же, как и на реальной БК). Также, в отличие от БКшных дисковых систем, файлы успешно грузятся с нечётных адресов.
В следующих версиях эмулятора планируется поддержка по возможности всех форматов представления файлов БК, включая эмуляцию контроллера дисковода как для файлов - образов дисков, так и для работы с дискетами непосредственно.