.imd

Материал из Emuverse
Версия от 20:44, 15 мая 2026; Panther (обсуждение | вклад) (Новая страница: «{{ДИ}} = Формат файла образа ImageDisk (.IMD) = == 6. Формат файла образа == Общая структура файла образа ImageDisk .IMD: IMD v.vv: dd/mm/yyyy hh:mm:ss (ASCII-заголовок) Комментарий (только ASCII, без ограничения размера) 1A — байт ASCII EOF — Для каждой дорожки на диск...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Данный материал защищён авторскими правами!

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

Формат файла образа 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 Сжатые, удалённые, прочитанные с ошибкой данных