Главная.
Новости.
Программы.
Файлы.
Контакты.
Чат "Пиво".
Статьи.
Ссылки.
Гостевая.
|
Клавиатура микроЭВМ БК-0010.
Ввод и редактирование графической и текстовой информации осуществляются, в основном, с помощью клавиатуры. У "Электроники БК-0010" встречаются две модификации клавиатуры: "малоходовая", применяющаяся на БК-0010, и "полноходовая" - на БК-0010.01. Каждая из них имеет как достоинства, так и недостатки. Малоходовая клавиатура - это 92 кнопки ПН-11, распаянные на одной плате. На кнопки наложены квадратные полиэтиленовые колпачки, удерживающиеся с помощью металлической решетки, к которой прикручена плата с кнопками. Решетка с колпачками в свою очередь закрыта толстым полиэтиленом, на который наложен бумажный лист с изображением 86 клавиш. Полиэтилен удерживается лежащим сверху жестким листом прозрачного пластика. Разница в числе кнопок и клавиш объясняется тем, что четыре из 92 кнопок предназначены для выдачи кода пробела, и по две кнопки - для выдачи кодов ВВОД, регистров РУС и ЛАТ. Основной недостаток этой клавиатуры заключается в том, что на гладкой пластиковой поверхности пальцы не различают, где кончается одна клавиша и начинается другая, да и жесткость трехслойного "пирога" затрудняет работу на компьютере.
Эти недостатки устранимы: достаточно удалить с клавиатуры полиэтиленовую пленку, лист бумаги с изображением клавиатуры и жесткий пластик. С помощью липкой ленты можно нанести изображения клавиш непосредственно на полиэтиленовые колпачки, накладываемые на кнопки. Теперь можно работать "вслепую". Главное, однако, в том, что на передний план выдвинулись скрытые ранее достоинства малоходовой клавиатуры. Основное достоинство в том, что можно быстро изменять изображения на клавишах. Для этого на листе бумаги рисуют новые изображения, используемые для какой-либо программы. Такие сменные листы удобны для овладения компьютерной грамотностью, игр для дошкольников и младших школьников, поскольку вместо стандартных надписей можно наклеить любую пиктограмму, например, изображения домов, гор, цветов и т.д. Кроме того, кнопки ПН-11 надежно защищены от пыли и грязи, поэтому нельзя пожаловаться на надежность малоходовой клавиатуры. Еще одно достоинство в том, что на малоходовой клавиатуре на 12 клавиш больше, чем на полноходовой. То, что клавиши имеют малый ход, существенно упрощает задачу, если идет динамическая компьютерная игра. У БК-0010.01 - клавиатура полноходовая. Внешне она напоминает традиционную компьютерную клавиатуру, однако не лишена недостатков.
У только что приобретенного компьютера вскоре проявлялся "дребезг" клавиш. Причин тому много - одна из них в том, что контактные группы клавиш открыты, и на них накапливается грязь.
Большой ход клавиш неудобен при динамических играх, так как не позволяет быстро вводить информацию в компьютер. Со временем клавиши начинают "западать", изображения на них (кстати, менее информативные, чем у БК) довольно быстро стираются. Пользователи однако нашли выход: под клавиши они подкладывают тонкий лист поролона, тем самым несколько уменьшают ход клавиш и устраняют их стук об основание; точки трения в клавишах смазывают графитовой смазкой; увеличивают параметры времязадающей цепочки клавиатуры; клавиши покрывают сверху лаком или гравируют на них необходимые изображения.
Независимо от того, какая именно клавиатура у вашего компьютера - нажатия на клавиши воспринимаются одинаково. При каждом нажатии формируется соответствующий код символа, который в дальнейшем обрабатывается программой - драйвером клавиатуры. Выбор символа и значение кода, генерируемого при нажатии клавиши, зависят от предшествующего состояния регистров клавиатуры, т.е. от того, какие регистры были установлены ранее.
По функциональному назначению клавиши можно разделить на четыре группы: регистровые, управляющие, алфавитно-цифровые и редактирующие. К регистровым относятся:
РУС - переход в русский регистр;
ЛАТ - переход в латинский регистр;
ЗАГЛ - включение режима формирования кодов заглавных букв (русского или латинского
алфавита);
СТР - включение режима формирования кодов строчных букв (русского или латинского
алфавита);
НР (для полноходовой клавиатуры - АР2) - включение выдачи кодов псевдографики;
ПР (для полноходовой клавиатуры - НР) - включает правый (нижний) регистр только в
нажатом состоянии;
СУ - в нажатом состоянии включает режим формирования управляющих кодов.
Клавиши ЗАГЛ, СТР, НР (AP2), ПР (НР) и СУ при нажатии не вырабатывают код. Коды клавиш РУС - (17) и ЛАТ - (16) используются только драйвером клавиатуры и не передаются в рабочую программу. Однако при пересылке этих кодов в драйвер устройства отображения коды отображаются в виде инвертированных символов N и О латинского алфавита. Включение режима РУС(ЛАТ) индицируется в служебной строке. Управляющие клавиши предназначены для формирования управляющих кодов и управления режимами работы микроЭВМ. СТОП - формирует запрос на прерывание. Используется для прерывания выполнения рабочей программы. Для этого в системной области по адресу 4 записывают адрес программы, обрабатывающей эти прерывания. ШАГ - формирует код 220, который можно использовать для управления режимами работы рабочей программы. ИСУ и БЛР - для управления режимами формирования информации на экране ТВ-монитора. ГРАФ, ЗАП, СТИР - переключают режимы работы с графической информацией на экране ТВ-приемника в ручном режиме. УСТ.ТАБ, СБР.ТАБ - управляют аппаратом табуляции. ПОВТ - предназначена для многократной выдачи кода с клавиатуры. КТ - формирует управляющий код 3, означающий "конец текста". ВВОД - формирует управляющий код 12 ("перевод строки") или 15, в зависимости от режима, установленного в драйвере клавиатуры.
Алфавитно-цифровые клавиши позволяют вводить коды цифр, специальных символов, заглавных и строчных букв русского и латинского алфавитов, кодов полуграфики, некоторых управляющих кодов (переключения режимов работы дисплея), а также управлять программируемыми ключами. Коды цифр вводятся при нажатии на цифровые клавиши. Коды символов, расположенных на клавишах справа (у БК-0010.01 - внизу), вводят при установленном правом (нижнем) регистре. Заглавные и строчные буквы русского и латинского алфавитов вводят при соответствующей комбинации регистров ЗАГЛ, СТР, РУС, ЛАТ.
Ввод кодов полуграфики, управляющих кодов и управление программируемыми ключами осуществляется при включенным нижнем регистре (регистре АР2 для БК-0010.01). Редактирующие клавиши позволяют вводить коды символов, выполняющих функции редактирования информации. Значения кодов символов микроЭВМ БК-0010 (БК-0010.01) приведены в литературе (кодировка КОИ-7), поэтому не будем на них останавливаться. Клавиатура микроЭВМ БК-0010 позволяет формировать коды символов не только нажатием одной определенной клавиши, но и их комбинациями. В таблице 1 приведены комбинации клавиш, которые соответствуют управляющим символам.
Некоторые коды (205-210) с клавиатуры сформировать нельзя, поэтому их обычно используют в качестве внутренних кодов программы, как это сделано, например, в интерпретаторе Фокала.
Значительная часть кодов (0-2 и т.д.) не обрабатывается драйвером устройства отображения (телевизора). Эти коды можно использовать для управления программами пользователя.
Клавиатурой управляет большая интегральная схема К1801ВП1-014, фиксирующая нажатия клавиш и формирующая коды. Для этого БИС клавиатуры использует два системных регистра - состояния клавиатуры и данных клавиатуры. Регистр состояния клавиатуры предназначен для отображения состояния клавиатуры. Его адрес - 177660. Если в разряде 6 этого регистра записан 0, то прерывание от клавиатуры разрешено, а если 1 - запрещено. Этот разряд доступен по записи и чтению. Если он установлен в 0, то при установке в 1 разряда 7 по системной магистрали пойдет запрос на прерывание от клавиатуры.
Разряд 7 регистра - это, так называемый, флаг состояния клавиатуры. Он устанавливается в 1 всякий раз, когда в регистр данных клавиатуры поступает новый код и сбрасывается в 0 при чтении регистра данных клавиатуры. Доступен только по чтению. Остальные разряды при этом не используются. Регистр данных клавиатуры служит для записи кодов клавиатуры. Адрес регистра - 177662. Его разряды используются для записи с клавиатуры семиразрядного кода. Он доступен только по чтению. Запись нового кода не производится до тех пор, пока не будет прочитан предыдущий.
Клавиатура имеет два вектора прерываний с адресами 60 и 274. Это позволяет из 128 семиразрядных кодов, вырабатываемых БИС клавиатуры, получить полный набор восьмиразрядных кодов, используемых в микроЭВМ. По вектору с адресом 274 обрабатываются коды, формируемые в нижнем регистре, а также некоторые коды, вырабатываемые группой управляющих клавиш. По вектору 274 обрабатываются коды, формируемые в нижнем регистре, а также некоторые коды управляющих клавиш. Остальные коды обрабатываются по вектору 60. Кодами, передаваемыми с клавиатуры, занимается программа - драйвер клавиатуры. Его действие заключается в чтении кода из регистра данных и передаче его рабочей программе. Драйвер клавиатуры хранится в ПЗУ пускового монитора с адреса 100742 до адреса 102234 и состоит из нескольких подпрограмм:
100742 - инициализация драйвера клавиатуры (EMT 4);
101010 - чтение кода с клавиатуры (EMT 6);
101136 - обработка кода по вектору 60;
101332 - изменение табуляции;
101362 - обработка кода по вектору 274;
101636 - исполнение кода 211 (ТАБ);
101724 - чтение строки с клавиатуры (EMT 10);
102004 - установка ключей клавиатуры (EMT 12);
102032 - считывание данных из регистра данных;
102124 - прерывание рабочей программы;
102160 - изменение табуляции.
Все подпрограммы заканчиваются командой RTS PC (207), поэтому к ним можно обращаться командой JSR PC. Код передается при поступлении запроса на чтение от рабочей программы, либо, в зависимости от режима, установленного в драйвере, прерыванием рабочей программы. Как различить два эти режима? Признаком передачи кода по прерыванию служит отличное от нуля содержание ячейки 260. При нажатии на клавишу клавиатуры управление передается соответствующей подпрограмме обработки кодов клавиатуры - по вектору 60 (адрес 101136) или по вектору 274 (адрес 101362). После обработки кода эти подпрограммы в свою очередь обращаются к подпрограмме прерывания рабочей программы, и она рассматривает содержимое ячейки 260 как адрес, по которому необходимо передать управление при обработке прерывания от клавиатуры. Кроме того данная подпрограмма сохраняет в младшем байте ячейки 104 код последней нажатой клавиши. Старший байт этой ячейки служит при этом индикатором считывания последнего кода. Получив управление, рабочая программа может прочитать код, выдав запрос на чтение кода (команда EMT 6), выполнить необходимые действия. Вслед за этим она должна выйти из прерывания, подав команду RTS PC (207). Если содержимое ячейки 260 было равно нулю, управление рабочей программе при нажатии клавиши не передается, код передается только по запросу EMT 6.
Состоянием ячейки 260 управляет рабочая программа. При инициализации драйвера клавиатуры ячейка 260 обнуляется. Обработка кодов, получаемых от БИС клавиатуры, зависит от режимов, установленных в драйвере. Коды букв русского регистра, а также коды, полученные по вектору 274, преобразуются в восьмиразрядные. На то, что установлен именно русский режим, указывает ненулевое (200) содержимое ячейки 43.
При обработке кода, полученного при нажатии клавиши ВВОД, учитывается содержимое ячейки 262. Если там 0, то в рабочую программу передается код 12 (ПС). Если содержимое ячейки отлично от 0, то передается код 15 (ВК). При инициализации драйвера клавиатуры ячейка 262 обнуляется. Для удобства работы с клавиатурой в драйвере предусмотрена возможность использования горизонтальной табуляции. Для того, чтобы затабулировать любую из 64 позиций в экранной строке, достаточно подвести курсор к нужной позиции и нажать клавишу УСТ.ТАБ. При этом происходит обращение к подпрограмме изменения табуляции, которая использует в качестве переменных ячейки 112, 114, 116, 120, причем каждый разряд соответствует одному знакоместу экранной строки. Подпрограмма также "заглядывает" в ячейку 176, где хранится значение, отвечающее положению курсора на оси X, и изменяет соответствующий разряд в соответствующей ячейке переменных табуляции. На экране в данной позиции под чертой подчеркивания служебной строки появляется соответствующая метка.
При нажатии на клавишу ТАБ курсор пробежит от текущей позиции до первой справа затабулированной позиции, выдавая в рабочую программу соответствующее количество пробелов. Для сброса табуляции курсор подводят в требуемую позицию и нажимают клавишу СБР.ТАБ. При этом очистится разряд в одной из переменных табуляции и исчезнет соответствующая метка на экране.
Если один и тот же символ необходимо вводить с клавиатуры несколько раз подряд, удобно воспользоваться клавишей ПОВТ. Пока она нажата, по запросам рабочей программы передается код последнего введенного символа. Соответствующая подпрограмма драйвера использует ячейку 106, где записана длительность задержки между выдачей повторных символов, и ячейку НО, в которой указана кратность повтора. Длительность задержки может изменяться от минимального значения 1 до максимального значения 200000, что в микроЭВМ тождественно равно 0. Номинальное значение задержки - 2000, номинальное значение кратности повтора - 1. Иногда одно и то же слово или фразу требуется вводить с клавиатуры несколько раз. Для этого можно воспользоваться аппаратом программируемых ключей (подпрограмма по адресу 102004).
Драйвер позволяет запрограммировать 10 ключей с номерами 1-10 с помощью команды EMT 12 с соответствующими параметрами. При этом драйвер использует системные ячейки с 126 по 150 для хранения адресов, по которым будут размещены тексты ключей. Тексты ключей извлекают, нажимая цифровые клавиши в нижнем регистре. Драйвер клавиатуры использует ячейку 122 для подсчета числа выдаваемых символов и 124 как индикатор включения счетчика.
Драйвер клавиатуры позволяет приостановить исполнение рабочей программы - для этого достаточно ввести символ @ (регистр СУ). Выполнение рабочей программы продолжится при его повторном вводе или при вводе любого другого символа. Коды, вырабатываемые при нажатии клавиш РУС, ЛАТ, УСТ.ТАБ, СБР.ТАБ, ТАБ, ПОВТ, необходимы только драйверу клавиатуры - в рабочую программу они не передаются.
При функционирующей рабочей программе возможно обращение к подпрограммам драйвера клавиатуры. Этому служит командное прерывание системных программ EMT 4 - EMT 12, или непосредственное обращение к ним с помощью команды JSR PC. В первом случае для записи команды необходимо всего одно слово памяти, при этом диспетчеру командных прерываний требуется дополнительное время. Во втором случае для записи программы необходимо два слова памяти, но уменьшается время исполнения подпрограммы.
Рассматривая команды драйвера, будем уделять основное внимание соответствующим системным переменным. Команда инициализации драйвера клавиатуры На ассемблере - EMT 4, в кодах - 104004, адрес подпрограммы - 100742. По команде устанавливаются векторы прерывания клавиатуры. В регистре состояния сбрасывается маска прерываний от клавиатуры, устанавливается режим передачи кодов по запросам рабочей программы и режим передачи кода 12 при нажатии клавиши ВВОД. Содержимое регистра R0 не сохраняется. Команда чтения кода с клавиатуры На ассемблере - EMT 6, в кодах - 104006, адрес подпрограммы - 101010. Входные данные: R0 - код в младшем байте.
По команде происходит чтение кода с клавиатуры; выдача его повторно по клавише ПОВТ; выдача текста ключа (1 или 10). При работе подпрограммы текущий код записывается в младший байт регистра R0, и управление возвращается вызвавшей программе. Подпрограмма использует несколько системных ячеек:
104 - буфер кода последней нажатой клавиши;
105 - индикатор того, что последний набранный код не был считан рабочей программой;
106 - длительность задержки между повторяемыми кодами символов (минимальная при 1 и максимальная при 0);
110 - счетчик числа выдаваемых знаков при нажатии клавиши ПОВТ;
111 - счетчик числа выдаваемых пробелов;
122 - счетчик числа выданных символов по ключу;
124 - адрес следующего выдаваемого кода при нажатии клавиши-ключа;
Ассемблер - EMT 10, в кодах - 104010, адрес подпрограммы - 101724. Входные данные: R1 - адрес ОЗУ для записи строки, R2 - ограничители строки: младший байт - длина строки в байтах (если 0, то 20000 байт), старший байт - код символа-ограничителя строки. По команде строка вводится по адресу, заданному в R1. Ввод заканчивается, когда выполняется одно из двух ограничивающих условий. Если это ограничивающий символ, то он записывается в конце строки. При вводе строки можно использовать клавишу забоя последнего введенного символа для исправления допущенных ошибок.
После ввода строки в R1 хранится адрес байта, следующего за последним введенным, а в R2 - разность между входным значением и длиной введенной строки. Команда установки ключей клавиатуры Ассемблер - EMT 12, в кодах - 104012, адрес подпрограммы - 102004. Входные данные: R0 - номер программируемого ключа (1-10); R1 - адрес текста ключа (первый байт текста должен определять его длину). По этой команде программируется ключ с номером, указанным в R0. При этом в системной области запоминается адрес текста соответствующего ключа. Адрес текста ключа 10 запоминается в ячейке 126, а адреса текстов ключей 1-9 в ячейках 130-150 соответственно.
Каждая цифровая клавиша соответствует "ключевому" сообщению с соответствующим номером. При нажатии на заданную цифровую клавишу (в нижнем регистре) драйвер клавиатуры выдает текст ключа.
Если ключ не запрограммирован, никакой реакции на нажатие цифровой клавиши (в нижнем регистре) не последует. Для того, чтобы "сбросить ключ", то есть установить его в незапрограммированное состояние, необходимо задать в качестве параметра нулевое значение адреса ключа. Содержимое R0 при исполнении команды не сохраняется.
>>
|