Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LRP2

.pdf
Скачиваний:
18
Добавлен:
02.02.2015
Размер:
520.44 Кб
Скачать

Кроме того, адаптер обеспечивает возможность работы со световым пером. Адаптер может функционировать в нескольких графических режимах (используются 4 битовые плоскости) и обладает возможностью загрузки в видеопамять шрифтов в алфавитно-цифровых режимах.

Адаптер содержит в себе 64Кбайт памяти, оформленной в виде 4 битовых плоскостей по 16 Кбайт. Кроме того, обеспечивается возможность расширения памяти адаптера до 128 Кбайт или 256 Кбайт. Ниже представлена структурная схема видеоадаптера EGA.

CPU addr.

 

 

 

 

┌──────┐

 

 

 

 

───┬────────────────────────────>│ MUX

├──────────┐

 

 

 

│CPU data┌─────┐

 

 

 

├────────┐ │

 

 

 

─────────┬─>│CRTC │

 

 

 

└───^──┘

│ │

 

 

 

├─────────┐

 

└─────┐

│ │

 

 

 

└──^──┘

 

┌──────┐

│ ├──>┌──────┐

├─────│────────┬───│──>│ GRAPH│<──┴─────│─│──>│

1

│<┐

┌───│───│──>│

│<────────│─│>┌──────┐ │ │

┌──────┐ │

└────┬─┘

 

│ └>│ BIT 0│─┘ │

│ ROM

├─┤

 

└────────┐

│ MAP

│<──┤

│ │

 

 

└──────┘

└──────┘ │

 

 

├────>┌──────┐ │

 

 

 

┌│ ─│────>│

3

│<┤

 

┌──────┐

│└┐ │

┌──────┐ │ │

 

├───│──>│ GRAPH│<────┘ │ └──>│ BIT 2│─┘ │

 

│ ┌───┴──┐ ├───│───│──>│

├─────┬─│────>│ MAP

│<──┘

 

└>│

├─┘

└────┬─┘

│ │

 

└──────┘

 

 

 

│ SEQ

├─────│───│────────│───────│─│───────────────

 

 

├─┐

 

└─────┐ │ │

 

 

 

 

└──────┘ │

┌v─v─v─┐──────>

O

└────────────>│

│──────>

U

└────────────────>│ATTRIB│──────>

T

└────────────────────>│

│──────>

P

 

 

 

│──────>

U

 

 

 

└──────┘──────>

T

Рис.1 3.2.1. Основные компоненты.

Блок управления электронно-лучевой трубкой (CRT Controller) управляетсигналами горизонтальной и вертикальной синхронизации, начальным адресом вывода в видеобуфере, положением и формой курсо-

51

ра и др.

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

Графический контроллер (Graphics Controller) направляет данные из памяти в контроллер атрибутов и в процессор.

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

Контроллер атрибутов (Attribute controller) устанавливает цветовую палитру из 16 цветов, каждый из которых может быть определен независимо от ос-

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

Видеобуфер (Display Buffer).Размер видеобуфера (называемого также видеопамятью или памяью

адаптера) равен 64 Кб. Видеобуфер доступен со стороны процессора как на чтение так и на запись и состоит из 4 битовых плоскостей по 16 Кб. Существует возможность расширения видеобуфера до 128 Кб. На плате расширения установлены разъемы для подключения еще 128 Кб памяти, что позволяет довести размер видеобуфера до 256 Кб. При этом в каждую битовую плоскость добавляется два дополнительных банка памяти по 16 Кб.

С целью совместимости с более ранними моделями видеоадаптеров, адреса видеобуфера могут изменяться. Возможны 4 варианта. Видеобуфер может установлен длиной 128 Кб и начинаться с сегментного адреса A0000, длиной 64 Кб и начинаться с адреса A0000, длиной 32 Кб и

52

начинаться с адреса B0000 или длиной 32 Кб с началом по адресу

B8000.

