Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?


    .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 байта - стандарные параметры 
                0-Track
                1-Head
                2-Sector
                3-Lenght из адресного маркера. Следующий байт - флаги:

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

                Последние 2 байта - смещение данных этого сектора относительно
                начала области данных трека. Чтобы получить абсолютный адрес
                в файле, к этому числу надо добавить "Смещение данных" и
                "Смещение трека"
                5-Low byte
                6-High byte
------------------------------------------------------------------------------
7*(Число секторов+1)    длина заголовка трека


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