Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Aliens Vs Predator |#1| To freedom!
Aliens Vs Predator |#10| Human company final
Aliens Vs Predator |#9| Unidentified xenomorph
Aliens Vs Predator |#8| Tequila Rescue

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Питер Нортон Весь текст 546.61 Kb

Программно-аппаратная организация компьютера IBM PC

Предыдущая страница Следующая страница
1 ... 35 36 37 38 39 40 41  42 43 44 45 46 47

     procedure clear_screen_graphics;
       var [static]
         i : word;
       begin
         for i := 0 to 16383 do
           general_screen_pointer ^ [i] := 0;
       end;

     {===========================================================}

     end.




                        ГЛАВА 10. КЛАВИАТУРА
                        ____________________


     Клавиатура - это одно из основных звеньев взаимодействия  человека  и
компьютера.  В  этой  главе  мы  подробно  рассмотрим  работу   клавиатуры
Персонального компьютера фирмы "ИБМ" и  методы  управления  этой  работой.
Клавиатура IBM/PC имеет ряд интересных  особенностей,  которые  мы  сейчас
изучим.


     10.1. Основные принципы функционирования клавиатуры

     На мой взгляд, один из  наиболее  впечатляющих  моментов  конструкции
IBM/PC - это способ работы с клавиатурой. Выбранный подход в  равной  мере
прост и элегантен и программистам необходимо знать две вещи,  связанные  с
вводом  информации  от  клавиатуры,  следующие  из  этого  конструктивного
подхода.
     На электронном уровне клавиатура IBM/PC представляет собой  небольшой
самостоятельный  компьютер.   Внутри    блока    клавиатуры    размещается
микропроцессор 8048 фирмы "Интел", который выполняет  задачу  слежения  за
нажатиями клавиш и передачи их состояния.  Микропроцессор  8048  выполняет
различные  функции,  включая  самодиагностику  (после  включения   питания
компьютера), проверку нажатия клавиш и противодребезговую защиту  (что  не
позволяет воспринимать одну нажатую клавишу как две).
     Микропроцессор  8048  позволяет  также  буферизовать  до  20  нажатий
клавиш, если центральный процессор не может их принять сразу. Обычно  этот
буфер совершенно пуст, поскольку ситуации, когда центральный процессор  не
успевает отреагировать на запрос клавиатуры.
     Вы, вероятно, слышали предупреждающий звуковой сигнал, когда  нажатие
Вами клавиш опережало возможности программы по их вводу. Это не связано  с
заполнением буфера клавиатуры. Процедура ввода с клавиатуры системы BIOS в
ПЗУ  имеет  собственный  буфер  и  звуковой  сигнал  раздается  в   случае
заполнения этого буфера. Буфер клавиатуры может содержать 20  символов,  а
буфер системы BIOS - только 15. По мере изучения клавиатуры мы  рассмотрим
как код нажатой клавиши попадает сначала в буфер клавиатуры, затем в буфер
BIOS и, наконец, в программу.
     Блок клавиатуры не связывает с клавишами никаких конкретных значений.
Вместо этого,  блок  клавиатуры  идентифицирует  по  ее  номеру  или  коду
сканирования. Все клавиши имеют коды сканирования от  1  до  83.  На  рис.
10.1. показаны коды, соответствующие всем клавишам.
     При нажатии клавиши блок  клавиатуры  передает  ее  код  сканирования
центральному  процессору.  Когда  клавиша  отпускается,  клавиатура  снова
передает ее код, но увеличенный на  128  (или  шестнадцатиричное  значение
80). Таким образом, имеются различные  коды  для  нажатия  и  освобождения
клавиш.
     Для работы с  клавиатурой  используются  порты  и  прерывания.  Когда
выполняется какое-либо действие с  клавишей  (нажатие  или  освобождение),
процессор клавиатуры обнаруживает его и запоминает в своем буфере.  Затем,
процессор  клавиатуры  формирует  прерывание  с  номером  9.  В  ответ  на
прерывание  служебная  процедура  системы  BIOS  в  ПЗУ   считывает    код
сканирования  клавиши  из  порта  клавиатуры  (порт  номер  96)  и   затем
пересылает в порт клавиатуры команду очистить буфер процессора клавиатуры.
Если системный  блок  не  реагирует  на  прерывания  клавиатуры,  то  коды
сканирования  накапливаются  в  буфере  процессора  клавиатуры,  хотя  при
нормальной  работе  этого  не  должно   происходить.    Специальный    код
сканирования  255,  шестнадцатиричное  значение  FF,  используется  блоком
клавиатуры, для сообщения, что его буфер заполнен.
     Поскольку информация о нажатии клавиши поступает в системный блок  от
