
Сообщение от
Alexander Makeev
скорей всего загрузчик расчитывает на приход прерывания индексного отверстия, т.к. после отключения мотора диск все-еще крутится по инерции. нужно проверить, но похоже в эмуляторе вг93 эта инерция при отключении двигателя не предусмотрена и получается что индексное прерывание после отключения двигателя уже никогда не приходит...
Нее, дело не в этом. Сейчас проверил работу загрузчика в разных вариантах:
Код:
xor a
out (#1f),a
ret
т.е. убрал команду прерывания выполнения команды. Turboloader работает нормально, только с какого-то фига "головка дисковода" таки лезет на 0 трек (с чего бы?) при выполнении первой команды связанной с портом ВГ-шки, в данном случае out (#7f),track. Но далее командой "позиционирование" возвращается на нужный трек и все ок.
Код:
Здесь я несколько изменил процедуру, добавив ожидание выполнения команды:
xor a
out (#1f),a
#3fe5 in a,(#ff) - происходит позиционирование на 0 трек (с чего бы?)
and #c0
jr z,#3fe5
ret m
Собственно, дальше turboloader также работает нормально, возвращая "головку дисковода" на нужное место командой "позиционирование".
В связи с этим возникает вопрос: каким образом происходит эмуляция команды "восстановление" при условии того, что bit 3 (загрузка головки) в 0? На реале, чтобы диск раскрутился этот бит всегда должен быть в 1, собственно этим нулевым битом и происходит торможение и гашение лампочки. Следующий вопрос: что происходит в эмуляции ВГ-шки, после выполнения команды "прерывание выполнения предыдущей команды"? Что там с сигналами intrq и drq? Почему после выполнения последовательности
Код:
xor a
out (#1f),a
ld a,#d0
out (#1f),a
приходит "капец"?

Сообщение от
introspec
Ёлки-палки, до чего же здорово!

Чего же тут здорового? )) Это наоборот печаль.