microbik.ru
1 2 3
n=Iii. Внешние устройства~sz=644857;pg=3;te=Сначала существовал только один тип персональных компьютеров ibm, который комплектовался тоже только однотипными видеодисплеями. Его экран был однотонно-зеленым. Текст изображался голубым шрифтом, а из графических средств реализовывались только псевдографика~cat=~t=~!~
III. Внешние устройства


III.Внешние устройства



8.Видео подсистема

8.1.История развития видеоадаптеров

Сначала существовал только один тип персональных компьютеров IBM, который комплектовался тоже только однотипными видеодисплеями. Его экран был однотонно-зеленым. Текст изображался голубым шрифтом, а из графических средств реализовывались только псевдографика.

Много воды утекло с тех пор, и все технологии компьютерных подсистем шагнули далеко вперед. Видеосистемы совершенствовались, как ни что другое, буквально с каждым днем.

Почти полностью все развитие видеостандартов происходило на основании видеоадаптеров, предлагаемых IBM в своих компьютерах. Прогресс шел постоянно, начиная от жутко зеленого экрана, до сегодняшних полноцветных дисплеев с высокой разрешающей способностью. Параллельно увеличивалось вредное влияние видеосистем на глаза человека.

8.1.1.Адаптер монохромного дисплея (MDA)

Этот адаптер часто называют просто MDA от Monochrome Display Adapter, хотя его официальное имя – Monochrome Display, или Parallel Printer Adapter.

Слово монохромный отражает самую важную характеристику MDA. Он был создан для работы с одноцветным дисплеем. Первоначально он работал с экранами зеленого цвета, которыми обеспечивались преимущественно все системы IBM того времени.

MDA является символьной системой, не обеспечивающей никакой другой графики, за исключением расширенного множества символов IBM. Это был первый адаптер IBM и до недавнего времени он был лучшим адаптером для обработки текстов, обеспечивающим самое четкое изображение символов, по сравнению с любыми дисплейными системами, выпущенными до PS/2.

Текстовый режим был целью разработки адаптера. Тогда IBM не могла вообразить, что кому-нибудь понадобится рисовать схемы на дисплее.

8.1.2.Цветной графический адаптер (CGA)

Первым растровым дисплейным адаптером, разработанным IBM для PC, был цветной графический адаптер – CGA (Color Graphics Adapter). Представленная альтернатива MDA ослепила, привыкший к зеленому, компьютерный мир. Новый адаптер обеспечивал 16 ярких чистых цветов. Помимо этого, он обладал способностью работать в нескольких графических режимах с различной разрешающей способностью.

CGA – это многорежимный дисплейный адаптер. Он может использоваться и для символьных и для побитных технологий. Для каждой из них он реализует несколько режимов. Он содержит 16 Кб памяти, прямо доступной центральному микропроцессору.

8.1.3.Hercules

Hercules Graphics Technology Inc., возглавляемая Кевином Дженкинсом, разработала прекрасное устройство, ставшее практически единственным стандартом, не разработанным IBM.

Hercules Graphics Card или HGC реализовал, ставшие к тому времени очевидными, решения. Этот адаптер в дополнение к посимвольному отображению, реализуемому MDA, обеспечивал растровую графику. Но, чтобы еще больше усилить разработку, фирма добилась поддержки этих возможностей программными разработками фирмы Lotus Development Corporation. Lotus 1-2-3 вскоре стал самым популярным пакетом PC.

8.1.4.Улучшенный графический адаптер (EGA)

К 1984 году недостатки CGA стали очевидными. Это выявилось благодаря широкому его распространению. Тяжело читаемый текст и грубая графика портили зрение лучше всякого другого приспособления.

Как ответ на заслуженную критику, появился улучшенный графический адаптер – EGA. Улучшение было многосторонним: возросшая разрешающая способность, возможность обеспечивать графический режим монохромных экранов, в том числе любимых IBM зеленых дисплеев; увеличение используемого множества подпрограмм BIOS, зашитых в ПЗУ PC и XT.

8.1.5.Video Graphics Array – VGA

Наименование VGA происходит от VLSI-чипа, используемого в компьютерах типа PS/2. Большинство цепей платы EGA (включая эмуляцию видеочипа 6845 фирмы Motorola) были реализованы одним чипом, который IBM первоначально назвала “Video Graphics Array”. Имя этого чипа в скором времени стало использоваться для описания целой системы, возможно потому, что оно было созвучно с аббревиатурой CGA и EGA. Таким образом, это новое имя получало логическое обоснование.

В действительности VGA является дальнейшей разработкой IBM своих предыдущих стандартов. Он обеспечивает все предыдущие режимы и расширяет их до новых границ, формирую изображения с лучшей цветностью и большей разрешающей способностью.

Тем не менее, VGA не самый лучший и не самый передовой адаптер. Даже до представления VGA существовали видеосистемы, обеспечивающие лучшую точность изображения с более богатой цветовой гаммой.

8.2.Стандарт VGA

Видеоадаптер VGA был разработан корпорацией IBM, и волей судьбы стал стандартом де-факто для всех производителей. Любая видео карта может работать в режиме VGA. Использование видеорежимов VGA позволяет гарантировать, что программа будет работать на любом современном компьютере. Хотя возможности этого адаптера сильно ограничены, рассмотрение его очень важно, так как практически все операционные системы изначально работают, использую только функции VGA, и лишь только при наличии драйвера они могут использовать все дополнительные возможности видеоадаптеров.

