Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Программирование EGA и VGA

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

---------T----------T------------------------------------------------
Смещение ¦Размер    ¦                   Описание
         ¦          ¦
---------+----------+------------------------------------------------
0        ¦3 байта   ¦ Поддерживаемые видеорежимы
         ¦          ¦ (1 бит на режим)
         ¦          ¦ 0,1,2,3,5,6,7,8,9,ah,
         ¦          ¦ bh,ch,dh,eh,fh
         ¦          ¦ 10h,11h,12h,13h,
         ¦          ¦ не задействован, Н/3, H/3, H/3
---------+----------+------------------------------------------------
7        ¦1 байт    ¦ Число строк развертки, поддерживаемое
         ¦          ¦ в алфавитно-цифровом режиме
---------+----------+---T--------------------------------------------
         ¦          ¦Бит¦ Описание (если установлено значение 1)
         ¦          +---+--------------------------------------------
         ¦          ¦ 0 ¦ 200
         ¦          ¦ 1 ¦ 350
         ¦          ¦ 2 ¦ 400
---------+----------+---+--------------------------------------------
8        ¦1 байт    ¦ Количество блоков шрифта
         ¦          ¦ в алфавитно-цифровом режиме
---------+----------+------------------------------------------------
9        ¦1 байт    ¦ Количество одновременно используемых блоков
         ¦          ¦ шрифта в алфавитно-цифровом режиме
---------+----------+------------------------------------------------
ah       ¦1 байт    ¦ Дополнительные поддерживаемые возможности
---------+----------+---T--------------------------------------------
         ¦          ¦Бит¦ Описание (если установлено значение 1)
         ¦          ¦   ¦
         ¦          +---+--------------------------------------------
         ¦          ¦ 0 ¦ Все возможные режимы
         ¦          ¦ 1 ¦ Эквивалентные градации серого
         ¦          ¦ 2 ¦ Таблицы шрифтов, определенные пользователем
         ¦          ¦ 3 ¦ Таблицы палитр, определенные пользователем
         ¦          ¦ 4 ¦ Эмуляция курсора CGA
         ¦          ¦ 5 ¦ Регистры палитры EGA
         ¦          ¦ 6 ¦ Регистры палитры ЦАП
         ¦          ¦ 7 ¦ Несколько таблиц цветов ЦАП
---------+----------+---+--------------------------------------------
bh       ¦1 байт    ¦ Дополнительные возможности
---------+----------+---T--------------------------------------------
         ¦          ¦Бит¦ Описание (если установлено значение 1)
         ¦          +---+--------------------------------------------
         ¦          ¦ 0 ¦ Интерфейс светового пера
         ¦          ¦ 1 ¦ Сохранение/Восстановление видеосостояний
         ¦          ¦ 2 ¦ Яркость фон/Мерцание
         ¦          ¦ 3 ¦ Таблица ККД
---------+----------+---+--------------------------------------------
         ¦1 байт    ¦ Поддерживаемые функции указателя сохранения
         ¦          ¦ (сохраняется в битах)
---------+----------+---T--------------------------------------------
         ¦          ¦Бит¦ Описание (если установлено значение 1)
         ¦          +---+--------------------------------------------
         ¦          ¦ 0 ¦ 512-символьный набор
         ¦          ¦ 1 ¦ Область сохранения палитры
         ¦          ¦ 2 ¦ Алфавитно-цифровой набор
         ¦          ¦ 3 ¦ Графический набор символов
         ¦          ¦   ¦ пользователя
         ¦          ¦ 4 ¦ Палитра, определенная пользователем
         ¦          ¦ 5 ¦ Расширение ККД
---------+----------+---+--------------------------------------------

======================================================================
ВЫЗОВ ФУНКЦИИ 1ch: СОХРАНЕНИЕ/ВОССТАНОВЛЕНИЕ ВИДЕОСОСТОЯНИЯ

КОММЕНТАРИИ

     Выполняет сохранение (или восстановление) указанных параметров
