Вторник, 17.10.2017, 14:19

..



Главная Регистрация Вход
Приветствую Вас, Гость · Браузер: « v»
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Всё об «Электроника БК0010(-01), БК0011(М)»! » Языки программирования » Ассемблер & Микроассемблер » Листинги подпрограмм » Пример автоповтора клавиатуры. (Для языков семейств «Turbo» и «Micro».)
Пример автоповтора клавиатуры.
CD-IncДата: Среда, 17.12.2014, 22:20 | Сообщение # 1
Оператор Машинного Доения
Группа: Администраторы
Сообщений: 28
Репутация: 2
Статус: 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
 
Всё об «Электроника БК0010(-01), БК0011(М)»! » Языки программирования » Ассемблер & Микроассемблер » Листинги подпрограмм » Пример автоповтора клавиатуры. (Для языков семейств «Turbo» и «Micro».)
Страница 1 из 11
Поиск:

-=RUS=-
ICQ: 320867225