Virtual Worlds
#01
31 декабря 1999 |
|
Техпомощь - File FAQ. Полный разбор форматов файлов, наиболее часто встечающихся в Интернет, и не только; а также способы их конвертации в "нормальный" вид.
┌────────────────────────────┐ │ ░▒▓▒▓█ 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...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября