.imd
| Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. |
Формат файла образа 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 |
Сжатые, удалённые, прочитанные с ошибкой данных |