.FDI файлы ---------- Поскольку по ряду причин существующие форматы файлов-образов дискет не подходили (отсутствие документации, а главное - невозможность расширения формата для записи полных образов треков, областей с физическими дефектами и т.п.), то пришлось создать свой собственный формат. Не могу гарантировать, что расширение *.FDI не используется еще кем-то для других целей; поэтому оговорюсь, что данное описание актуально только для файлов, создаваемых программой MAKEFDI и используемых программой SP_EMU (Spectrum debugger). ------------------------------------------------------------------------------ Смещение Длина поля Описание ------------------------------------------------------------------------------ 0 3 Ключевая метка 'FDI' 3 1 Флаг защиты записи (0 - write enabled, 1 - write disabled) 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) длина заголовка трека Заметим, что байт флагов в описании сектора пока никак не используется эмулятором.