> При попытке записать диск потреково через ИКП происходят ошибки записи и портится целевой образ. В то же время, при записи Бейсик-программ через Бейсик запись происходит нормально, образ не портится.
Кстати интересно, сейчас расскажу почему это может быть:
В силу конструкции агатовских контроллеров они могут работать как в режимах Track At Once, так и Sector At Once - т.е. можно записывать сразу всю дорогу со всеми адресными полями и полями данных, так и искать нужные адресные поля и перезаписывать следующие за ними поля данных.
Т.е. TAO - это как бы режим форматирования диска трека, но поля данных сразу записываются нужными значениями, а не нулями (или E6), как это принято в мире PC, например.
А SAO - это уже обычная запись - т.е. только данных в определённые сектора, служебка при этом не модифицируется.
В dos33 был только SAO, а также обычное форматирование трека.
Но когда для агата стали перерабатывать драйвера под 840ку и делать универсальные драйвера, там реализовали сразу пару фишек:
1) Очередь команд (ещё называемую "ленивый режим" - это когда драйвер сперва фиксирует всё, что нужно сделать на треке, а потом выполняет операции в том порядке, в котором встречает на дорожке нужные сектора. Это реализовал Александр Кривцов (он же автор переработки Бейсика-60 в ИКП-Бейсик)).
2) Режим TAO.
Разработку режима ТАО Александр Голов описал в доках на копировщик в составе своей BTK. И эта фишка затем зашла в копировщик ИКП. Иными словами: когда вы копируете диск в ИКП, он за один оборот диска делает и форматирование и запись всего трека.
А бейсик, когда работает с файлами, само собой может использовать только SAO - у него нет необходимости писать сразу треками.
Возможно, что при работе с эмуляторами флопа есть какой-то сильный сдвиг времени, и в режиме TAO трек куда-то съезжает - или получается слишком длинным или слишком коротким для эмулятора.
А в SAO драйвер "синхронизуется" с эмулятором делая корткие записи только послей адресных полей - поэтому всё работает.
Кстати, мосты работают только в TAO.
--
Но это ещё не всё.
Ещё один мало известный прикол агатовских дров эпохи 840ок (но не всех! вроде бы это относиться, например, к ИКП-бейсику, но не к копировщику ИКП) - при форматировании диска сперва делается тестовый проход дорожки: драйвер пытается оценить её RAW-объём (который зависит от скорости дисковода).
Для этого он записывает всю дорожку с некими "стандартными" GAP-полями, а затем измеряет получившееся GAP-поле между последним и первым сектором. Если это поле получилось меньше "стандартного" - то "стандартное" уменьшается и делается повторное форматирование. Если получилось большее поле - "стандартное" увеличивается.
Т.е. драйвер пытается так подогнать размер GAP, чтобы они получились примерно равными по всему треку.
И только после того, как он этого добивается на одном треке, с полученным значением GAP производиться форматирование остальных треков.
Такая логика может сильно озадачить эмулятор :)
И завесить драйвер, так как там предполагается, что алгоритм обязательно и быстро сойдётся.