Выловил еще один глюк, причем элементарный ((((
Было
Код:
ADH_WR |= AD6;
ADH_WR |= AD7;
ADH_WR &= (CTRL_REG & (AD6|AD7)).
Вместо того, чтобы изменить 6 и 7 бит порта ADH_WR, менялся полностью байт, т.е. 0-5 биты обнулялись.
Заменил на
Код:
ADH_WR &= ~AD6;
ADH_WR &= ~AD7;
ADH_WR |= (CTRL_REG & (AD6|AD7))
Так же добавил задержку в 120мс (сигнал RP1) для того, что бы проц успевал отработать даже саму "медленную" клавишу "ТАБ" (около 30 считываний регистра кода клавиши) и при этом не возникали прерывания - эмуляция задержки на конденсаторах на ВП1-14.
Осталась одна проблема. В некоторые моменты проц почему-то считывает не регистр кода клавиши (для обычный кодов по 2 раза), а делает цикл "чтение-модификация-запись" регистра состояния, а затем, как положено, чтение регистра кода клавиши, что приводит к выводу "СТОП" и в дальнейшем к зависанию. Пытался разбираться в исходниках Монитора БКшки, но особо ничего не понял, с ВМ1 особо не знаком.
Может кто поможет разобраться с исходниками, что бы понять в какие моменты (кроме инициализации) происходит чтение-запись регистра состояния ВП1-14?
P.S. Жуть - 666 сообщение... )))))