┌────────────────────────────┐
│ ░▒▓▒▓█ FILE FORMATS █▓▒▓▒░ │
└────────────────────────────┘
(C)Time Keeper
В последнее время Спектрум все
больше и больше "разрастается" в
сети Интернет. Если составить
список всех сайтов, посвященных
Спектруму, всех ftp-серверов, с
которых сегодня можно скачать
программы для спектрум-
совместимых машин, то их набра-
лось бы никак не меньше сотни.
Но форматы хранения спектрумов-
ской информации никак не стан-
дартизированы. Даже в пределах
одного сайта можно найти все:
хобетные файлы, trd-образы, fdi-
образы, tap'ы, snapshot'ы и т.
п.
В связи с этим, головная боль
возникает не только у "реальщи-
ков", пытающихся перенести эту
информацию в формат реального
Спектрума, но и у "виртуальщи-
ков", которым тоже приходится
"вертеться". Как правило, у них
установлено несколько эмуляторов
( каждый из которых поддерживает
какую-то определенную часть фор-
матов ), и различные программы
для перегонки из одного фомата в
другой. А это, согласитесь, пол-
ная жопа. Было бы неплохо, если
бы "убили" большую часть "ненуж-
ных" форматов, но это только
мечты. В добавок ко всему, не
так то легко найти описание этих
форматов и зачастую, файлы, ска-
чанные из Интернета, лежат нес-
колько месяцев прежде чем вы
сможете найти описание даного
формата или программу для его
декодирования.
Цель этой статьи - дать чита-
телям максимум знаний о различ-
ный форматах хранения спектру-
мовской информации на IBM-PC и в
сети Интернет, с которыми наибо-
лее часто приходится сталкивать-
ся на сегодняшний день.
--------------------------------
Формат TRD-файла.
Данный формат используется
эмуляторами Спектрума в качестве
образа дискеты. Т. е. когда при
работе в эмуляторе происходит
обращение к TR-DOS, эмулятор ра-
ботает с этим файлом, считая его
дискетой. Формат образа *.trd -
один из самых простых. Это, по
сути, обыкновенный двухсторонний
80-трековый TR-DOS диск с
шестнадцатью секторами на дорож-
ке, по 256 байт каждый. Т. е. в
файле данного формата целиком
хранится содержание TR-DOS дис-
кеты ( вместе с каталогом ). Для
декодирования в формат реального
Спектрума необходимо просто за-
писать содержащиеся в нем данные
на чистую TR-DOS дискету начиная
с нулевой дорожки. Размер файлов
*.trd чаще всего равен 655360
байт ( 2544+16 tr-dos секторов
), но иногда встречаются обре-
занные *.trd образы (меньше
655360 байт), а также "резино-
вые" (больше 655360 байт).
Но за простоту приходится пла-
тить. На таком образе диска
нельзя создать нестандартный
формат, в следствии чего появил-
ся еще один, довольно распостра-
ненный сегодня, формат *.fdi.
Формат FDI-файла.
Описание написано самим авто-
ром данного формата:
------------- Cut. -------------
Поскольку по ряду причин, су-
ществующие форматы файлов-
образов дискет не подходили
( отсутствие документации, а
главное - невозможность расшире-
ния формата для записи полных
образов треков, областей с физи-
ческими дефектами и т. п. ), то
пришлось создать свой собствен-
ный формат.
Не могу гарантировать, что
расширение *.FDI не используется
еще кем-то для других целей;
поэтому оговорюсь, что данное
описание актуально только для
файлов, создаваемых программой
MAKEFDI и используемых програм-
мой SP_EMU (Spectrum debugger).
Смещение (длина поля) описание:
┬ ┬ ┬
┌┘ ┌──────┘ │
│ │ ┌──────────┘
┴ ┴ ┴
+00 (3) Ключевая метка 'FDI'.
+03 (1) Флаг защиты записи (0 -
write enabled, 1 - write
disabled).
+04 (2) Число цилиндров.
+06 (2) Число поверхностей.
+08 (2) Смещение текста ( корот-
кий комментарий к диску ).
+0A (2) Смещение данных.
+0C (2) Длина дополнительной ин-
формации в заголовке. В этой
версии = 0.
+0E "Длина дополнительной инфор-
мации". Формат еще не определен
( резерв для дальнейшей модерни-
зации ).
+0E + "длина дополнительной
информации".
+?? Область заголовков треков.
Здесь собрана вся информация о
формате дискеты. Эта область
должна содержать не меньше "Чис-
ло цилиндров"*"Число поверхнос-
тей" заголовков. Заголовки идут
в порядке Cyl 0 Head 0, Cyl 0
Head 1, Cyl 1 Head 0 и т. д.
Формат заголовка описан ниже.
"Смещение текста"
+?? Комментарий к диску. Конец
комментария - нулевой символ.
MAKEFDI при создании нового фай-
ла позволяет вводить комментарий
не более 64 символов с завер-
шающим нулем, но при работе с
файлом длина этого поля будет
определяться по положению завер-
шающего нулевого символа.
"Смещение данных"
+?? Здесь лежат собственно дан-
ные из секторов. Сколько здесь
будет секторов, их длина и поря-
док следования - зависит от фор-
мата.
Формат FDI-файла допускает
пропуски между областями заго-
ловков треков, текстовым коммен-
тарием и областью данных.
Формат заголовка трека:
Смещение (длина поля) описание:
┬ ┬ ┬
┌┘ ┌──────┘ │
│ │ ┌──────────┘
┴ ┴ ┴
+00 (4) Смещение трека - начало
области данных этого трека
относительно "Смещения данных".
+04 (2) Всегда содержит 0 ( ре-
зерв для модернизации ).
+06 (1) Число секторов на треке.
+07 (Число секторов * 7) Инфор-
мация о секторах на треке. Каж-
дый сектор описывается 7 байта-
ми. Первые 4 байта - стандарные
параметры C,H,R,N из адресного
маркера. Следующий байт - флаги:
bit 7=0 - маркер нормальных дан-
ных, 1 - удаленных данных;
bit 0-5: флаги CRC. Единица в
одном из разрядов означает, что
при считывании этого сектора на
длину 128, 256, 1024, 2048 или
4096 байт, получается правильная
контрольная сумма. Если во всех
разрядах 0 - сектор записан с
ошибкой контрольной суммы.
bit 6: В данной версии всегда 0.
Возможно, 1 в данном разряде бу-
дет обозначать адресный маркер
без области данных.
Последние 2 байта - смещение
данных этого сектора относитель-
но начала области данных трека.
Чтобы получить абсолютный адрес
в файле, к этому числу надо до-
бавить "Смещение данных" и "Сме-
щение трека".
7*(Число секторов+1) длина заго-
ловка трека.
Заметим, что байт флагов в
описании сектора пока никак не
используется эмулятором.
( Углеков К. )
------------ Cut. --------------
Формат хобетных файлов.
Данный формат придуман для
хранения отдельных спектрумов-
ских файлов на IBM-PC и передачи
их по Интернету. Берется содер-
жимое TR-DOS файла, впереди к
нему добавляется заголовок из 17
байт и все это сохраняется в MS-
DOS файл. Обычно хобетные файлы
имеют вид *.$X, где вместо X
стоит символ, являющийся расши-
рением tr-dos файла, хотя это не
всегда так.
Структура 17-байтного заголовка,
добавляемого к TR-DOS файлам
программой HoBeta.exe:
00-07 - имя файла
08 - тип файла
09-0A - Start
0B-0C - Length
0D-0E - Length в 256-байтных за-
писях (байт 0E - pазмеp в сек-
тоpах)
0F-10 - Контрольная сумма
Таким образом, первые 14 байт
копируются из TR-DOS'овского ка-
талога.
Вычиление контрольной суммы:
S=S+257*Di+i, где
S начальное = 0
Di - значение байта
i - порядковый номер байта (на-
чиная с 0).
Но когда по Интернет пересы-
лается программа состоящая из
нескольких файлов, и порядок
файлов на TR-DOS диске имеет
значение, то необходимо посылать
сопроводительный текстовый файл,
в котором описывается порядок
следования файлов. Многие это
забывают, и иногда приходится
потратить несколько часов, чтобы
восстановить правильный порядок
файлов на TR-DOS диске. В связи
с этим был придуман более
совершенный формат *.scl.
Формат файлов SCL.
Текст взят из руководству к
программе AMD Copier (IBM_PC).
Это первая программа, поддержав-
шая данный формат.
------------ Cut. --------------
+00 (08) - надпись 'SINCLAIR'
+09 (01) - число TR-DOS файлов,
содержащихся в SCL файле. <fnum>
+0A (0E*fnum) - по 14 байт из
TR-DOS каталога на каждый TR-DOS
файл ( кроме дорожки/сектора )
+0A+0E*fnum (??) - непосред-
ственно содержимое секторов.
+?? (04) - 4-х байтовая
контрольная сумма ( сумма всех
предыдущих байт SCL файла ).
------------- Cut. -------------
to be continued...