
предложеный Patronom вариант
Код:
VAR SIMB :INTEGER;
PROCEDURE READSIM;
BEGIN
(*$C
EMT ^O340
BCS SKIP
MOV %0,SIMB(%5)
SKIP:
*)
END;
не работает и даже не пытается, процедура просто проскакивает как пустая при выполнении программы (что я не так делаю?)!!!
Да и почему вместо (SP) %5, a вместо R0 %0 ???

Сообщение от
Patron
Надо доверить опрос клавиатуры операционной системе, а в программе для проверки готовности символа использовать ассемблерную вставку с вызовом .TTINR
А чтобы этот вызов не подвешивал программу в старших релизах RT-11 - добавить ассемблерную вставку, которая будет устанавливать нужные биты JSW.
.TTINR так же просто игнорируется при выполнении программы
И вот этот вариант сбоит - то есть пропускает ожидание через раз,
может реагирует и на отжатие???
Код:
var
INKEY ORIGIN 177560B: INTEGER;
KEY ORIGIN 177562B: INTEGER;
<...>
repeat
INKEY:=0;
until (INKEY AND 128)<>0;
Я в шоке!!!
Ребята подскажите как
1 - мне получить 100% гарантию ожидания нажатия клавиатуры в любом месте программы и в регистре данных клавиатуры или какой-нибудь переменной сохранить нажатую кнопку в виде кода или символа
2 - мне считать нажатие с клавиатуры без ожидания нажатия внутри
цикла например и опять таки иметь этот код или в регистре или в переменной (но тут обычно хватает тупо обнулить РА и потом уже
в цикле проверять что нажато было последний раз)
Буфер - про буфер и как его почистить я вообще не буду спрашивать, мне бы просто выяснить 1 и 2 пункты )
В чём моя ошибка? Что я не так делаю? Должен же быть человеческий и рабочий способ !!! Печаль! А главное последний
вариант работает, но хитро!!! Манипулировать с регистрами клавиатуры получается, но непредсказуемо как-то. Печаль два раза.