Корпорация IBM сделала все возможное для программной совместимости VGA с младшими моделями видеоадаптеров, и практически ничего для аппаратной совместимости. VGA полностью совместим со всеми моделями на уровне базовой системы ввода/вывода (BIOS), а также совместим с адаптером EGA на уровне портов ввода/вывода.

8.2.1.Формирование цвета

Адаптер VGA позволяет отображать на экране одновременно до 256 цветов при низком разрешении и до 16 цветов при высоком разрешении.

Ради совместимости с младшими моделями для формирования 16 цветовых изображений применяется двухуровневое формирование цвета (см. рис.8.1). Дешифратор определяет по информации в видео памяти номер цвета текущего пикселя. По этому номеру выбирается один из индексных регистров. В адаптере EGA в этих регистрах находились двух битовые значения красной, зеленой и синей компонент цвета (число цветов в палитре – 64). В VGA в индексных регистрах содержится восьмибитовый номер регистра цифроаналогового преобразователя, к котором находятся шестибитовые значения красной, зеленой и синей компонент цвета (число цветов в палитре – 262144).

При формировании 256 цветных изображение индексные регистры не используются. Данные из видеопамяти напрямую попадают в цифро-аналоговый преобразователь.

8.2.2.Видео память и ее отображение в адресное пространство

Адаптер VGA может работать как в текстовых режимах, так и в графических. Для формирования изображения используется внутренняя память адаптера, называемая видеопамятью. Изображение, построенное в этой памяти, моментально отображается на экране дисплея. Назначение участков памяти и ее используемый размер при формировании изображения зависит от режима, в котором работает адаптер. Например, для формирования изображения в текстовом режиме без учета шрифтов достаточно иметь 4 Кб памяти, в то время как для построения изображения в графическом режиме 640х480 с 16 цветами необходимо иметь около 230 Кб видеопамяти. Практически все адаптеры VGA комплектовались 256 Кб видео памяти для поддержания всех видеорежимов.

Для того чтобы программное обеспечение могло строить изображение в видеопамяти, последняя отображается на часть адресного пространства процессора, вследствие чего изображение строится обычными процессорными командами, ссылающимися на память. Адреса, в которые отображается видеопамять, также зависят от установленного видеорежима. В компьютерах IBM было выделено два диапазона, в которые отображается видеопамять: с B0000 по BFFFF и с A0000 по AFFFF, т.е. два окошка по 64 кб каждое. Разработчики сделали так, что в каждый конкретный момент может использоваться только одно окошко в зависимости от видеорежима. Для того чтобы адресовать в 256 Кб видеопамяти, она была поделена на 4 блока по 64 Кб каждый, называемые битовыми плоскостями. Функциональное назначение каждой битовой плоскости зависит от установленного видеорежима и будет рассмотрено далее.

8.2.3.Формирование текстового изображения

При формировании текстового изображения видеопамять функционально разделяется на две части: матрицу символов и атрибутов, и таблицы шрифтов для знакогенератора. Коды символов находятся в нулевой битовой плоскости, атрибуты в первой битовой плоскости, а таблицы шрифтов для знакогенератора находятся во второй битовой плоскости. Третья битовая плоскость не используется.

Изображение на экране строится следующим образом. Из битовой плоскости 0, начиная с адреса сканирования, выбирается 80 символов, а из плоскости 1 выбирается 80 байт атрибутов, после чего формируется строка символов, используя текущий шрифт. Затем выбираются из плоскостей 0 и 1 следующие 80 байт для формирование второй строки и т.д.

Байт атрибута определяет цвет и способ отображения символа на экране. Младшие четыре бита определяют цвет символа (всего возможно 16 комбинаций и именно по этому значению происходит выбор индексного регистра). Следующие три бита определяют цвет фона (возможно 8 комбинаций и по значению происходит выбор индексного регистра). Самый старший бит может использоваться двумя способами: как бит мерцания символа или как дополнительный бит для формирования цвета фона.

В адресном пространстве процессора плоскости 0 и 1 отображаются в диапазоне адресов B8000-B8FFF, причем четный байт содержит код символа и попадает в плоскость 0, а нечетный байт содержит атрибут и попадает в плоскость 1. Плоскость 2 отображается в диапазоне адресов A0000-AFFFF. Доступ к этой плоскости по умолчанию запрещен.

Пример вывода ASCIIZ строки через видео буфер



^ Mov ax,3 ; установка текстового видео режима

Int 10h

Mov ax,0b800h ; установка сегментного регистра доступа

Mov es,ax ; в видео буферу

Mov si,offset HelloTxt ; загрузка адреса строки

Mov di,160*y+x*2 ; формирование смещения в видео буфере

Mov ah,4eh ; цвет отображаемой строки

^ Call PrintString ; вызов процедуры печат



PrintString proc

@@1: Lodsb ; загрузка байта строки

Or al,al ; проверка на завершающий ноль

Je @@2

Stosw ; вывод символа и атрибута на экран

Jmp @@1 ; повтор пока не встретится ноль

@@2: ret

PrintString endp


HelloTxt db ‘Hello World’,0


8.2.4.Формирование графического изображения

В режиме графики каждый пиксель экрана кодируется одним разрядом в каждой битовой плоскости. Таким образом, цвет каждой точки кодируется в памяти четырьмя разрядами и может принимать значение кода одного из 16 цветов. Именно этот код получается на выходе дешифратора, а далее идет стандартная процедура получения цвета.

