Недокументированные особенности КР1818ВГ93
После операции чтения/записи сектора возникает необходимость чтения порта #1F, на предмет проверки возникновения ошибки на предыдущей операции. В TR-DOS мне попался следующий кусок (по адресу #3EF3):
Код:
IN H,(C)
.wait:
IN A,(#FF)
AND #C0
JR Z,.wait
EI
RET M
DI
IN A,(#7F)
JR .wait
Понятно, что напрямую эту часть для чтения произвольного порта не получится, т.к. после завершения команда чтения/записи сектора это приведет к зацикливанию. Но этого можно избежать. После завершения какой-либо операции мы посылаем в регистр #1F код #E0 (команда "сырого" чтения дорожки). Эта команда не изменяет содержимое регистра состояния до своего завершения, а значит считываемое значение состояние контроллера остается от предыдущей операции. Посылка же команды "сырого" чтения дорожки контроллеру позволяла всего лишь избежать зацикливания.
Ну вот, всю идею я вроде описал, а теперь мне интересно, чтобы кто-нибудь проверил это на реальных машинах, потому что в эмуляторах это, кажется, не учитывается. Можно ли использовать данный трюк при программировании контроллера ВГ93? Будет ли он работать на всех машинах?