клавиатуры через порт, любая программа,  имеющая  доступ  к  порту,  может
непосредственно  общаться  с  клавиатурой.  На  практике,   однако,    это
неприменимо, так  как  блок  клавиатуры  вырабатывает  еще  и  прерывания,
которые обрабатываются системой BIOS в ПЗУ. Однако, просто из любопытства,
можно написать небольшую программу на Бейсике, читающую порт клавиатуры  и
сообщающую, что она там находит. Ниже приведен фрагмент этой программы.
     Поскольку эта программа состязается  с  системой  BIOS  за  получение
информации от клавиатуры, ее работа несколько хаотична. Но если  запустить
эту программу и нажимать на клавиши, она все же  зарегистрирует  несколько
кодов сканирования.


     100 REM Программа на Бейсике, пытающаяся считывать коды сканирования
             клавиатуры
     110 X=INP(96)  'чтение порта клавиатуры
     120 THROW.AWA4$ = INKEY$ 'отбросить любые коды,считан системой BIOS
     130 IF X=0 THEN GOTO110 'если данных нет - продолжать ожидание
     140 PRINT
     150 PRINT "Код сканирования клавиатуры"; XMOD128;'сообщить код
     160 IF X > 128 THEN PRINT "клавиша освобождена";
     170 IF X > 129 THEN PRINT "клавиша нажата";
     180 GO TO 110


     Клавиатура IBM/PC выполняет еще и функцию  повторения  клавиши.  Блок
клавиатуры следит за тем,  сколько  времени  клавиша  остается  нажатой  и
формирует сигнал повторения. Функция повторения  распространяется  на  все
клавиши блока клавиатуры.
     Процедуры системы BIOS в ПЗУ  могут  распознавать  отличие  повторных
нажатий клавиши от повторения сигнала  удерживаемой  в  нажатом  состоянии
клавиши, путем анализа кодов сканирования освобожденной клавиши. Если  для
одной и той же клавиши получены два кода нажатой клавиши и между  ними  не
было кода освобожденной клавиши, значит клавиша  удерживается  процедурами
системы BIOS для подавления функции повторения тех клавиш, которым она  не
нужна, таких как, например, клавиша смещения (shift).
     Теперь Вам должны быть понятны основы того,  как  IBM/PC  работает  с
клавиатурой. Блок клавиатуры сообщает, что происходит с клавиатурой: какие
клавиши нажимаются, какие освобождаются и, через  определенный  промежуток
времени, какие удерживаются  в  нажатом  состоянии.  Система  BIOS  в  ПЗУ
интерпретирует получаемую от  блока  клавиатуры  информацию,  придавая  ей
определенный смысл. Таким  образом,  имеет  место  очень  ясное  и  четкое
разделение  труда.  Блок  клавиатуры  занимается   физической    стороной,
механизмом  функционирования  клавиатуры,  а  программы  системы  BIOS   в
системном  блоке  выполняют  все  логические  операции  по   интерпретации
действий клавиатуры.
     Большинство  пользователей  даже  не  знает,  что  клавиатура  IBM/PC
передает сигналы не только  о  нажатии,  но  и  об  освобождении  клавиши,
поскольку  такая  информация  обычно  скрыта  от  пользователя.  Ее  можно
увидеть, запустив  тест  клавиатуры  из  набора  диагностических  программ
IBM/PC. Если присмотреться, можно  заметить,  что  изображение  на  экране
меняется при  каждом  нажатии,  освобождении  клавиши  или  когда  клавиша
удерживается в нажатом состоянии достаточно долго для того,  чтобы  начала
действовать функция повторения.


     10.2. Определение смысла нажатых клавиш

     Служебная процедура системы BIOS  для  прерывания  9  или  прерывания
клавиатуры определяет смысл каждого действия с клавиатурой.  Это  включает
слежение за состоянием смещения кодов и преобразование нажатий  клавиши  в
их значения, будь то буквы алфавита  или  сигналы  функциональных  клавиш.
Ниже мы будем рассматривать эту функцию подробнее.
     Часть  задачи  обслуживания  клавиатуры  со  стороны  системы    BIOS
заключается в слежении за всеми возможными состояниями смещений. Состояния
смещений довольно часто вызывают путаницу,  поскольку  клавиатура  обычной
пишущей машинки, с которой большинство из нас начинало свое  знакомство  с
клавишами,  имеет  всего  одну  клавишу  смещения,    Клавиатуры    многих
компьютеров, в том числе и IBM/PC, имеют три типа смещений.
     Во-первых, имеются  обычные  функции  клавиш,  без  всякого  смещения