Все четыре битовые плоскости отображаются одновременно на то же самое адресное пространство в диапазоне адресов A0000-AFFFF, т.е. работа происходит сразу со всеми плоскостями. При записи одного бита информация может попадать сразу в четыре плоскости, аналогично происходит и считывание. Предоставляется два режима считывания данных и три режима записи, причем при записи могут выполняться логические операции И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, СДВИГ над исходной информацией и информацией, считанной из адресуемой ячейки памяти.

В графическом режиме с 256 цветами память не делится на плоскости, а представляется сплошным байтовым массивом. Каждый байт определяет цвет пикселя на экране. Значение этого байта подается на вход цифроаналогового, преобразователя минуя индексные регистры. Из-за ограничения отображаемой памяти в адресное пространство процессора в 64 Кб максимальное разрешение может быть 320х200 пикселей, что соответствует 64000 байтам. Изображение в данном режиме формируется путем последовательной выборки из видео памяти 320 байт для формирования строк на экране. Низкое разрешение в этом режиме компенсируется большим числом одновременно отображаемых цветов, поэтому изображение в этом режиме очень часто выглядит лучше, чем в режиме 640х480 с 16 цветами.

Пример программы рисования точки.



mov ax,13h ; установка режима 320х200 в 256 цветов

int 10h

mov ax,0a000h ; установка сегментного регистра для воступа к

mov es,ax ; видео буферу

mov cx,100 ; координата X

mov dx,100 ; координата Y

mov al,15 ; цвет

call PutPixel ; вызов процедуры отрисовки



PutPixel proc

Movzx edi,dx ; вычисление смещения в видео буфере

Lea edi,[edi+edi*4]

Shl edi,6

Add di,cx ; добавление компоненты X

Stosb ; рисование точки

ret

PutPixel endp

8.2.5.Управление видео адаптером

Управление видео адаптером может осуществляться двумя способами: через базовую систему ввода вывода или через порты ввода вывода. Управление через базовую систему ввода вывода гораздо проще, однако, значительно медленнее, что может оказаться существенным для машинной графики. Управление через порты ввода вывода требует детального изучения функционирования видео адаптера в целом.

Управление видео адаптером обычно сводится к управлению следующими его компонентами:

  • Взаимодействие с видео памятью.

  • Интерпретация содержимого памяти

  • Программирование индексных регистров.

  • Программирование регистров цифроаналогового преобразователя.

При программировании адаптера через порты ввода вывода можно программировать каждую компоненту по отдельности.

При использовании базовой системы ввода вывода программирование адаптера обычно осуществляется при установке видео режима. Однако, помимо этого имеется ряд функций для управления индексными регистрами и регистрами цифроаналогового преобразователя. Помимо этого имеется еще ряд функций для отображения символов, точек и т.д. К сожалению, эти функции работают слишком медленно и обычно неприемлемы для использования.

Наилучший способ взаимодействия с видео адаптером – это установить видеорежим через базовую систему ввода вывода, а изображение строить, используя прямой доступ к памяти и портам ввода/вывода.

8.3.Современные видеоадаптеры. VESA

Современные видео адаптеры уже давно перешагнули порог 320х200 в 256 цветов. Обычным разрешением является 800х600 в 16М цветов и никого не удивляет разрешение 1024х768 в 16М цветов и даже более. Естественно, что для этого был увеличен объем видео памяти и изменены схемы преобразования цветов и отображения памяти в адресное пространство процессора. Единственное, неприятное, что появилось с появлением новых видео адаптеров – это то что адаптеры разных производителей и даже разные модели одного производители не совместимы друг с другом. Это означает, что программа, написанная на одном компьютере, с очень большой вероятностью не будет работать на другом.

8.3.1.Дополнительные объемы видеопамяти и доступ к ней

Для построения изображения высокого разрешения с большим количеством цветов. Например, для разрешения 640х480 в 16М цветов необходимо иметь 1 Мб видеопамяти. Естественно, что в реальном режиме невозможно отобразить одновременно всю видео память в адресном пространстве процессора.

В современных видео адаптерах объем видео памяти достигает 4 Мб и даже в некоторых реализациях 8 Мб. Однако, видео память по-прежнему отражается в диапазонах A0000-AFFFF или B0000-BFFFF, т.е. блоками по 64 Кб. Эти диапазоны адресов являются своего рода окнами в видео память или банками видеопамяти. Какая именно часть видео памяти отображается в окне, определяется через порты ввода вывода видео адаптера, т.е. окно может перемещаться по видео памяти. Через это окно осуществляется доступ к видео памяти, как на запись, так и на чтение. Таком способ вполне приемлем в реальном режиме, однако, в защищенном режиме он доставляет массу неудобств связанных с перемещение окна, тем более что диапазон адресов процессора вполне позволяет отобразить всю видеопамять целиком. Поэтому большинство видео карт предоставляют режим линейного отображения видео памяти в адресном пространстве процессора известный как LA??. В этом режиме вся видео память отображается в старших адресах адресного пространства, и нет необходимости в оконном отображении, за счет чего значительно повышается производительность.

За счет увеличения объема видео памяти появилась возможность увеличить разрешение и количество цветов. Для увеличения числа цветов используются новые методы формирования цвета. Для совместимости поддерживаются 16 и 256 цветовые режимы, как это было в адаптере VGA, за исключением увеличения разрешения. Однако, 256 цветов даже при очень большом разрешении маловато. Поэтому были введены еще три режима: режим с 32К цветами, режим с 64К цветами и режим с 16М цветами.

В режимах с 32К цветами для формирования цвета точки используются два соседних байтах объединенных в 16 битовое слово. Это слово разделяется на три части по 5 бит, которые содержат красную, зеленую и синюю компоненты цвета. Значение старшего бита не используется. Значения находящие в этих битах преобразуются в аналоговый сигнал и поступают на монитор безо всяких регистров палитры.

В режимах с 64К цветами для формирования цвета точки также используются два соседних байта. В этих байтах по пять бит отводится под красную и синюю компоненту цвета и шесть бит используется под зеленую компоненту цвета. Палитра не используется.

В режимах с 16М цветами для формирования используются три соседних байта. В каждом байте содержится соответствующая компонента цвета. Значения находящие в этих битах преобразуются в аналоговый сигнал и поступают на монитор безо всяких регистров палитры.

8.3.2.Дополнительные графические возможности

Дополнительные графические возможности связаны с всевозможными ускорениями, такими как отрисовка линий и прямоугольников без участия процессора, аппаратное масштабирование, кэширование текстур, перенос изображений и т.д. К сожалению, все эти новые возможности различаются на разных видеоадаптерах, и для их использования необходимы специальные драйвера.

Также дополнительные графические возможности предоставляются для трехмерной графики, такие как аппаратное построение трехмерных поверхностей и даже аппаратное. Особенно в этом отношении хороши карты, работающие на шине AGP. Использование этой шины позволяет хранить текстуры в основной оперативной памяти. При текстурировании видео адаптер сам обращается к оперативной памяти, не нагружая процессор.

8.3.2.VESA – универсальный интерфейс для программирования видео адаптеров

Цель разработки VESA – это стандартизация программного интерфейса для видео и аудио устройств. VBE интерфейс был введен для упрощения разработки приложений, в которых желательно использовать графические, видео и аудио устройства без специфических знания внутренних операций соответствующих устройств.

VBE стандарт определяет множество расширений в сервисыVGA ROM BIOS. Эти функции могут быть доступны под DOS через прерывание 10h, или могут быть вызваны непосредственно высокопроизводительными 32 битовыми приложениями или операционными системами.

8.2.2.1.Общие сведения

Основная цель VESA VBE – это предоставить стандартную поддержку программного обеспечения для множества уникальных реализаций Super VGA (SVGA) графических контроллеров, которые предоставляют возможности выходящие за пределы стандартного VGA.

На сегодняшний день разработано три стандарта:VBE 1.0, VBE 1.1, VBE 1.2, VBE 2.0 и VBE 2.0 rev 1.1.

  • VBE 1.0. Изначальная реализация: были реализованы несколько функций и небольшое число дополнительных видео режимов.

  • VBE 1.1. Вторая реализация: были добавлены дополнительные функции и видео режимы.

  • VBE 1.2. Третья реализация: были добавлены новые режимы с повышенной глубиной цвета (32К, 64К и 16М) и дополнительные функции.

  • VBE 2.0. Четвертая реализация: были добавлены: поддержка плоского буфера, интерфейс для защищенного режима, дополнительные возможно для работы с цифроаналоговым преобразователем, информация о производителе и т.д.

  • VBE 2.0 rev 1.1. Пятая реализация: дальнейшее развитие VBE 2.0.

8.2.2.2.Основные принципы работы

Для начала необходимо определить наличие поддержки VESA. Для этого необходимо вызвать функцию получения информации о VESA и проверить возвращаемый результат. Далее можно установить желаемый видео режим. После чего можно строить изображение через окна видео буфера. Для перемещения окна по видео памяти необходимо вызывать соответствующую функцию, указывая базовый адрес окна в единицах гранулярности.

В защищенном режиме необходимо сформировать дополнительные управляющие структуры для вызова функций. Более того, в этом режиме можно использовать плоский буфер для отображения всей видео памяти в пространстве процессора и тем сам избежать дополнительных накладных расходов связанных с перемещением окна видеобуфера.

Детальное описание функций и методов использования VESA можно найти в [8].

9.Клавиатура

Главным устройством ввода большинства компьютерных систем является клавиатура. И до тех пор, пока системы распознавания голоса не смогут надежно воспринимать человеческую речь, главенствующее положение клавиатуры едва ли изменится.

9.1.История развития клавиатуры IBM

IBM разработала, по крайней мере, 8 разновидностей клавиатур для своих моделей персональных компьютеров.

9.1.1.Клавиатура PC/XT

Неприятности начались с первым типом клавиатуры, предложенным для PC/XT. Несмотря на критику прессы, эта разработка оставалась стандартом IBM до презентации AT. Она имела 83 клавиши. Два ряда функциональных клавиш располагались вертикально, слева от главной алфавитно-цифровой клавиатуры. Клавиши управления курсором были совмещены с отдельными цифровыми клавишами.

Главная критика пришлась на долю расположения периферийных клавиш. Функциональная клавиатура, расположенная под левую руку, не соответствовала ключам по просмотру экранных страниц, как это было тогда принято. Существенные трудности были вызваны отсутствием индикаторов. Кроме того, клавиша ввода была слишком мала.

9.1.2.Клавиатура AT

После нескольких лет критики IBM разработала и представила новую клавиатуру вместе с новой моделью. Это была AT. Ее клавиатура была снабжена специальной клавишей – Sys Req – специально предназначенной для многопользовательского использования. Клавиша ввода стала больше. Так же обеспечивалась необходимая индикация.

Но в действительности настоящие изменения лежали более глубоко. Не в пример клавиатуре PC, клавиатура AT стала программируемой. Ей было выделено свое собственное множество команд. Эти команды могут поступать с центрального блока. Один этот факт делает новую клавиатуру несовместимой с PC и XT. Хотя используются одни и те же разъемы, клавиатура PC/XT не будет работать при ее подключении к AT и наоборот.

9.1.3.Улучшенная клавиатура IBM

Вместе с производством модернизированных AT IBM начала выпускать новый тип клавиатуры, названной IBM улучшенной клавиатурой. Но все остальные называют ее расширенной клавиатурой. Хотя эта клавиатура электрически полностью совместима со свое предшественницей, расположение клавиш на ней вновь было изменено. Усовершенствование вылилось в увеличение числа клавиш. Их общее количество достигло 101, что соответствует стандарту США.

В международных моделях добавляется еще одна клавиша. Дополнительных ключей было несколько. Клавиши по управлению курсором были продублированы, и их полное множество было выделено в отдельную группу. Появились две новые функциональные клавиши – F11 и F12. Вся дюжина функциональных клавиш переместилась на самый верхний ряд клавиатуры, слегка отделившись от алфавитно-цифровой зоны. Клавиши Ctrl и Alt были продублированы и размещены по обе стороны основной зоны.

9.1.4.Клавиатура PS/2

Модель PS/2 использует универсальную улучшенную клавиатуру IBM или клавиатуру уменьшенных размеров, специально разработанную для крошечной модели. Единственное отличие улучшенных клавиатур PS/2 и XT/AT – это разъем подключаемого кабеля. PS/2 использует простой миниатюрный DIN разъем, вместо стандартного DIN разъема клавиатуры PC/XT/AT.

9.1.5.Клавиатура совместимых компьютеров

Производители, совместимые PC, шли в ногу с IBM и адаптировали свою клавиатуру к расширяющимся стандартам. Некоторые производители, смутившись критики расположения клавиш на клавиатуре IBM, постарались внести свою собственную изысканность в это устройство. Одно существенное улучшение было реализовано рядом производителей совместимых компьютеров – они установили снизу клавиатуры переключатель совместимости. Два положения этого переключателя позволяют выбирать электрические параметры соединения при подключении к PC/XT или AT.

9.2.Взаимодействие с клавиатурой

9.2.1.Общие сведения

Клавиатура – это основное средство связи пользователя с системой. В этом разделе термин “система” относится к контроллеру клавиатуры (8042) на системной плате. Блок схема клавиатуры приведена на рис. 9.1.

В клавиатуре имеется микропроцессор, который сканирует ее в поиске нажатых клавиш. Этот микропроцессор контролирует также свою линию связи с системой. По этой линии связи от системы поступают команды управления клавиатурой, а системе – коды сканирования и подтверждения. Данные сканирования клавиатуры вырабатываются при нажатии или опускании клавиши. Например, при нажатии клавиши генерируется код нажатия, а при отжатии – код отжатия. Эти коды нажатия и отжатия вместе называются “кодами сканирования” или “кодами клавиш”.

101-клавишная клавиатура имеет буфер, организованный в виде очереди. Этот клавиатурный буфер может хранить 32 кода (нажатия и отжатия) в режиме 1 и 16 кодов сканирования в режимах 2 и 3. Сканкоды сохраняются в буфере до тех пор, пока система не будет готова их принять. Если буфер клавиатуры переполнен, то новый код не генерируется, а в буфер помещается код переполнения, для которого в буфере резервируется место.

За исключением клавиши Pause все клавиши 101-клавишной клавиатуры работают на нажатие/отжатие и являются повторяемыми. Скорость и задержка повторений могут быть изменены. Если удерживаются две и более клавиш, повторяется код только той клавиши, которая была нажата последней. После отжатия этой клавиши автоматическое повторение прекращается, даже если остальные клавиши остаются нажатыми.

9.2.2.Режимы работы клавиатуры

У 101-клавишной клавиатуры есть три режима работы – 1, 2 и 3. Каждый из этих режимов может быть выбран с помощью команд от системы. Эти режимы предоставляют широкий диапазон функциональных возможностей и совместимости для различных прикладных систем.

Контроллер клавиатуры генерирует фиксированный набор кодов нажатия и отжатия для каждой из клавиш на клавиатуре. При нажатии клавиши контроллер клавиатуры посылает в систему код нажатия этой клавиши. В режиме 1 клавиатура генерирует однобайтовый код отжатия, состоящий из кода нажатия плюс 80h. Когда клавиатура работает в режимах 2 и 3, код отжатия представляет собой двухбайтовый код – код F0h и код нажатия клавиши.

9.2.2.1.Режим 1

Коды сканирования, вырабатываемые расширенной клавиатурой в режиме 1, совместимы с кодами сканирования клавиатуры PC XT. Поскольку никакого преобразования кодов сканирования в этом режиме не происходит, коды сканирования идентичны системным кодам, требуемым для ввода в BIOS.

В наборе кодов сканирования режима 1 каждой клавише присваивается базовый код сканирования, а в некоторых случаях и дополнительные коды для генерирования в системе искусственных состояний переключения регистров. Коды сканирования автоматического повторения каждой клавиши идентичны одиночным кодам сканирования.

9.2.2.2.Режим 2

