FDI — различия между версиями

Материал из SpeccyWiki
Перейти к: навигация, поиск
(Новая: '''FDI''' ('''*.fdi''') - формат для хранения образов дискет TR-DOS. Разработан [[Константин Углеков|Константином...)
 
Строка 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 байтами. Первые 4 байта - стандарные параметры C,H,R,N из адресного маркера. Следующий байт - флаги:<br>bit 7=0 - маркер нормальных данных, 1 - удаленных данных;<br>bit 0-5: флаги CRC. Единица в одном из разрядов означает, что при считывании этого сектора на длину 128,256,1024,2048 или 4096 байт получается правильная контрольная сумма. Если во всех разрядах 0 - сектор записан с ошибкой контрольной суммы.<br>bit 6: В данной версии всегда 0. Возможно, 1 в данном разряде будет обозначать адресный маркер без области данных.
 +
|}
 +
 +
Последние 2 байта - смещение данных этого сектора относительно начала области данных трека. Чтобы получить абсолютный адрес в файле, к этому числу надо добавить "Смещение данных" и "Смещение трека"
 +
 +
7*(Число секторов+1)    длина заголовка трека
 +
 +
Байт флагов в описании сектора не использовался эмулятором.
  
 
[[Категория:Форматы файлов]]
 
[[Категория:Форматы файлов]]

Версия 07:08, 9 апреля 2008

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 из адресного маркера. Следующий байт - флаги:
bit 7=0 - маркер нормальных данных, 1 - удаленных данных;
bit 0-5: флаги CRC. Единица в одном из разрядов означает, что при считывании этого сектора на длину 128,256,1024,2048 или 4096 байт получается правильная контрольная сумма. Если во всех разрядах 0 - сектор записан с ошибкой контрольной суммы.
bit 6: В данной версии всегда 0. Возможно, 1 в данном разряде будет обозначать адресный маркер без области данных.

Последние 2 байта - смещение данных этого сектора относительно начала области данных трека. Чтобы получить абсолютный адрес в файле, к этому числу надо добавить "Смещение данных" и "Смещение трека"

7*(Число секторов+1) длина заголовка трека

Байт флагов в описании сектора не использовался эмулятором.