.imd

Материал из Emuverse
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Формат файла образа ImageDisk (.IMD)

6. Формат файла образа

Общая структура файла образа ImageDisk .IMD:

IMD v.vv: dd/mm/yyyy hh:mm:ss          (ASCII-заголовок)
Комментарий (только ASCII, без ограничения размера)  
1A — байт ASCII EOF                                   
— Для каждой дорожки на диске:
   1 байт   Значение режима (Mode)              (0–5)
   1 байт   Цилиндр                             (0–n)
   1 байт   Сторона (Head)                      (0–1) (см. примечание)
   1 байт   Число секторов на дорожке           (1–n)
   1 байт   Размер сектора                      (0–6)
   Карта нумерации секторов                     * число секторов
   Карта цилиндров секторов (опционально)       * число секторов
   Карта сторон секторов     (опционально)      * число секторов
   Записи данных секторов                       * число секторов
<Конец файла>

6.1 Значение режима (Mode)

Это значение указывает скорость передачи данных и плотность записи, с которыми изначально была записана дорожка:

Значение Режим
00 500 кбит/с FM
01 300 кбит/с FM
02 250 кбит/с FM
03 500 кбит/с MFM
04 300 кбит/с MFM
05 250 кбит/с MFM

Примечание: кбит/с указывает скорость передачи, а не скорость данных, которая для FM-кодирования составляет 1/2 от указанной.

6.2 Размер сектора

Значение размера сектора задаёт фактический размер данных сектора на дорожке:

Значение Размер
00 128 байт/сектор
01 256 байт/сектор
02 512 байт/сектор
03 1024 байт/сектор
04 2048 байт/сектор
05 4096 байт/сектор
06 8192 байт/сектор

ImageDisk в настоящее время не поддерживает диски с секторами разного размера в пределах одной дорожки (КГМД ПК не может записывать такие диски), однако предложено расширение формата .IMD для представления дисков такого типа:

Значение размера сектора 0xFF означает, что после карт нумерации секторов / цилиндров / сторон (непосредственно перед записями данных) располагается таблица размеров секторов, содержащая по одному 16-битному значению (в формате little-endian) на каждый сектор, определяющему фактический размер этого сектора.

6.3 Значение стороны (Head)

Это значение указывает сторону диска, на которой находится данная дорожка (0 или 1).

Поскольку HEAD может принимать только значения 0 или 1, ImageDisk использует старшие биты этого байта для индикации наличия опциональных элементов в данных дорожки:

  • Бит 7 (0x80) — Карта цилиндров секторов (Sector Cylinder Map)
  • Бит 6 (0x40) — Карта сторон секторов (Sector Head Map)

6.4 Карта нумерации секторов

Карта нумерации секторов содержит по одному байту на каждый сектор дорожки с физическим идентификатором (ID) этого сектора.

Обратите внимание, что эти значения могут не быть последовательными. Диск с чередованием секторов (interleave) будет иметь карту нумерации секторов, в которой номера секторов идут в непоследовательном порядке.

Если ImageDisk не удаётся получить все номера секторов за один оборот диска, он сообщит «Unable to determine interleave» и перестроит номера секторов в простой последовательный список.

6.5 Карта цилиндров секторов

Опциональное поле. Его наличие обозначается установленным битом 7 в значении Head для дорожки.

Если поле присутствует, это означает, что значения цилиндров, записанные в секторах, не совпадают с физическим цилиндром дорожки.

Карта цилиндров секторов содержит по одной записи на каждый сектор; запись содержит логический идентификатор цилиндра для соответствующего сектора из карты нумерации секторов.

Для чтения диска с нестандартными идентификаторами цилиндров потребуется использование режима FULL ANALYSIS.

6.6 Карта сторон секторов

Опциональное поле. Его наличие обозначается установленным битом 6 в значении Head для дорожки.

Если поле присутствует, это означает, что значения сторон, записанные в секторах, не совпадают с физическим выбором стороны для дорожки.

Карта сторон секторов содержит по одной записи на каждый сектор; запись содержит логический идентификатор стороны для соответствующего сектора из карты нумерации секторов.

Для чтения диска с нестандартными идентификаторами сторон может потребоваться использование режима FULL ANALYSIS.

6.7 Записи данных секторов

Для каждого идентификатора сектора в карте нумерации секторов ImageDisk сохраняет запись данных сектора. Эти записи следуют в том же порядке, что и идентификаторы в карте нумерации секторов:

Тип Описание
00 Данные сектора недоступны — не удалось прочитать
01 .... Обычные данные: следует (размер сектора) байт
02 xx Сжатые: все байты сектора имеют одинаковое значение (xx)
03 .... Обычные данные с меткой адреса удалённых данных (Deleted-Data address mark)
04 xx Сжатые с меткой адреса удалённых данных
05 .... Обычные данные, прочитанные с ошибкой данных
06 xx Сжатые, прочитанные с ошибкой данных
07 .... Удалённые данные, прочитанные с ошибкой данных
08 xx Сжатые, удалённые, прочитанные с ошибкой данных