видеоокружения (BIOS, палитры и состояний регистров). Сохраняется
значительная часть определенных программой установок в случае
необходимости смены видеорежима и при сохранении содержимого
текущего экрана, например, для резидентных программ.

ЗАМЕЧАНИЯ

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

ИСХОДНЫЕ ДАННЫЕ

     Регистры (устанавливаются до вызова функции):
     -----------------------------------------------
     AH:        устанавливается 1ch
     CX:        определяет параметры

                Бит    Описание

                0      видеоаппаратура (регистры)
                1      область данных BIOS ОЗУ
                2      регистры ЦАП
     -----------------------------------------------

¦      ПОДФУНКЦИЯ 0: ПОЛУЧЕНИЕ РАЗМЕРА БУФЕРА

         Регистры (устанавливаются до вызова функции)
         ---------------------------------------------
         AL:        установить 0
	 ---------------------------------------------

         Регистры (чтение выполняется после обращения):
	 ---------------------------------------------
         AL:        1ch
         BX:        требующийся размер буфера (в блоках
                    по 64К)
	 ---------------------------------------------

¦      ПОДФУНКЦИЯ 1: СОХРАНЕНИЕ

         Регистры (устанавливаются до вызова функции):
    	 ---------------------------------------------
         AL:        установить 1
         ES:        сегмент сохраняемой области
         BX:        смещение сохраняемой области
	 ---------------------------------------------

         Регистры (чтение выполняется после обращения):
	 ---------------------------------------------
         AL:        1ch
	 ---------------------------------------------

¦      ПОДФУНКЦИЯ 2: ВОССТАНОВЛЕНИЕ

         Регистры (устанавливаются до вызова функции):
         ---------------------------------------------
         AL:        установить 2
         ES:        сегмент восстанавливаемой области
         BX:        смещение восстанавливаемой области
	 ---------------------------------------------

         Регистры (чтение выполняется после обращения):
	 ---------------------------------------------
         AL:        1ch
	 ---------------------------------------------



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


----------------------------------------------------------------------
                        5. Ф И З И Ч Е С К А Я   О Р Г А Н И З А Ц И Я
                           А Д А П Т Е Р О В
----------------------------------------------------------------------




ЧТО ЛУЧШЕ: ОБРАЩЕНИЕ К BIOS ИЛИ НЕПОСРЕДСТВЕННАЯ РАБОТА
С РЕГИСТРАМИ И ПАМЯТЬЮ?


     Использование обращений к BIOS безусловно просто, однако большое
число программ BIOS характеризуется невысоким быстродействием. В связи
с этим с целью повышения эффективности работы программ применяются ме-
тоды прямого доступа к памяти и регистрам. Даже в случае непосредствен-
ного обращения к аппаратуре большинство функций сохраняет совмести-
мость между CGA/монохромной и EGA/VGA системами. Исключением из этого
положения являются программы, использующие регистры CGA/монохромного
адаптера 6845 (соответствующие регистрам КЭЛТ EGA/VGA). Некоторые ре-
гистры адаптеров значительно отличаются от своих аналогов в других
системах.  Для эффективного использования регистрового программирова-
ния и использования методов прямого доступа к памяти необходимо хорошо
разбираться в вопросах организации памяти адаптера.


НЕПОСРЕДСТВЕННЫЙ ДОСТУП К ПАМЯТИ

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


           7      6   5   4     3       2   1   0
   --------------T---------T----------T-------------¬
   ¦             ¦   цвет  ¦          ¦  цвет       ¦
   ¦   мерцание  ¦   фона  ¦  яркость ¦  символа    ¦
   L-------------+---------+----------+--------------


     На цветных мониторах три бита, определяющие цвета фона и символа,
позволяют получить 8 цветов. Для монохромных мониторов биты, опреде-
ляющие цвет фона, могут принимать следующие значения: значения во
всех битах равны 0 (черный) или равны 1 (альтернативный цвет). Три би-
та,определяющие цвет символа, могут содержать одно из значений, приве-
денных в таблице ниже (использование прочих комбинаций на EGA  и моно-
хромных мониторах могут не дать одинакового результата). Для графи-
ческих мониторов адреса начинаются со значения b8000h, а для монохром-
ных (неграфических) мониторов - со значения b0000h.


     ------------T---------------------T---------------¬
     ¦ Значение  ¦  Цвет по умолчанию  ¦   Монохромный ¦
     +-----------+---------------------+---------------+
     ¦    000    ¦    черный           ¦  черный       ¦
     ¦    001    ¦    синий            ¦  подчеркивание¦
     ¦    010    ¦    зеленый          ¦               ¦
     ¦    011    ¦    голубой          ¦               ¦
     ¦    100    ¦    красный          ¦               ¦
     ¦    101    ¦    пурпурный        ¦               ¦
     ¦    110    ¦    коричневый       ¦               ¦
     ¦    111    ¦    белый            ¦               ¦
     L-----------+---------------------+----------------



     В графическом режиме память используется для хранения цвета каж-
дой растровой точки (пикселя). Распределение памяти по растровым точ-
кам зависит от вида графического режима и размера памяти, установлен-
ной в EGA (для случая работы с VGA используется такое же распределе-
ние памяти, как и для EGA с памятью 256К). Во всех режимах пиксели
размещаются слева направо и сверху вниз в соответствии с увеличением
адресов памяти (см. рис. 5.1).

                 Увеличение номеров столбцов
                 Увеличение адресов
                 (с наименьшей дискретностью)
                 -------------------------->
               -----T-----T----T------------------T-----¬
 Левый        ¦¦  0 ¦     ¦    ¦                  ¦ m-1 ¦
 верхний      ¦+----+-----+----+                  L-----+
 угол         ¦¦  m ¦     ¦    ¦                        ¦
 (смещение 0) ¦+----+-----+-----                        ¦
              ¦¦                                        ¦
 Увеличение   ¦¦                                        ¦
 номеров строꦦ                                        ¦
              ¦¦                                        ¦
 Увеличение   ¦¦                                        ¦
 адресов      ¦¦                                        ¦
              V¦                                        ¦
               ¦                                        ¦
               ¦                                        ¦
               ¦                                        ¦
               ¦                                        ¦
               ¦                                        ¦
               +---¬                             -------+
               ¦ n ¦                             ¦n+m-1 ¦
               L---+-----------------------------+-------


         Рис.5.1 Общее соотношение дисплей/память


     В совместимых режимах, работа которых не отличается от соответ-
ствующих режимов CGA, экранная память чередуется. Это означает, что
для хранения пикселей используются две области памяти: одна область -
для строк, имеющих четные номера, а другая - для хранения строк, имею-
щих нечетные номера. В каждом байте содержится информация о нескольких
пикселях (растровых точках), поэтому удобней использовать ссылки на
биты.Отсюда термин "растровая графика" (bit-mapped graphics). При ис-
пользовании среднего разрешения два бита содержат ссылку на один пик-
сель (тем самым поддерживаются четыре различных состояния, а следова-
тельно четыре цвета); в режиме высокого разрешения каждому биту соот-
ветствует один пиксель (может быть "включен" или "выключен", что по-
зволяет использовать только два цвета). Строки, имеющие четные номера,
располагаются, начиная с ячейки памяти b8000h, а нечетные - с ячейки
ba000h (см.рис. 5.2).
     VGA дает возможность использовать режим с разрешением 320х200,
имеющий организацию, сходную с организацией режимов CGA. Соотношение
дисплей/память в этом режиме представляют собой один байт на пиксель,
что делает возможным использование 256 цветов. Начальным адресом яв-
ляется a000h. Растр не разделен на четные и нечетные строки развертки,
все элементы изображения сохраняются в той последовательности, в ко-
торой они выводятся на экран. Организация памяти, при которой каждому
байту поставлен в соответствие один пиксель, а память не разделена на
области хранения четных и нечетных строк развертки, значительно упро-
щает расчет адресов каждого элемента изображения (см.рис.5.3).

[ Назад ] [ Оглавление ] [ Далее ]

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог