FDI — различия между версиями
Материал из SpeccyWiki
Zxdn (обсуждение | вклад) (Новая: '''FDI''' ('''*.fdi''') - формат для хранения образов дискет TR-DOS. Разработан [[Константин Углеков|Константином...) |
DimkaM (обсуждение | вклад) м (→Формат файла, заголовок) |
||
(не показаны 4 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
'''FDI''' ('''*.fdi''') - формат для хранения образов дискет [[TR-DOS]]. Разработан [[Константин Углеков|Константином Углековым]], автором [[UKV Spectrum Debugger]] - одного из первых отечественных эмуляторов [[ZX Spectrum]]. Существовавшие на тот момент форматы не устраивали его отсутствием документации и невозможностью записи полных образов треков, областей с физическими дефектами и т.п. Для снятия образов автор разработал программу MAKEFDI, включённую в комплект эмулятора. Впоследствии формат был поддержан во многих других эмуляторах. | '''FDI''' ('''*.fdi''') - формат для хранения образов дискет [[TR-DOS]]. Разработан [[Константин Углеков|Константином Углековым]], автором [[UKV Spectrum Debugger]] - одного из первых отечественных эмуляторов [[ZX Spectrum]]. Существовавшие на тот момент форматы не устраивали его отсутствием документации и невозможностью записи полных образов треков, областей с физическими дефектами и т.п. Для снятия образов автор разработал программу MAKEFDI, включённую в комплект эмулятора. Впоследствии формат был поддержан во многих других эмуляторах. | ||
+ | |||
+ | == Описание == | ||
+ | === Формат файла, заголовок === | ||
+ | {| class="standard" | ||
+ | !Смещение | ||
+ | !Размер | ||
+ | !Назначение | ||
+ | |- | ||
+ | |0 | ||
+ | |3 | ||
+ | |Сигнатура 'FDI' | ||
+ | |- | ||
+ | |3 | ||
+ | |1 | ||
+ | |Флаг защиты записи (0 - запись разрешена, 1 - запрещена) | ||
+ | |- | ||
+ | |4 | ||
+ | |2 | ||
+ | |Число цилиндров | ||
+ | |- | ||
+ | |6 | ||
+ | |2 | ||
+ | |Число головок | ||
+ | |- | ||
+ | |8 | ||
+ | |2 | ||
+ | |Смещение текста (короткий комментарий к диску) | ||
+ | |- | ||
+ | |A | ||
+ | |2 | ||
+ | |Смещение данных | ||
+ | |- | ||
+ | |С | ||
+ | |2 | ||
+ | |Длина дополнительной информации в заголовке. В этой версии - 0 | ||
+ | |- | ||
+ | |E | ||
+ | |"Длина дополнительной информации" | ||
+ | |Резерв для дальнейшей модернизации | ||
+ | |- | ||
+ | |E+"длина дополнительной информации" | ||
+ | |??? | ||
+ | |Область заголовков треков. Здесь собрана вся информация о формате дискеты. Эта область должна содержать не меньше "Число цилиндров"*"Число поверхностей" заголовков. Заголовки идут в порядке Cyl 0 Head 0, Cyl 0 Head 1, Cyl 1 Head 0 и т.д. Формат заголовка описан ниже. | ||
+ | |- | ||
+ | |"Смещение текста" | ||
+ | |??? | ||
+ | |Комментарий к диску.Конец комментария - нулевой символ. MAKEFDI при создании нового файла позволяет вводить комментарий не более 64 символов с завершающим нулем,но при работе с файлом длина этого поля будет определяться по положению завершающего нулевого символа | ||
+ | |- | ||
+ | |"Смещение данных" | ||
+ | |??? | ||
+ | |Здесь лежат собственно данные из секторов. Сколько здесь будет секторов, их длина и порядок следования - зависит от формата. | ||
+ | |} | ||
+ | |||
+ | Формат FDI-файла допускает пропуски между областями заголовков треков,текстовым | ||
+ | комментарием и областью данных. | ||
+ | |||
+ | === Формат заголовка трека === | ||
+ | {| class="standard" | ||
+ | !Смещение | ||
+ | !Размер | ||
+ | !Назначение | ||
+ | |- | ||
+ | |0 | ||
+ | |4 | ||
+ | |Смещение трека - начало области данных этого трека относительно "Смещения данных" | ||
+ | |- | ||
+ | |4 | ||
+ | |2 | ||
+ | |Всегда содержит 0 (резерв для модернизации) | ||
+ | |- | ||
+ | |6 | ||
+ | |1 | ||
+ | |Число секторов на треке | ||
+ | |- | ||
+ | |7 | ||
+ | |(Число секторов)*7 | ||
+ | |Информация о секторах на треке.Каждый сектор описывается 7 байтами.<br>Первые 4 байта - стандарные параметры C,H,R,N из адресного маркера. Где C - номер цилиндра, H - номер головки, R - номера сектора и N - размер сектора (128 * 2^N).<br>Следующий байт - флаги:<br>bit 7=0 - маркер нормальных данных, 1 - удаленных данных;<br>bit 0-5: флаги CRC. Единица в одном из разрядов означает, что при считывании этого сектора на длину 128,256,512,1024,2048 или 4096 байт получается правильная контрольная сумма. Если во всех разрядах 0 - сектор записан с ошибкой контрольной суммы.<br>bit 6: В данной версии всегда 0. Возможно, 1 в данном разряде будет обозначать адресный маркер без области данных.<br>Последние 2 байта - смещение данных этого сектора относительно начала области данных трека. Чтобы получить абсолютный адрес в файле, к этому числу надо добавить "Смещение данных" и "Смещение трека" | ||
+ | |} | ||
+ | |||
+ | |||
+ | 7*(Число секторов+1) длина заголовка трека | ||
+ | |||
+ | Байт флагов в описании сектора не использовался эмулятором. | ||
[[Категория:Форматы файлов]] | [[Категория:Форматы файлов]] |
Текущая версия на 16:08, 17 августа 2015
FDI (*.fdi) - формат для хранения образов дискет TR-DOS. Разработан Константином Углековым, автором UKV Spectrum Debugger - одного из первых отечественных эмуляторов ZX Spectrum. Существовавшие на тот момент форматы не устраивали его отсутствием документации и невозможностью записи полных образов треков, областей с физическими дефектами и т.п. Для снятия образов автор разработал программу MAKEFDI, включённую в комплект эмулятора. Впоследствии формат был поддержан во многих других эмуляторах.
Описание
Формат файла, заголовок
Смещение | Размер | Назначение |
---|---|---|
0 | 3 | Сигнатура 'FDI' |
3 | 1 | Флаг защиты записи (0 - запись разрешена, 1 - запрещена) |
4 | 2 | Число цилиндров |
6 | 2 | Число головок |
8 | 2 | Смещение текста (короткий комментарий к диску) |
A | 2 | Смещение данных |
С | 2 | Длина дополнительной информации в заголовке. В этой версии - 0 |
E | "Длина дополнительной информации" | Резерв для дальнейшей модернизации |
E+"длина дополнительной информации" | ??? | Область заголовков треков. Здесь собрана вся информация о формате дискеты. Эта область должна содержать не меньше "Число цилиндров"*"Число поверхностей" заголовков. Заголовки идут в порядке Cyl 0 Head 0, Cyl 0 Head 1, Cyl 1 Head 0 и т.д. Формат заголовка описан ниже. |
"Смещение текста" | ??? | Комментарий к диску.Конец комментария - нулевой символ. MAKEFDI при создании нового файла позволяет вводить комментарий не более 64 символов с завершающим нулем,но при работе с файлом длина этого поля будет определяться по положению завершающего нулевого символа |
"Смещение данных" | ??? | Здесь лежат собственно данные из секторов. Сколько здесь будет секторов, их длина и порядок следования - зависит от формата. |
Формат FDI-файла допускает пропуски между областями заголовков треков,текстовым комментарием и областью данных.
Формат заголовка трека
Смещение | Размер | Назначение |
---|---|---|
0 | 4 | Смещение трека - начало области данных этого трека относительно "Смещения данных" |
4 | 2 | Всегда содержит 0 (резерв для модернизации) |
6 | 1 | Число секторов на треке |
7 | (Число секторов)*7 | Информация о секторах на треке.Каждый сектор описывается 7 байтами. Первые 4 байта - стандарные параметры C,H,R,N из адресного маркера. Где C - номер цилиндра, H - номер головки, R - номера сектора и N - размер сектора (128 * 2^N). Следующий байт - флаги: bit 7=0 - маркер нормальных данных, 1 - удаленных данных; bit 0-5: флаги CRC. Единица в одном из разрядов означает, что при считывании этого сектора на длину 128,256,512,1024,2048 или 4096 байт получается правильная контрольная сумма. Если во всех разрядах 0 - сектор записан с ошибкой контрольной суммы. bit 6: В данной версии всегда 0. Возможно, 1 в данном разряде будет обозначать адресный маркер без области данных. Последние 2 байта - смещение данных этого сектора относительно начала области данных трека. Чтобы получить абсолютный адрес в файле, к этому числу надо добавить "Смещение данных" и "Смещение трека" |
7*(Число секторов+1) длина заголовка трека
Байт флагов в описании сектора не использовался эмулятором.