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




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