Базовая система ввода/вывода видеоадаптера (BIOSV) находится в памяти специального ПЗУ установленного на плате адаптера.BIOSV объединяется с системной базовой системой ввода/вывода. Здесь размещаются шрифты, используемые для генерации символов и управляющие программы видеоадаптера. Размер ПЗУ - 16 Кб, начальный адрес - C0000.

3.2.2.Работа в графическом режиме 16/64 (10H)

Для режимов экрана EGA от DH до 10Н память организована совсем по-другому. Она разделяется на одну, две или четыре битовые плоскости, каждая из которых организована так же, как для черно-белого режима высокого разрешения, описанного выше: когда байт данных посылается в определенный адрес видеобуфера, каждый бит соответствует точке на экране, причем они описывают горизонтальный сегмент строки и бит 7 соответствует самой левой точке. Записываются четыре такие битовые плоскости, соответствующие одним м тем же адресам, в видеобуфере. Это отводит каждой точке 4 бита, что позволяет описывать 16 цветов.

PCjr и EGA работают с цветом совсем по-другому, чем цветной адаптер. Они используют регистры палитры, которые позволяют в любой момент изменить цвет, соответствующий данному коду.

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

EGA может использовать 6 бит регистра палитры, а не 4, когда к нему присоединен улучшенный цветной графический дисплей фирмы IBM. При этом становятся доступными 64 цвета, кодировка для которых R'G'B'RGB.R, G и B соответствуют темным цветам, а R', G' и B' - светлым. Различные комбинации создают 64 оттенка. Как всегда, 111111 соответствует белому цвету, а 000000 - черному. Отметим, что через регистры палитры для EGA всегда доступны 64 цвета независимо от того,в каком режиме он работает. При работе в режиме 4-цветной графики (как у цветного адаптера) активны только

младшие 4 регистра палитры, но они могут содержать любые цвета. Функция ВН прерывания 10Н устанавливает как фоновый цвет, так и

цвета палитры, но не одновременно. Для установки фонового цвета надо поместить в ВН 0, а затем код цвета от 0 до 15 - в BL. Для установки палитры надо поместить в ВН 1, а в BL 0 или 1.

3.2.3. Назначение регистров.

53

3.2.3.1. Регистры блока синхронизации

Таблица 1

Назначение регистров блока синхронизации

┌─────────────────────────────────────┬────────────┬─────────────┐ │ Наименование │ Порт │ Индекс │

├─────────────────────────────────────┼────────────┼─────────────┤

│ Адресный

3C4

-

│ (Address)

 

 

│ Инициализации

3C5

00

│ (Reset)

 

 

│ Тактового режима

3C5

01

│ (Clocking mode)

 

 

│ Маски битовой плоскости

3C5

02

│ (Map mask)

 

 

│ Выбора набора символов

3C5

03

│ (Character map select)

 

 

│ Режима использования памяти

3C5

04

│ (Memory mode)

 

 

└─────────────────────────────────────┴────────────┴─────────────┘

Адресный регистр блока синхронизации Адресный - регистр, указывающий на один из регистров блока

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

Таблица 2

Формат адресного регистра. ┌───────────────────────────────────────────────────────────────┐ │ Формат адресного регистра блока синхронизации │

├───────────────────────────────────────────────────────────────┤

│Биты 7 6 5 4 3 2 1 0

│ │ │ │ └─┴─┴─┴──> Адрес

└─┴─┴─┴──────────> Не используются

└───────────────────────────────────────────────────────────────┘

Наибольший интерес представляет регистр маски битовой плоскос-

ти.

3.2.3.2. Регистры блока управления ЭЛТ.

54

Таблица 3

Назначение регистров блока управления ЭЛТ

┌─────────────────────────────────────┬────────────┬─────────────┐ │ Наименование │ Порт │ Индекс │

├─────────────────────────────────────┼────────────┼─────────────┤

│ Адресный

3?4

-

│ (Address)

 

 

│ Общей длительность строки

3?5

00

│ (horisontal total)

 

 

│ Длительности участка отображения

3?5

01

│ в строке (Horizontal display

 

 

│ enable end)

 

 

│ Начала горизонтального гашения

3?5

02

│ (Start horisontal blank)

 

 

│ Окончания горизонтального гашения

3?5

03

│ луча (End horisontal blank)

 

 

│ Начала горизонтального обратного

3?5

04

│ хода луча (Start horisontal retrace)│

 

 

│ Окончания горизонтального обратного │

3?5

05

│ хода луча (End horisontal retrace)

 

 

│ Общего количество строк растра

3?5

06

│ в кадре (vertical total)

 

 

│ Переполнения

3?5

07

│ (Overflow)

 

 

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

3?5

08

│ (Preset row scan)

 

 

│ Вертикального размера символа

3?5

09

│ (Max scan line)

 

 

│ Начала курсора

3?5

0A

│ (Cursor start)

 

 

│ Окончания курсора

3?5

0B

│ (Cursor end)

 

 

│ Старшей составляющей начального

3?5

0C

│ адреса (Start address high)

 

 

│ Младшей составляющей начального

3?5

0D

│ адреса (Start address low)

 

 

│ Старшей составляющей позиции

3?5

0E

│ курсора (Cursor location high)

 

 

│ Младшей составляющей позиции

3?5

0F

│ курсора (Cursor location high)

 

 

└─────────────────────────────────────┴────────────┴─────────────┘

55

Продолжение таблицы 3 ┌─────────────────────────────────────┬────────────┬─────────────┐ │ Наименование │ Порт │ Индекс │

├─────────────────────────────────────┼────────────┼─────────────┤

│ Начала вертикального обратного хода │

3?5

10h

│ луча (Vertical retrace start)

 

 

│ Старшей составляющей адреса

3?5

10h

│ светового пера (Light pen high)

 

 

│ Окончания обратного хода луча

3?5

11h

│ (Vertical retrace end)

 

 

│ Младшей составляющей адреса

3?5

11h

│ светового пера (Light pen low)

 

 

│ Длительности участка отображения

3?5

12h

│ в кадре (Vertical display end)

 

 

│ Смещения (Offset)

3?5

13h

│ Положения символа подчеркивания

3?5

14h

│ (Underline location)

 

 

│ Начала вертикального гашения луча

3?5

15h

│ (Start vertical blank)

 

 

│ Окончания вертикального гашения луча│

3?5

16h

│ (End vertical blank)

 

 

│ Управления режимом

3?5

17h

│ (Mode control)

 

 

│ Сравнения строк

3?5

18h

│ (Line compare)

 

 

├─────────────────────────────────────┴────────────┴─────────────┤ │ ? = B в монохромных режимах и D в многоцветных │

└────────────────────────────────────────────────────────────────┘

Эксперименты с регистрами блока управления ЭЛТ,которые формируют изображение кадра, могут привести к поломке видеотерминала.

3.2.3.3.Регистры графического контроллера.

Таблица 4 Назначение регистров графического контроллера

┌─────────────────────────────────────┬────────────┬─────────────┐ │ Наименование │ Порт │ Индекс │

├─────────────────────────────────────┼────────────┼─────────────┤

│ Регистр позиции графики 1

3СС

-

(Graphics 1 Position )

 

 

Регистр позиции графики 2

3СA

-

└─────────────────────────────────────┴────────────┴─────────────┘

56

Продолжение таблицы 4 ┌─────────────────────────────────────┬────────────┬─────────────┐ │ Наименование │ Порт │ Индекс │

├─────────────────────────────────────┼────────────┼─────────────┤

│ (Graphics 2 Position )

 

 

│ Адресный регистр графического конт- │

3CE

-

│ роллера (Graphics 1 & 2 Address)

 

 

│ Цвета (Set/Reset)

3CF

00

│ Разрешения цвета (Enable Set/Reset) │

3CF

01

│ Сравнения цвета (Color Compare)

3CF

02

│ Вращения данных (Data rotate)

3CF

03

│ Выбора плоскости для чтения

3CF

04

│ (Read Map Select)

 

 

│ Выбора режима (Mode)

3CF

05

│ Многоцелевой (Miscellaneous)

3CF

06

│ Регистр независимости от значения

 

 

│ плоскости при чтении

3CF

07

│ (Color Don't Care)

 

 

│ Маски (Bit Mask)

3CF

08

└─────────────────────────────────────┴────────────┴─────────────┘

3.2.3.4. Регистры контроллера атрибутов.

Таблица 5

Назначение регистров контроллера атрибутов

┌─────────────────────────────────────┬────────────┬─────────────┐ │ Наименование │ Порт │ Индекс │

├─────────────────────────────────────┼────────────┼─────────────┤

│ Адресный регистр (Address Register) │

3C0

 

-

│ Регистры палитры (Palette Registers)│

3C0

00

- 0F

│ Регистр управления режимом

3C0

10

 

│ (Mode Control Register)

 

 

 

│ Регистр управления цветом бордюра

3C0

11

 

│ (Overscan Color Register)

 

 

 

│ Регистр разрешения отображения бито-│

3C0

12

 

│ вой плоскости (Color Plane Enable

 

 

 

│ Register)

 

 

 

│ Горизонтального сдвига пикселов

3C0

13

 

│ (Horisontal Pel Panning Register)

 

 

 

└─────────────────────────────────────┴────────────┴─────────────┘

57

3.2.4. Рисование точек.

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

Функция СН прерывания 10Н устанавливает точку. DX содержит строку, а CX - столбец. Они отсчитываются от 0. Код цвета помещается в AL. Отметим, что содержимое AX будет разрушено при выполнении прерывания.

Вто время как цвет палитры помещается в младшие биты AL, старший бит также имеет значение. Если он равен 1, то над цветом производится операция исключающего ИЛИ с текущим цветом.

Напомним, что операция исключающего ИЛИ устанавливает бит только в том случае, если из двух сравниваемых битов установлен только один. Если оба сравниваемые бита равны 1 или оба равны 0, то результат будет 0. Для двуцветного режима это означает, что такая операция обращает установку бита. Если эту операцию применить ко всем точкам экрана, то будет обращен весь экран. В 4- и 16-цветном режимах, с другой стороны, области экрана могут менять свои цвета.

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

У EGA - адаптера графика более сложная. С точки зрения процессора режимы экрана 0-7 действуют так же, как соответствующие режимы для цветного адаптера или PCjr, но режимы от DH до 10Н совершенно другие. Организация памяти для этих режимов меняется в зависимости от числа цветов и количества памяти, имеющейся на плате дисплея.

Врежимах D, E и 10Н память разбита на 4 битовые плоскости. Каждая плоскость организована таким же образом, как для черно-бе- лого режима высокого разрешения цветного адаптера, когда байт данных посылается в определенный адрес видеобуфера, каждый бит соответствует горизонтальному сегменту линии, а бит 7 - самой левой точке. Выводятся четыре такие битовые плоскости, относящиеся к одним и тем же адресам в видеобуфере. Это приводит к тому, что каж-

58

дая точка описывается четырьмя битами (давая 16 цветов), причем каждый бит находится в отдельном байте отдельной битовой плоскости.

Но как вы можете записать 4 различных байта данных, расположенных по одному и тому же адресу? Ответ на этот вопрос состоит в том, что вы не посылаете последовательно четыре байта по этому адресу. Вместо этого один из трех режимов записи позволяет изменить все 4 байта на основании одного байта данных, полученного от процессора. Влияние данных, посланных процессором, зависит от установки нескольких регистров, включающих два регистра маски, которые определяют, на какие биты и в каких битовых плоскостях будут изменяться биты. Для понимания этих регистров мы должны сначала разобраться с четырьмя регистрами задвижки (latch register). Они содержат данные для четырех битовых плоскостей в той позиции, к которой было последнее обращение. (Заметим, что термин " битовая плоскость" используется как для целой области видеобуфера, так и для и однобайтового буфера, временно хранящегося в регистре задвижки). Когда процессор посылает данные по определенному адресу, эти данные могут изменить или полностью сменить данные регистра задвижки, а впоследствии именно данные из регистра задвижки записываются в видеобуфер. Каким образом данные процессора влияют на регистр задвижки, зависит от режима записи, а также установки некоторых других регистров. При чтении адреса из видеобуфера регистры задвижки заполняются четырьмя байтами из четырех битовых плоскостей по данному адресу. Регистрами задвижки легко манипулировать, производя с их содержимым различные логические операции, что позволяет устраивать различные графические трюки.

Регистр маски битов (смотри блок графического контроллера регистр 08H) и регистр маски (смотри блок синхронизации регистр 02H) карты действуют на регистры задвижки, защищая определенные биты или битовые плоскости от изменения под действием данных, поступающих от процессора. Установка бита регистра маски битов в 0 маскирует этот бит во всех четырех битовых плоскостях, делая со-

ответствующую точку недоступной для изменения. Однако поскольку оборудование работает в байтовых терминах, реально "неизменяемые" биты перезаписываются в четыре битовые плоскости. Данные для этих маскируемых битов хранятся в регистрах задвижки, поэтому программа должна быть уверена, что текущее содержимое регистров задвижки относится к правильному адресу.Поэтому перед записью в видеобуфер надо сначала считывать из него. Биты 0-3 регистра маски карты соответствуют битовым плоскостям 0-3. Старшие 4 бита регистра не используются. Когда биты 0-3 равны 0, соответствующие битовые плос-

59

кости не меняются при операциях записи. Посылаемые в видеобуфер данные могут быть модифицированы и логически обработаны вместе с данными,хранящимися в регистрах-задвижках с помощью регистра вращения данных( регистр 03H блока графического контроллера ) Биты 0- 2 регистра вращения определяют число разрядов,на которое производится циклический сдвиг данных процессора влево при записи данных

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

Значение битов: 00-данные не меняются 01-логическое "И" 10-логическое "ИЛИ" 11-исключающее "ИЛИ"

Операция сдвига выполняется раньше логической операции.

Это свойство используется по разному в различных режимах запи-

си.

Три режима записи и два режима чтения устанавливаются регистром установки режима(смотри блок графического контроллера регистр 05H).Режим записи устанавливается в битах 0 и 1, как чис-

ло от 0 до 2. Бит 2 должен быть равным 0, также как и биты 4-7. Бит 3 устанавливает один из двух режимов чтения из видеобуфера. Этот бит может быть 0 или 1. BIOS EGA устанавливает режим записи в 00,режим чтения в 0.

3.2.4.1. Режим записи 0.

Впростейшем случае режим записи 0 копирует данные процессора

вкаждую из четырех битовых плоскостей. Пусть, например, по определенному адресу видеобуфера послано 11111111В и разрешены все биты и все битовые плоскости (т.е. ничто не маскированно описанными выше регистрами масок). Тогда каждый бит во всех четырех плоскостях будет установлен в 1, так что цепочка битов для каждой из соответствующих точек будет 1111В. Это означает, что восемь точек будут выведены в цвете 15, который изначально соответствует белому цвету, хотя регистры палитры позволяют, чтобы на самом деле был любой из допустимых цветов.

Теперь рассмотрим ту же ситуацию, когда посылается значение 00001000В. Цепочка битов для точки 3 будет 1111, а для остальных 0000, что соответствует черному (изначально). Поэтому в данном случае только точка 3 появится на экране, остальные 7 точек будут выключены.

Если вы пошлете код палитры желаемого цвета в регистр маски

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]