** Сайт посвящённый ПЭВМ АГАТ **
Передовица (меню разделов)
⇓
Эмуляторы/утилиты
⇓
Форматы файлов
⇓
.AIM
Файл-образ для Агатовских дисков формата 840Кб. Введён в 2009 году, заменяет старые .IM(.NIB).
.AIM (размер файла 2020 кб) несут в себе максимально подробную информацию о диске, с них запускаются и работают любые программы, даже имеющие активную защиту от копирования.
160 дорожек. Дорожка фиксированного размер $1940 (TrkSize800) слов 16 бит. Следовательно, размер образа: 2068480 байт.
Каждое из 6464 слов может быть либо обычным байтом данных либо служебным (синхро, индекс...), поэтому для простоты кода и легкого визуального редактирования образов предположим, что избыточность оправдана.
Смысла делать нефиксированный размер дорожки нет, т.к. никогда неизвестно, сколько данных захочет закинуть на дорожку код в виртуальной машине, а раздвигать содержимое файла - лень.
Байты слов хранятся в обратном порядке. Слова анализируются так: 00xx - обычные данные, через регистры IO передается младшая часть 01xx - синхросбой 02xx - конец дорожки (заворот на начало) [читается, но не записывается] 03xx - индекс начало (1 -> 0) 13xx - индекс конец (0 -> 1)
При появлении кода 01xx в регистр чтения передается байт мусора (мл байт). Этот байт будет считан стандартными драйверами без ожидания готовности и затем отброшен. Другие коды тихо пропускаются и не доступны через регистр чтения. Неизвестные коды также пропускаются без какой либо реакции. Не следует заполнять недоступными кодами участок, в котором index = 0, т.к. в этом случае программа вообще не сможет обнаружить сигнал индекса.
Недопустимо, т.к. эмулятор может зависнуть, если: - код 02xx встретился в самом начале дорожки - на дорожке нет ни одного слова 00xx или 01xx
При чтении трека эмулятор должен его изучить и если будут найдены коды 03xx или 13xx, то по ним будет устанавливаться бит Index. Иначе Index = 1 везде, кроме интервала [0..$3F] (слов). Если 03xx или 13xx встречаются после 02xx - эмулятор не изменяет значение Index. Это может использоваться для отладки.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *