По поводу теста TUK:
1. Параллельный порт, сетевой адаптер и КНМЛ требуют заглушек, поэтому в эмуляторе и ошибки. Хотя текущая реализация КНМЛ и программируемого таймера не очень, сетевой адаптер вообще не реализован.
2. Ошибки обмена по ловушке. Тут в тесте прерывания не используются, используется формирование сигнала на линии ПОРТ. Используется какой-то регистр 177514, которого в стандартной УКНЦ нет. Может он есть в 1515ХМ2-003, не знаю.
Вот текст теста. Тест писался на Си, соответственно код такой, что чёрт ногу сломит:
Код:
MOV #176644,-10(R5)
MOV #176646,-12(R5)
MOV #177514,-14(R5)
MOV #160,-16(R5)
MOV #400,@-10(R5)
MOV -14(R5),@-12(R5)
MOV @-14(R5),-20(R5)
В эмуляторе реализовано только прерывание, линии ПОРТ и РЕЖ1 предназначены для тестовых целей в составе стенда. Поэтому в эмуляторе возникает прерывание 4 при обращении к регистру 177514.
Неплохо бы попробовать этот тест на реальной УКНЦ. Мне лень, надо дисководы подключать, записывать образ дискеты, если что, то попозже.
А так большая просьба к владельцам реальных УКНЦ - запустить этот тест. А к владельцам УКНЦ с 1515ХМ2-003 - посмотреть, не присутствуют ли какие-либо другие регистры на шине ЦП, например 177514.
3. По поводу клавиатуры. Разработчики молодцы !!! Учли, что регистр 177702 крутится как счетчик, останавливается он только при нажатии/отжатии клавиши. После прочтения кода продолжает дальше крутиться. Фрагмент кода в ОЗУ ЦП:
Код:
12470: MOV @-14(R5),-10(R5)
BEQ 12470
DEC @-14(R5)
А теперь код из ОЗУ ПП:
Код:
40004: TSTB @#177700
BPL 40004
TSTB @#177702
BMI 40004
MOV #0,@#177010
MOV @#177702,@#177014
RETURN
Подпрограмма в ПП ждет нажатия клавиши. Первое чтение регистра 177702 производится командой TSTB @#177702, соответственно счетчик продолжает дальше крутиться. Пока выполняются другие команды он успевает увеличится на единицу. Этот момент учитывается в программе, которая крутится в памяти ЦП, делается команда DEC @-14(R5).
На реальной машине программа в ОЗУ ПП выполняется медленно, а в эмуляторе ее быстродействие такое же, как в ЦП, поэтому в 177702 счетчик еще не успевает инкрементироваться и читает старый код клавиши.