CD-Inc | Дата: Среда, 17.12.2014, 22:20 | Сообщение # 1 |
 Оператор Машинного Доения
Группа: Администраторы
Сообщений: 31
Статус: Offline
| Вот накидал, немного не оптимально, но принцип ясен:
EMT 4 ;Для проформа инициализируем клаву MOV @#4,STEK ;Запоминаем вектор СТОПа MOV #END,@#4 ;Пихаем туда свой для выхода.
;Тело автоповтора START: EMT 6 ;Считываем код клавиши в Р0 EMT 16 ;Выводим символ из Р0
;Проверяем серьёзность намерения удерживать клавишу MOV #15000,R5 1M: BIT #100,@#177716 BNE START SOB R5,1M
;Технично попёрдываем в спикер 2M: MOV #5000,R5 SOB R5,. MOV #100,@#177716 MOV #6000,R5 SOB R5,. MOV #0,@#177716
;Проверяем нажата ли клавиша, если да то выводим символ BIT #100,@#177716 BNE START ;Если не нажата, то на ЕМТ 6 EMT 16 BR 2M ;Продолжаем технично попёрдывать в спикер
;Конец тела автоповтора STEK: .BLKW 1 ;Хранилище вектора 4
END: MOV STEK,@#4 ;Возвращаем СТОПу изначальный вектор RET ;Выходим откуда запускались .END
Набирал и компилил в TURBO8DK
Подобно можно сделать и при отключенном прерывании клавиатуры, считывая код напрямую из регистра 177662. Совместить техничное попёрдывание с проверкой намерения удержания, тем самым сократить длину обработчика раза в два.
Файлы прилагаются: autoKey.rar
|
|
| |