|
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...
Другие статьи номера:
Похожие статьи:
В этот день... 1 января
SibNews #08,
Woot! #01,
Spectrum Magazine #01,
ACNews #25,
Psychoz #14,
ACNews #14,
Last 128 #08,
Last 128 #06,
Last 128 #05,
Last 128 #04,
Last 128 #03,
Last 128 #02,
Last 128 #09,
Last 128 #3.5,
Last 128 #8.025,
Sinclair Club #05,
Last 128 #M!R 01,
Fantadrom #01,
Buzz #20,
Last 128 #01,
DonNews #13,
Nicron #120,
Promised Land #01,
Inferno #01,
Marazm #25,
Ultimathum #01,
Marazm #21,
Hooy Mag #02,
KrNews #11,
Marazm #22,
Marazm #23,
ZX Football 2000 #01,
Codemania #01,
Always #03,
Bugs #02,
IzhNews #08,
Virtual Worlds #01,
Listok #04,
Scenergy #02,
Flash Info #18,
Marazm #16,
Marazm #17,
Zed #01,
Balagan #02,
ZX Format #08,
ZX Power #03,
Shock #01,
Impulse #02,
Deja Vu #03,
ZX Club #08,
ZX Club #06,
Numberology #01,
Marazm #13,
Marazm #12,
Marazm #14,
Gorodok #02,
Zodiac #01,
Marazm #15,
Deja Vu #07,
Marazm #11,
Deja Vu #07,
Playboy #03,
Crazy News #2,
Crazy News #4,
ZX Light #01,
Crazy News #5,
Playboy #02,
ZX News #03,
ZX Review #1-2,
Read Me #02,
Crazy News #3,
Nicron #13,
Read Me #01,
Public Spirit #01,
Faultless #06,
Faultless #05,
ZX Software #01,
Stump #04,
Speccy #07,
Возраждение #0,
Speccy #03,
On-Line #17,
Scene+ #01,
Welcome Press #01,
ZX Konig #04,
Adventurer #01,
Faultless #05,
Faultless #04,
Di Halt #01,
Faultless #01,
Playboy #01,
Crazy News #1,
Faultless #03,
Pioneer #03,
Sinclair Town #02,
ZX Magazine #01,
Eldorado #01,
ZX Magazine #02,
Spectron #01,
ZX News #01,
ZX Konig #02,
200 #W,
Welcome Press #00,
Dune #07,
Subliminal Extacy #01,
Subliminal Extacy #02,
ZX Konig #01,
Subliminal Extacy #00,
Muchomor #01,
Spectrofon #01,
ZX Revija #02,
Outlet #01,
Outlet #1-3