Режим 2 – это устанавливаемый по умолчанию режим расширенной клавиатуры, который система выбирает при инициализации после включения питания. В этом режиме код сканирования контроллера клавиатуры 8042 преобразует генерируемые клавиатурой коды нажатия в системные коды, требуемые BIOS. За исключением системных кодов новых клавиш расширенной клавиатуры системные коды соответствуют кодам сканирования, которые генерируются в режиме 1.

9.2.2.3.Режим 3

Набор кодов сканирования, генерируемых в режиме 3, отличается от генерируемых в режимах 1 и 2. В этом режиме должно быть запрещено преобразование кодов у контроллера клавиатуры 8042, поскольку контроллер не может преобразовывать этот набор кодов сканирования. Прикладные системы должны взять на себя обработку кодов сканирования, генерируемых клавиатурой, поскольку 8042 и BIOS не могут обрабатывать набор кодов сканирования, генерируемых в режиме 3.

В наборе кодов сканирования каждой клавише присваивается уникальный 8 разрядный код нажатия, который передается при нажатии клавиши. При отжатии каждая клавиша отправляет код отжатия. Код отжатия состоит из двух байтов, первый из которых является префиксом отжатия (F0h), а второй идентичен коду нажатия данной клавиши. В этом наборе кодов каждая клавиша посылает только один код сканирования и состояние любой клавиши не зависит от состояния других.

9.3.Программирование клавиатуры

Как после нажатия, так и после отжатия клавиши контроллер клавиатуры генерирует аппаратное прерывание IRQ1. Обработчик прерывания INT 9 читает из порта 60 байт данных и начинает обработку нажатия (отжатия) клавиши. Результатом работы INT 9 могут являться:

  • Установка флажков состояния клавиатуры (после отжатия клавиш CapsLock, NumLock и пр.);

  • Включение специальных режимов обработки (после нажатия Alt, Ctrl, Shift и пр.);

  • Вызов специальных программ – печать экрана, пауза и пр.;

  • Перевод сканкодов в двухбайтовые коды (ASCII код и последний байт сканкода) и занесение их в буфер клавиатуры.

9.3.1.Управление клавиатурой

Управление клавиатурой возможно через порты ввода вывода 60, 61, 64; прерывание INT 9 и BIOS.

9.3.1.1.Упрвление клавиатурой через порты ввода вывода

Доступ к клавиатуре через порты ввода вывода является самым низкоуровневым методом доступа. Такой метод обычно используется только прерываниями INT9 и прерываниями BIOS.

С помощью порта 61 можно определить, доступен ли контроллер клавиатуры, и разрешить (запретить) доступ к нему. Причем, если значение, возвращаемое из порта 61, содержит в седьмом разряде нуль, то контроллер клавиатуры не доступен. Пример работы с портом 61из прерывания INT 9:

^ In al,61h ; прочитать состояни

Mov ah,al ; сохранить состояние

Or al,80h ; разрешить работу клавиатуры

Out 61h,al

Xchg ah,al ; восстановить статус

Out 61h,al

Порт 60 предназначен для чтения данных с клавиатуры и сохранен для совместимости с клавиатурой PC XT. С помощью порта 64 можно читать данные с клавиатуры (коды клавиш и статус), программировать и осуществлять настройку клавиатуры. Рекомендуется использовать порт 60 для чтения сканкодов, а 64 – для определения статуса и программирования клавиатуры (список основных кодов команд приведен в табл.9.1). Такое разделение обеспечивает максимальную гибкость программам.

^ In al,60h ; прочитать сканко

Mov bl,al ; bl-сканкод

In al,61h ; прочитать состояние

Mov ah,al ; сохранить состояние

Or al,80h ; разрешить работу клавиатуры

Out 61h,al

Xchg ah,al ; восстановить статус

Out 61h,al

Mov al,20h ; послать сигнал конца прерывания

Out 20h,al ; в контроллер прерываний

При программировании контроллера клавиатуры необходимо первоначально в порт 64 записать код команды, сделать задержку и затем записать байт данных:

^ Mov al,код команд

Out 64,al ; запись кода команды в порт

mov ecx,2500h ; задержка

@@1: in al,64h ; проверка готовности контроллера клавиатуры

test al,2

loopnz @@1

mov al,байт данных

out 64h,al ; запись байта данных в порт


Табл.9.1.Коды команд клавиатуры

Код

Функция

Назначение

Edh

Установка индикаторов

Установка и сброс светодиодных индикаторов на клавиатуре



FFh

Сброс

После этой команды клавиатура запрещается либо до принятия системой кода ответа либо до выдачи на клавиатуру другой команды.


9.3.1.2.Управление клавиатурой через базовую систему ввода вывода

Обработка клавиатуры с помощью INT 16 является основным методом чтения данных с клавиатуры и определения ее статуса в прикладных программах.

INT 16 представляет пользователю следующие подфункции:

  • Чтение данных с клавиатуры с ожиданием нажатия

  • Проверка клавиатуры

  • Получение статуса клавиатуры

  • Установка скорости генерации символов повтора и паузы

  • Запись символа в буфер клавиатуры

Детально функции приводятся в приложении.

^ 10.Дисковая подсистема

Дисковая подсистема в этом разделе рассматривается с двух позиций: общих для всех типов дисковых устройств архитектурных компонентов, определяющие основные принципы доступа к данным, и специфических особенностей основных устройств – гибких и жестких дисков.

10.1.Цилиндр, дорожка, головка, сектор

