Привет _Igor_ ! Как поживаешь?
11 Апр 12 11:29, _Igor Qwerty_ ══ /John Zaicev/:
IQ>>> тогда уж так:
IQ>>> 10 IF POKE(61) THEN LOAD "" ELSE 10
IQ>>> вот как-то так на васике будетъ :-)
IQ>>> только я ХЗ даж примерно, какой там на спектрумах может быть
IQ>>> "порт клавиатуры" :-)
JZ>> #FE. Только биты не помню. Кстати, на этом порту висит еще
JZ>> динамик и магнитофон.
IQ> дык, мне что-то казалось, что у спектрумов клавка была этак портов на
IQ> 3-4 раскидана. там же кнопки не по сканкодам определялись, а по
IQ> пересечениям?
Малость ошибся.
Hазначение байтов KSTATE:
#5C00 (IY-58) Значение 255, если блок свободен, либо код
#5C04 (IY-54) нажатой клавиши ( в верхнем регистре).
#5C01 (IY-57) Счетчик для устранения дребезга.
#5C05 (IY-53)
#5C02 (IY-56) Счетчик, определяющий задержку автоповтора
#5C06 (IY-52) действия клавиши.
#5C03 (IY-55) Код нажатой клавиши
#5C07 (IY-51)
LAST_K, 1 байт, #5C08, N, 23560, IY-50
Код последней нажатой клавиши с учетом регистров. Он
хранится здесь, пока не будет нажата другая клавиша
REPDEL, 1 байт, #5C09, , 23561, IY-49
Величина задержки между нажатием клавиши и автоповтором.
Hормальное значение 35 (#23).
REPPER, 1 байт, #5C0A,, 23562, IY-48
Скорость автоповтора при длительном нажатии на клавишу.
Hормальное значение 5.
Каждый раз, когда нажимается или отпускается какая-ни-
будь клавиша на клавиатуре, изменяется соответствующий
бит.Каждые 1/50 секунды компьютер сканирует клавиатуру, вы-
рабатывая с помощью программ ASCII-код соответствующей кла-
виши.
Сначала с помощью сканирования клавиши получает
скен-код, потом с помощью таблиц, происходит декодирование,
транслирование, архивирование, скроллирование с целью полу-
чения ASCII-кода. Работа по переводу скен-кода усложняется
тем, что клавиатура имеет несколько операций по усложнению
регистров, меняющих значение нажатых клавиш. Hапример, нажав
клавишу CAPS SHIFT и одновременно клавишу С, по получим про-
писную С.
Клавиши регистров и клавиши-переключатели.
В дополнение к основным клавишам SHIFT и CAPS есть еще
клавиши-переключатели, которые также влияют на механизм пе-
реклюхения регистров клавиатуры - клавиши GRAPHICS, EXTERN
CAPS LOCK.
Информация о состоянии регистров храниться в области
системных переменных
23617/#5C41 0 - K, L, C режимы
1 - Е режим
2 и более - G режим
23658/#5С6А бит 3 установлен - C режим
сброшен - L режим
Всякий раз, когда BIOS получает скэн-код нажатия обычной
клавиши, проверяется состояние этих режимов и после этого
вырабатывается окончательный код.
Клавиши связи
Когда подпрограммы BIOS транслируют коды, она постоянно
проверяет их на определенные комбинации, такие как
CAPS+SPACE (BREAK). Эти командыы застявляют немедленно вы-
полнить определенные действия, а иногда даже не помещать код
в память
Повторение действия клавиши
Hа клавиатуре компьютера действия клавиши может автома-
тически повторяться. С помощью специальных подпрограмм, оп-
ределяется, как долго остается клавиша в нажатом состоянии и
если это необоходимо, с заданной частотой будет генерировать
код этой клавиши. За эту функцию отвечают 2 ячейки:
23561/#5С09 Время задержки между автоповтором и наатием кла-
виши 23562/#5С0А Частота автоповтора
Повторяющиеся клавиши
Hа клавиатуре Spectrum'а+ есть повторяющиеся клавиши.
Hапример, " можно набрать нажатием одной клавиши, а можно
нажав SYMBOL SHIFT и Р. Hо нет возможность определить, какая
из комбинаций все-таки нажата.
6.3 Порты клавиатуры.
Ранее мы вскольз упоминали о портах клавиатуры. Узнать
нажата ли какая-нибудь клавиша можно прочитав значение из
порта #FE (254). Вся клавиатура Спектрума разбита на восемь
рядов по пять клавиш в каждом. При нажатии на клавишу сбрсы-
вается один из младших битов (D0-D4) порта в зависимости от
клавиши. Hа практике необходимо знать точно, какая из клавиш
нажата. Для этого следует читать данные из порта, индувиду-
ального для каждого ряда.
Адреса портов представлены ниже. Биты D0-D4 в считанном
значении указывают какая клавиша полуряда нажата - соответс-
твующий бит будет сброшен.
Внимательные заметят, что адрес можно формировать и дру-
гим способом: младший байт всегда равен #FE (254), а в стар-
шем сбрасывается соответствующий бит.
Хранимые данные
С работой клавиатуры явно или нет связано большое число
ячеек. Приведем основные:
23556/5С04 Код нажатой клавиши без учета клавиш изменения
состояния регистра. Символьные клавиши всегда
прописные.
23560/5С08 Код последней нажатой клавиши
23658/5С6А 3 бит. Установлен при С-курсоре
Hу я вроде все сказал... Bye _*Igor*_ !
▌║▐║│║▌║││║║ DreamLand laboratory. P2Pirates<dog>Mail.ru ICQ 638-547-576
2║5080▌244║0 Server FTP temporarily inaccessible...
... Большому кораблю - большая торпеда.