(например,  для  получения букв в нижнем регистре).  Затем имеется обычное
смещение,  такое же как у пишущих машинок,  которое служит  для  получения
букв верхнего регистра и,  как правило, всех знаков, нанесенных на верхнюю
часть клавиши.  Кроме того,  имеются еще  два  вида  смещения,  изменяющее
смещение ("ALT") и управляющее смещение ("CTRL"). Эти два специальных вида
смещения используются аналогично  обычному  смещению  в  том  смысле,  что
просто "а" не совсем то же самое,  что "А" в верхнем регистре,  и Ctrl-A и
Alt-A также имеют собственные значения.  (Некоторые читатели могут считать
клавишу  "ESC"  еще  одной  клавишей  смещения.  Это связано с тем,  что в
некоторых  старых  терминалах   компьютеров,   особенно   таких,   которые
использовались   подобно  клавишам  смещения.  Однако,  при  использовании
клавиши "ESC" она не удерживалась в нажатом  состоянии,  подобно  клавишам
смещения,  -  сначала  нажималась  клавиша  "ESC",  а после нее какая-либо
другая  клавиша.  Оба  этих  нажатия   рассматривались   как   специальная
последовательность.  Такое  действие  нельзя  рассматривать  как  операцию
смещения.  Обычно,  клавиша   "ESC"   подобным   образом   в   IBM/PC   не
используется.)
     Допустимыми считаются  не  все  сочетания  обычных  клавиш  и  клавиш
смещения. Если ввести одну из недопустимых комбинаций, то система BIOS  ее
просто проигнорирует, как будто ничего не произошло.  Несколько  позже  мы
перечислим все допустимые  комбинации  смещений  клавиш,  чтобы  Вы  могли
воспользоваться ими в своих программах.
     На клавиатуре IBM/PC имеется  четыре  специальных  "переключательных"
клавиши,  которые действуют в качестве тумблера "включения-отключения" для
определенных функций. Эти клавиши Insert (вставка), Caps-Lock (закрепление
заглавных  букв),  Num-Lock  (закрепление  цифровой клавиатуры) и клавиша,
которой практически не пользуются, Scroll-Lock (закрепление "скроллинга").
Две  из  этих  клавиш,  Caps-Lock  и  Num-Lock,  являются частью механизма
смещения,  а оставшиеся две управляют определенными специальными  режимами
работы.
     Информация о состоянии этих четырех переключательных  клавиш  и  том,
удерживается ли в  данный  момент  в  нажатом  состоянии  одна  из  клавиш
смещения, хранится в специально выделенной для этих целей области в нижних
адресах оперативной памяти. Вся эта информация хранится в  двух  байтах  с
адресами 1047 и 1048 (или 417 и 418 шестнадцатиричных).  Во  время  работы
IBM/PC, в этих двух байтах сохраняются все состояния смещения и  состояния
переключателей. Естественно, что после  выключения  компьютера  эти  байты
сбрасываются в нормальное состояние.
     Программа на Бейсике, листинг которой  10.1  приведен  в  конце  этой
главы, отображает эти два байта и демонстрирует воздействие на них нажатий
клавиш  смещения  и  переключателей.  Описание  смысла  отдельных    битов
приведено ниже.
     Поскольку клавиши смещения  действуют  только  в  нажатом  состоянии,
система BIOS следит за их нажатиями и освобождениями и вносит  необходимые
изменения в интерпретацию обычных клавиш. Система BIOS  следит  за  кодами
сканирования при освобождении только для клавиши  смещения,  так  как  для
всех остальных клавиш эта функция не имеет смысла.
     Когда система BIOS получает код  сканирования  обычной  клавиши,  она
проверяет все варианты смещения и преобразует этот код  в  соответствующее
значение, которое может быть как  символьным  кодом  ASCII,  так  и  кодом
специального назначения.
     Процедура обслуживания клавиатуры системы BIOS следит  не  только  за
состояниями смещения. Состояние клавиатуры хранится  в  первых  тринадцати
битах указанных выше двух байт по  адресу  1047.  Ниже  приведена  таблица
значений  этих  битов,  изменения  которых  можно  проследить  с   помощью
Предыдущая страница Следующая страница
1 ... 35 36 37 38 39 40 41  42 43 44 45 46 47
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (1)

Реклама