Основой всех дисковых устройств является магнитный носитель, имеющий форму диска. Поверхность диска разделена на концентрические окружности, отсчет которых на жестких дисках начинается от центра, а на гибких от края. Эти окружности называются дорожками.

Группа дорожек на разных поверхностях, имеющих одинаковый номер, называются цилиндром и определяются одним параметром – номером цилиндра.

Для каждой поверхности имеется головка считывания/записи. Таким образом, номер головки определяет номер поверхности.

Сектор представляет собой зону дорожки, в которой собственно и хранятся данные. Количество сектором на дорожке определяется многими параметрами, но в основном диной полей данных и служебных полей.

Цилиндр, головка и сектор являются основными архитектурными и системными компонентами. Именно эти параметры указываются при операциях чтения/записи.

10.2.Гибкие диски. История развития

Описывая гибкие диски, используют то же самое выражение, что и для детей, правительств и супругов. Мы не можем жить с ним и не можем жить без него. Гибкий диск обеспечивает обмен информацией, ее хранение, архивацию файлов и бесконечные сбои. Они удобны и ими легко пользоваться, но они медленны и недостаточно объемны. Последние два факта легко обнаруживаются после работы с жестким диском. Они подобны такси – все в них нуждаются, но никто не любит.

Гибкий диск является частью целой системы, включающей сам диск, механизм дисковода гибкого диска, контроллер и программное обеспечение дисковой операционной системы.

10.2.1.Гибкий диск

“Гибкий диск” – это описательный термин. Внутри защитного покрытия диск с магнитным носителем являет достаточно гибким. Сам диск напоминает аудио или видео ленту. На синтетическую подложку нанесен магнитный оксид, однако, в отличие от лент он нанесен на обе стороны.

10.2.2.Односторонние диски

Даже односторонние диски имеют магнитное покрытие с двух сторон. Любая сторона одностороннего диска может использоваться для записи и чтения. Для удобств обычно используется нижняя сторона.

10.2.3.Диски высокой плотности

Не все используемые магнитные материалы имеют одинаковые параметры. Важным является размер магнитных элементарных областей, с помощью которых запоминается информация. Диски высокой плотности имеют более мелкие эти области, позволяющие диску упаковывать информацию на меньшей площади. В общем случае всегда следует использовать диски высокой плотности на дисководах, созданных для этих целей. В противном случае при попытке использовать более дешевые диски возрастает число ошибок.

10.2.4.Размеры дисков

Гибкие диски выпускаются с размерами, начиная с 12 дюймов и ниже, до 2 дюймов, с неисчисляемым множеством вариаций из этого диапазона. В PC используется только три из них: 8 дюймов, 5 ¼ и 3 ½ дюйма в диаметре.

Диски больших объемов появились первыми. В 1971 году появились 8 дюймовые диски. Они были малы, по крайней мере, в сравнении с бумагой, которая требуется для хранение того же объема информации.

Ко времени представления первых IBM PC другие производители компьютеров перешли на гибкие диски в 5 ¼ дюйма. Этот размер был предложен в 1976 году, но адаптация этого диска IBM явилась более значимым событием.

На современном этапе все чаще используются диски 3 ½ дюйма. Эти диски обладают большей емкостью (используется улучшенное магнитное покрытие и более точная конструкция) и большую шероховатость (благодаря жесткой пластиковой оболочке).

10.3.Жесткие диски. История развития

Наименование устройства подчеркивает его отличие от гибкого диска. Гибкий диск имеет гибкую основу, в то время как в жестком – магнитное покрытие наносится на жесткую подложку.

10.3.1.Винчестеры. Появление винчестера.

Для наименования жестких дисков используется несколько имен. Часто жесткие диски называют винчестерами из-за используемой ими технологии. Основополагающим принципом этой технологии является плавающая головка чтения-записи. По этой технологии головка плывет по воздуху наподобие крыла самолета. Вращающийся жесткий диск создает воздушный поток, обладающий достаточной подъемной силой, чтобы удержать головку над поверхностью диска на расстоянии нескольких микрон.

Имя технологии дала первая разработка устройства с ее использованием. Устройство было создано IBM и имело кодовое название 3030. Согласно легенде, винтовка этого типа завоевала Запад. Такие же намерения были и у разработчиков устройства. Наименование получило широкое распространение не только при описании типа устройства, но и для описания технологии.

Еще одна история повествует о том, что данное устройство получило название винчестер, потому что технология плавающей головки была разработана лабораторией IBM в Англии, городе Винчестере. Что касается IBM, она официально придерживается первой версии.

10.3.2.Технология Уитни

Однако, теперь не все жесткие диски изготавливаются по технологии винчестера. Новая технология, названная Уитни, позволяет получить меньшие, более быстрые и более надежные конструкции, которыми теперь заменяют головки винчестера.

10.3.3.Технология Бернулли

Iomega Corporation модифицировала технологию винчестера. Вместо использования воздушного потока вращающегося диска для поддержания головок над его поверхностью, в этих дисководах используется гибкий диск, который сгибается вокруг головки под силой воздушного потока. Достоинством такой системы является то, что вращающийся диск имеет существенно меньший вес и более устойчив к разрушению головок. Недостатком – то, что он постоянно гнется, что приводит к его износу.

10.4.Работа с дисками через BIOS

Работа с дисками через базовую систему ввода вывода осуществляется через 13 прерывание. Через это прерывание вызываются функции сервиса дисковой системы, такие как чтение/запись секторов, проверка секторов, получение параметров устройства, форматирование и т.д.

10.4.1.Адресация информации на дисковых накопителях

