lvd wrote:Может отдельную тему или даже раздел форума замутить?
Не стоит. Цель моей повышенной активности в последнее время - добить и забить.
Работает все, кроме anamnesis и Kag!.
И по-прежнему, проблемы с загрузчиком ZX-Format #8 (и другие номера, кроме 1-2).
Алонекодер пишет:
Кажется, разобрался, в чём дело с ZX-Format #6.
Лоадер работает правильно. Он грузит много блоков, потом показывается
картинка и журнал начинает проверять смену диска с помощью чтения
порта #1f.
Делает он это так (#9e9b):
даёт команду #08
вызывает #3f33 с хитрым состоянием регистров и переменных (описано у
Ларченко-Родионова, но в отличие от книжки, тут регистры сектора и
дорожки не установлены)
на реале должно читаться #21 (команда занята)
на p2.666 читается #26 (команда выполнена, трек0, индексный импульс) и идёт по той ветке, где
сравниваются регистры сектора и дорожки с заданными значениями. И всё
виснет.
Что надо сделать:
Чтобы команда #08 завершалась не сразу, а по таймауту.
Ещё, возможно, надо, чтобы индексный импульс (бит 1) периодически
появлялся, но в основном его не было. Иначе это выглядит как будто
дискета вынута.
И еще:
koe> 08 - это какая команда? Я вижу в отладчике, что периодически
koe> делается read address. По таблице в даташите на вг93 вижу, что это
koe> может быть restore (если считать биты 7...4).
Это переход на 0-ю дорожку. Наверно называется restore.
koe> Restore выполняется с
koe> паузой (но ее длительность взята от балды), read address тоже
koe> выполняется с паузой. Каков должен быть таймаут?
6 мс (но команда прерывания операции (#dx) должна сбрасывать этот таймер).
koe> Индексная метка у меня меняет свое значение на обратное при
koe> каждом ее прочтении. Могу сделать, например, так, чтобы она была
koe> активна один раз в 10 прочтений.
По факту я не детекчу в отладчике вызов команды restore (что, однако, не означает того, что она не вызывается, я смотрю в реалтайме, могу пропустить быстрые изменения флагов). Детекчу бесконечный цикл, в котором вызывается команда read address. Непонятно, с какой целью. Сделал пока паузы для команд restore и read address 24 мс (6 тоже пробовал). А для индексного импульса сделал так, что он появляется 1 раз за 256 попыток прочитать статус. По-прежнему загрузчик (на примере ZF 8) виснет после появления на экране заставки с деревьями. При этом intro загружается и работает нормально.