Для адресации секторов на диске используются три восьми битовых регистра: DH, CH и CL. В регистре DH находится номер поверхности или головки, в младших 6 битах CL находится номер сектора, а старшие биты присоединяются к регистру CH, и в них находится номер цилиндра. Максимальное число дорожек может быть 1024, максимальное число головок – 64, и максимальное число секторов – 63. Таким образом, максимальный адресуемый через BIOS объем – 8 Гб. Для использования дисков большей емкости необходимо работать с ними через порты ввода/вывода или использовать новую версию базовой системы ввода/вывода.

10.4.2.Режимы перекодирования параметров

Несмотря на то, что для указания номера поверхности отводится 8 бит, это вовсе не означает, что физически имеется 128 дисков на одной оси, так как такое устройство очень сложно создать. Обычно на одной оси располагается до 8 дисков, соответственно номер поверхности не превышает 16. В тоже время число дорожек на поверхности диска достигает нескольких десятков тысяч, в то время как через BIOS можно адресовать только 1024. Исходя из ограничений, накладываемых базовой системой ввода-вывода, применяется несколько методов перекодирования параметров дисковых запросов (несколько методов отображения логических секторов в физические). Обычно используется два режима CHS и LBA.

Режим CHS – это режим, который устанавливается по умолчанию. В режиме CHS для адресации используются три поля: адрес сектора, номер головки и номер цилиндра. Сектора нумеруются от 1 до максимального значения текущего CHS метода преобразования, которое не может превышать 255. Головки нумеруются от 0 до максимального значения, которое не может превышать 15. Цилиндры нумеруются от 0 до максимального значения, которое не может превышать 65535. Во время команды инициализации CHS режима происходит запрос максимальных значений номера сектора и номера головок. При этом максимальное значение дорожки вычисляется автоматически.

Режим LBA предоставляет возможность адресовать максимальное дисковое пространство через базовую систему ввода вывода путем дополнительного преобразования параметров, размеры которых начинают соответствовать размерам принятым в BIOS. Следующее выражение всегда является истиной:

LBA=((Цилиндр*число_головок_на_цилинде+Головка)*число_секторов_на_дорожке)+Сектор-1

где число_головок_на_цилиндре и число_секторов_на_дорожке являются значениями текущего режима преобразования.

10.5.Работа с дисками через порты ввода/вывода

Работа с дисковыми устройствами через порты ввода вывода значительно сложнее, чем через BIOS.

Особенно все усложняет то, что разные дисковые устройства программируются по-разному. Например, если BIOS унифицирует взаимодействие с дисками, то схемы взаимодействия через порты ввода вывода с контроллером гибких дисков, с контроллером IDE дисков и с контроллером SCSI дисков абсолютно различны.

Тем не менее, несмотря на этот значительный недостаток, практически все операционные системы не использую BIOS для взаимодействия с дисковой подсистемой. Это объясняется тем, что BIOS разработан для работы в реальном режиме, и более того, функции сервиса дисковой подсистемы являются нереетерабильными. Это означает, что невозможно одновременно работать сразу с несколькими дисковыми устройствами. И даже если имеется только одно дисковое устройство, функции, предоставляемые базовой системой ввода вывода, не эффективны в многозадачной операционной системе.

Взаимодействие с контролерами дисковых накопителей сводится к подаче команд с соответствующими параметрами (при необходимости производится программирование контроллера прямого доступа к памяти) и получению ответов. Данные обычно передаются независимо от процессора. На сегодняшний день стандартизованы интерфейсы взаимодействия с гибкими дисками и IDE жесткими дисками. Команды и детальное их описание может быть найдено в соответствующей технической документации.

10.6. Хранение информации на дисках

10.6.1.Размещение данных и доступ к ним

Работать с дисками использую три параметра (цилиндр, головка и сектор) неудобно. Обычно используется логическая адресация, т.е. все сектора диска представляются логическими секторами с номерами от 0 до N, где N- это произведение трех параметров диска – числа цилиндров, числа головок и числа секторов на дорожке. Такой подход позволяет не учитывать конкретные параметры диска (кроме разве что размера). Перевод логического номера сектора в физические параметры осуществляется на уровне драйвера. Для гибких дисков применяется такое преобразование для всего диска. Эти логические сектора используются для формирования структур верхнего уровня.

10.6.2.Таблица разделов жесткого диска

Для жестких дисков применяется разделение всего дискового пространства на части, называемые разделами. Это связано с большими объемами информации, которая может храниться на диске. А также с тем, что на одном диске может находиться несколько операционных систем.

Для разделения дискового пространства на разделы используются таблицы разделов. Таблица разделов имеет четыре элемента, которые могут описывать четыре раздела, причем каждый раздел может использоваться, как логически целая конструкция, а может быть разделен на подразделы, т.е. получается своего рода дерево. На самом верхнем уровне находится основная таблица разделов (Primary partition table), которая находится в первом секторе на нулевой поверхности нулевой дорожки. На рис.10.2. приводится пример разделения диска на разделы. В табл.10.1 приводится формат первого сектора жесткого диска. Расширенные таблицы разделов находятся в самых первых секторах своего раздела. В табл.10.1 приводится структура элемента таблицы разделов.

Табл.10.1.Структура таблицы разделов

Смещение

Размер

Содержимое

0

1BEh

Код загрузки и выполнения корневого сектора активного раздела



1FEh

2

Подпись таблицы разделов 0AA55h


следующая страница >>