ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.


Смотрите описание конструктор mic o mic у нас.

 

Часть 1

                   ВИДЕОРЕЖИМЫ ГРАФИЧЕСКОГО АДАПТЕРА VGA *
               
                              Ричард Уилтон
         
         АННОТАЦИЯ:  В статье рассматриваются некоторые вопросы п
рограм-
         мирования  видеорежимов  графического  адаптера  VGA.
         
               Графический  адаптер VGA (Video Graphic Array) уст
анавли-
         вается на моделях 50, 60 и 80 ПЭВМ серии PS/2 фирмы IBM.
  Кроме
         персональных  компьютеров серии PS/2, адаптер VGA может 
исполь-
         зоваться также и на ПЭВМ IBM PC XT/AT. С точки зрения  ф
ункцио-
         нальных  возможностей  и  производительности, VGA являет
ся нес-
         колько улучшеной версией графического адаптера EGA. Несм
отря на
         это, VGA поддерживает более широкий спектр  видеорежимов
,  осо-
         бенно при использовании мониторов с изменяемой рабочей ч
астотой.
               Также  как и графический адаптер EGA, VGA в своем 
составе
         содержит несколько программно-управляемых компонентов: б
лок уп-
         равления электронно-лучевой трубкой (ЭЛТ), блок  синхрон
изации,
         графический контроллер и устройство управления атрибутам
и выво-
         да. Каждый из этих компонентов адаптера управляется прог
раммно.
         Программы обслуживания VGA в составе базовой системы вво
да/вы-
         вода (BIOS) доступны по прерыванию 10h. Использование фу
нкции с
         номером 0 данного прерывания  позволяет  установить  ада
птер  в
         один из 24 стандартных видеорежимов, поддерживаемых BIOS
               Каждый компонент VGA содержит в своем составе ряд 
регист-
         ров, используемых для  управления  функционированием  ад
аптера.
         Для  каждого  видеорежима в программе видеобслуживания B
IOS со-
         держится соответствующая таблица значений регистров  вид
еоадап-
         тера,  в связи с чем, в большинстве случаев, для установ
ки тре-
         буемого  видеорежима  вместо непосредственной записи в р
егистры
         адаптера достаточно воспользоваться программами из BIOS.
 В  тех
         случаях, когда необходимо установить видеорежим не подде
рживае-
         мый  программами  BIOS, необходимо, в первую очередь, вы
яснить,
         какие же значения должы быть помещены  в  управляющие  р
егистры
         адаптера для чего требуется достаточно глубокое понимани
е рабо-
         ты видеосистемы ПЭВМ.
               Почему  возникает необходимость в создании дополни
тельных
         видеорежимов?  Обычно  это связано с желанием иметь возм
ожность
         получения на экране изображения с более высоким  разреше
нием  в
         графическом  режиме  или  возможностью  вывода на экран 
больших
         порций данных в текстовом режиме по сравнению  со  станд
артными
         видеорежимами,  поддерживаемыми  базовой системой ввода/
вывода.
         Некоторые из широко распространенных программных систем,
 таких,
         например, как Microsoft Word или Lotus  1-2-3  использую
т  свои
         собственные видеорежимы.
         ____________________________
         * "VGA Video Modes", RICHARD WILTON
         
.
                                   - 2 -
               
                          Управление видеорежимами
               
               Видеорежимы характеризуются следующими параметрами
         - вертикальным разрешением (количеством строк растра на 
эк-
           ране);
         - горизонтальным разрешением (количеством символов или п
ик-
           селов в строке);
         - представлением данных в буфере;
         - атрибутами вывода (цвет, мерцание и т. п.).
         При  программировании VGA большое место занимает управле
ние го-
         ризонтальным и вертикальным разрешением изображения  на 
 экране
         дисплея. Адаптер VGA обладает значительно меньшими возмо
жностя-
         ми управления представлением данных в экранной памяти и 
атрибу-
         тами вывода по сравнению с возможностями управления разр
ешением
         экрана. По этой причине, наиболее простым путем перехода
 к нес-
         тандартному  видеорежиму  является  использование програ
мм BIOS
         для установки некоторого стандартного видеорежима с посл
едующим
         изменением значений нескольких регистров видеоадаптера.
               
                      Сигналы управления видеомонитором
               
               Как горизонтальное, так и вертикальное разрешение 
опреде-
         ляется последовательностью согласованных  во  времени  в
ыходных
         сигналов графического адаптера, управляющих движением эл
ектрон-
         ного  луча  ЭЛТ. Понятно, что изображение на экране не я
вляется
         статическим - электронный луч "рисует"  изображение  на 
 экране
         двигаясь по строкам растра сверху вниз (см. рис. 1). Вес
ь экран
         полностью  обновляется  от 50 до 70 раз в секунду в зави
симости
         от видеорежима.
                                      
             ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ДДї
             і                       Бордюр                      
  і
             і                                                   
  і
             і    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±  
  і
             і    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±  
  і
             і    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±  
  і
             і    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±  
  і
             і    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±  
  і
             і    ±±±±±±±±±±±±±±±± Изображение ±±±±±±±±±±±±±±±±  
  і
             і    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±  
  і
             і    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±  
  і
             і    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±  
  і
             і    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±  
  і
             і    ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±  
  і
             і                                                   
  і
             і                       Бордюр                      
  і
             АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ДДЩ
                                                 
                  0                  Пикселы                  80 
  84
          Бордюр  ш                     ш                      ш 
  ш
             НННННДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДНН
ННН
             ННННН                                             Бо
рдюр
             щ    щ
            96    0
         
         Рис. 1. Экран видеомонитора и характеристики строки раст
ра.
.
                                   - 3 -
               
               В  процессе  вывода  каждой  строки  растра интенс
ивность
         электронного луча изменяется в зависимости от сигналов п
одавае-
         мых на вход монитора видеоадаптером  (в  цветном  монито
ре  для
         каждого  первичного  цвета используется собственный элек
тронный
         луч, что, в данном случае, несущественно).  В  ЭЛТ  элек
тронный
         луч  движется с постоянной скоростью вдоль строки растра
 и вниз
         с одной строки растра на следующую. Для управления насту
плением
         момента времени перехода луча от крайней правой точки ст
роки  к
         крайней левой точке следующей строки (т.е. для управлени
я гори-
         зонтальным  обратным  ходом луча) адаптер VGA генерирует
 сигнал
         горизонтальной синхронизации. Сигнал  вертикальной  синх
рониза-
         ции  используется для управления перемещением электронно
го луча
         от  крайней правой позиции в самой нижней строке растра 
в левый
         верхний угол экрана (управление вертикальным обратным хо
дом лу-
         ча).
               Видеоадаптер VGA всегда  программируется  таким  о
бразом,
         чтобы время, необходимое для вывода данных из видеобуфер
а всег-
         да было меньшим общего количества времени развертки одно
го кад-
         ра.  Это  дает  возможность вывода на экран бордюра (ove
rscan),
         окаймляющего собственно выводимое  изображение,  что  по
зволяет
         центрировать изображение на экране.
               Управлять параметрами  сигналов  развертки,  генер
ируемых
         видеоадаптером VGA можно путем изменения значений соотве
тствую-
         щих регистров блока управления ЭЛТ в составе VGA. Значен
ия, по-
         мещаемые  в  эти регистры задают длительность отрезков в
ремени,
         измеренную  в  так  называемых  символьных   единицах   
времени
         (character clock). Символьная единица это отрезок времен
и необ-
         ходимый для вывода на экран 8 пикселов в графическом реж
име VGA
         и 8 или 9 пикселов в алфавитно-цифровых режимах.
               Параметры строчной (горизонтальной) развертки опре
деляют-
         ся:
         - общим количеством времени, затрачиваемым на вывод стро
ки рас-
           тра - общая длительность строки (horisontal total);
         - длительностью времени в символьных единицах в течение 
которо-
           го  происходит  отображение  данных из видеобуфера при
 выводе
           на экран одной строки растра - длительность участка от
ображе-
           ния в строке (horisontal displayed). Разница между общ
ей дли-
           тельностью строки и длительностью участка отображения 
опреде-
           ляет размер горизонтального бордюра;
         - значение (в символьных единицах), при котором начинает
ся сиг-
           нал горизонтальной синхронизации (horisontal sync).
               Параметры кадровой  (вертикальной)  развертки  ана
логичны
         параметрам  строчной развертки, однако время здесь измер
яется в
         строках растра - отрезках времени, затрачиваемых для выв
ода од-
         ной строки растра на экран и перехода к началу следующей
 строки:
         - общее   количество  строк  растра  в  кадре  -  размер
  кадра
           (vertical total);
         - количество  строк в кадре,  используемых для вывода да
нных на
           экран - количество строк данных в кадре  (vertical dis
played).
           Разница между размером кадра и  количеством  строк  да
нных  в
           кадре определяет величину вертикального бордюра;
         - номер  строки растра в которой начинается сигнал верти
кальной
           синхронизации (vertical sync).
.
                                   - 4 -
               
                 Ограничения на значения временных параметров
               
               Для правильного задания временных характеристик  с
игналов
         управления генерацией изображения на экране монитора нео
бходимо
         при  расчете значений, помещаемых в регистры, учитывать 
базовые
         частотные характеристики видеомонитора и  адаптера,  так
ие  как
         частота вывода пикселов (dot rate), частота строк (scan 
rate) и
         частота кадров (vertical scan rate).
         
         ЧАСТОТА ВЫВОДА ПИКСЕЛОВ. Эта характеристика (ее также ча
сто на-
         зывавют полосой пропускания видеомонитора) определяет  с
корость
         вывода  пикселов.  Для формирования сигналов, задающих с
корость
         вывода пикселов используется пьезокристаллический генера
тор.  В
         VGA допускается использование одного из трех таких генер
аторов,
         каждый  из  которых обеспечивает формирование сигналов з
аданной
         частоты. Два таких генератора включены в  состав  видеоа
даптера
         VGA.  Они обеспечивают формирование сигралов с частотами
 25.175
         МГц и 28.322 МГц. Кроме того, может  использоваться  ген
ератор,
         установленный на системной плате ПЭВМ PS/2 моделей 50, 6
0 и 80.
          
         ЧАСТОТА  СТРОК.  Данная  характеристика  определяет  кол
ичество
         строк растра формируемых за одну секунду.  Частота строк
  зави-
         сит от количества пикселов в строке и равна частному от 
деления
         частоты вывода пикселов на количество пикселов в строке.
               
         ЧАСТОТА КАДРОВ. Определяет сколько кадров за одну секунд
у выво-
         дится  на  экран  монитора. Частота кадров при программи
ровании
         VGA, также как и частота строк, не задается непосредстве
нно,  а
         определяется  количеством строк в кадре. Для вычисления 
частоты
         кадров  достаточно разделить частоту строк на размер кад
ра, за-
         данный в строках растра.
               
               Центральным моментом при  программировании  нестан
дартных
         видеорежимом является выбор таких значений временных пар
аметров
         управления  экраном,  чтобы не выйти за допустимые преде
лы час-
         тотных характеристик  используемого монитора (см. табл. 
1).
          
                   Частотные характеристики видеомониторов      Т
абл. 1
         ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН»
         є  Тип монитора         Полоса    Макс. частота Макс. ча
стота є              є
         є                пропускания (МГц)  строк (КГц)  кадров 
(Гц)  є
         МННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН№
         є IBM 8503 (монохром.)     28           31.5        50-7
0     є
         є IBM 8513 (цветной)       28           31.5        50-7
0     є
         є NEC MultiSync            30           35          56-6
5     є
         є NEC MultiSync Plus       30           45          56-8
0     є
         є Electrohome ECM 1310     30           34          47-8
5     є
         є Sony Multiscan CDP 1302  25           34          50-1
00    є
         є Princeton Ultrasync      30           35          45-1
20    є
         ИННННННННННННННННННННННННННННННННННННННННННННННННННННННН
ННННННј
                                                                 
  
               Рассмотрим, например, видеорежим с номером 18 (12h
) базо-
         вой системы ввода/вывода - графический режим 640 x 480 с
 однов-
         ременным отображением на экране 16 цветов.  Этот режим р
азрабо-
.
                                   - 5 -
         
         тан для мониторов с частотой строк 31.5 КГц. Используетс
я гене-
         ратор пикселов с частотой 25.175 МГц. Теперь можно легко
 вычис-
         лить значения временных параметров для этого видеорежима
               Для определения количества  пикселов  в  строке  р
азделим
         частоту используемого генератора пикселов на частоту стр
ок. Для
         нахождения  общей длительности строки в символьных едини
цах не-
         обходимо разделить полученное значение на 8.
               
               Общая длительность строки = (25175000 / 31500) / 8
 = 100.
               
               Т.к. в каждой строке растра содержится  640  точек
,  дли-
         тельность  участка  отображения в строке равна 640 / 8, 
или 80.
         Оставшееся в размере 20 символьных  единиц  время  испол
ьзуется
         для формирования бордюра и горизонтального обратного ход
а луча.
         Для того чтобы строка располагалась в центре экрана, сиг
нал го-
         ризонтальной  синхронизации начинается с момента времени
, соот-
         ветстствующего 84 символьной единице и  имеет  длительно
сть  12
         символьных  единиц.  В результате получим горизонтальный
 бордюр
         размером в 4 символьных единицы.
               Аналогичным образом можно определить характеристик
и  вер-
         тикальной  развертки. Для указанного видеорежима програм
мы BIOS
         устанавливают такие значения параметров, чтобы  частота 
 кадров
         рабнялась 60 Гц, что примерно соответствует середине доп
устимо-
         го интервала для частоты кадров видеомонитора. Количеств
о строк
         в  кадре  определяется  как частное от деления частоты с
трок на
         частоту кадров.
               
               Размер кадра в строках = 25175000 / (100 * 8) / 60
 = 524.
               
               Т.к. число строк данных в кадре равно 480, то  ост
авшиеся
         44 строки используются для формирования вертикального бо
рдюра и
         вертикального  обратного  хода луча. Программы видеобслу
живания
         BIOS устанавливают параметры VGA таковыми, что вертикаль
ный об-
         ратный ход луча начинается после вывода 503 строки и  ег
о  дли-
         тельность  соответствует длительности вывода двух строк 
растра.
         Таким образом, выводится 522 строки, причем, 42 строки  
из  них
         используются  для  формирования  вертикального  бордюра 
 (524 -
         480 - 2).
               
                      Программирование видеорежимов
               
               После выбора значений  временных  параметров  виде
орежима
         можно  приступать  к  программированию  видеоадаптера  V
GA, что
         включает в себя:
               - программирование блока управления ЭЛТ;
               - программирование блока синхронизации;
               - задание частоты генератора пикселов;
               - задание высоты символов (в строках растра);
               - модификация требуемых переменных BIOS.
               Доступ  к  регистрам  VGA осуществляется через пор
ты вво-
         да/вывода (см. табл. 2) посредством применения команд ас
сембле-
         ра IN и OUT или, при разработке  программы  на  языке  в
ысокого
         уровня,  путем использования специальных функций, эквива
лентных
         по своим действиям этим командам. Для доступа к программ
ам  ви-
         деобслуживания BIOS используется прерывание с номером 16
 (10h).
.
                                   - 6 -
                                                                 
      
                  Адреса портов ввода/вывода адаптера VGA       Т
абл. 2
         ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН»
         є  Адрес                Назначение                Возмож
ность є
         є  порта                                            дост
упа   є
         МННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН№
         є 3C0           Управление атрибутами вывода     Чтение/
записьє
         є 3C2           Многоцелевой регистр                 Зап
ись   є
         є 3C4/3C5       Блок синхронизации               Чтение/
записьє
         є 3CC           Многоцелевой регистр                 Чте
ние   є
         є 3CE/3CF       Графический контроллер           Чтение/
записьє
         є 3D4/3D5 *     Блок управления ЭЛТ              Чтение/
записьє
         є * 3B4/3B5 в видеорежимах 7 и 0Fh                      
      є
         ИННННННННННННННННННННННННННННННННННННННННННННННННННННННН
ННННННј
               
               Блок  управления  ЭЛТ выполняет большую часть дейс
твий по
         управлению строчной и кадровой разверткой.  В  регистрах
  этого
         блока  задается длительность подаваемых на вход монитора
 сигна-
         лов управления строчной и кадровой разверткой. В нем так
же осу-
         ществляется синхронизация моментов формирования указанны
х  сиг-
         налов  с  выборкой  данных из видеобуфера и их обработко
й перед
         выводом на экран. Список регистров блока управления  ЭЛТ
  с  их
         назначением приведен в таблице 3.
             Назначение регистров блока управления ЭЛТ адаптера V
GA,
                используемых для программирования видеорежимов
                                                                Т
абл. 3
         ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН»
         є  Номер     Наименование               Назначение      
      є
         є регистра                                              
      є
         МННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН№
         є 0  Общая длительность строки    [Общая длительность   
      є
         є        (horisontal total)            строки] -5       
      є
         є 1  Длительность участка отоб-   [Длительность участка 
отоб- є
         є    ражения в строке (Horizon-      ражения в строке] -
 1    є
         є    tal display enable end)                            
      є
         є 2  Начало горизонтального       Номер символьной едини
цы, в є
         є    гашения (Start horison-      которой начинается сиг
нал   є
         є    tal blank)                   горизонтального гашени
я лучає
         є 3  Окончание горизонтального    Окончание сигнала гаше
ния   є                                                є
         є    гашения луча (End horison-   луча (используются тол
ько   є
         є    tal blank)                   биты 4-0).            
      є
         є 4  Начало горизонтального об-   Номер символьной едини
цы    є
         є    ратного хода луча (Start     начала сигнала горизон
таль- є
         є    horisontal retrace)          ной синхронизации     
      є
         є 5  Окончание горизонтального    Момент окончания сигна
ла    є
         є    обратного хода луча (End     горизонтальной синнхро
ни-   є
         є    horisontal retrace)          зации (биты 4-0)      
      є
         є 6  Общее количество строк       Общее количество строк
      є
         є    растра в кадре (vertical     растра в кадре (биты 7
-0    є
         є    total)                       10-битового значения) 
      є
         є 7  Регистр переполнения         Бит 0: 8-й бит общего 
коли- є
         є    (Overflow)                          чества строк в 
кадре є
         є                                 Бит 1: 8-й бит количес
тва   є
         є                                        строк отображен
ия в  є
         є                                        кадре          
      є
         ИННННННННННННННННННННННННННННННННННННННННННННННННННННННН
ННННННј
.
                                   - 7 -
         
         
                                                    Продолжение т
абл. 3
         ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН»
         є  Номер     Наименование               Назначение      
      є
         є регистра                                              
      є
         МННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН№
         є                                 Бит 2: бит 8 начала ве
рти-  є
         є                                        кального обратн
ого   є
         є                                        хода луча      
      є
         є                                 Бит 3: 8-й бит начала 
вер-  є
         є                                        тикального гаше
ния   є
         є                                        луча           
      є
         є                                 Бит 5: 9-й бит общего 
коли- є
         є                                        чества строк в 
кадре є
         є                                 Бит 6: 9-й бит количес
тва   є
         є                                        строк отображен
ия в  є
         є                                        кадре          
      є
         є                                 Бит 7: 9-й бит начала 
вер-  є
         є                                        тикального обра
тного є
         є                                        хода луча      
      є
         є 9 Максимальное количество       Биты 4-0: [количество 
строк є
         є   строк (Maximum scan line)            растра в символ
е] - 1є
         є                                 Бит 5: 9-й бит начала 
верти-є
         є                                        кального гашени
я лучає
         є 10h Начало вертикального        Номер строки растра, в
 кото-є
         є   обратного хода луча (Start    рой начинается сигнал 
верти-є
         є   vertical  retrace)            кальной синхронизации 
(биты є
         є                                 7-0 10-битового значен
ия)   є
         є 11h Окочание вертикального      Бит 7: запрет записи в
 ре-  є
         є   обратного хода луча (End             гистры 0-7 блок
а     є
         є   vertical retrace)                    управления ЭЛТ 
      є
         є                                 Бит 3-0: номер строки 
окон- є
         є                                        чания сигнала в
ерти- є                                           є
         є                                        кальной синхрон
изацииє
         є 12h Количество строк отоб-      Количество строк растр
а в   є
         є   ражения в кадре (Vertical     части кадра занимаемой
      є
         є   display enable end)           собственно изображение
м     є
         є 13h Смещение (Offset)           Количество слов данных
 в ло-є
         є                                 ческой строке видеопам
яти   є
         є 15h Начало вертикального        [Номер строки растра, 
в ко- є
         є   гашения луча (Start           торой начинается сигна
л вер-є
         є   vertical blank)               тикального гашения луч
а] - 1є
         є                                 (биты 7-0 10-битового 
значе-є
         є                                 ния)                  
      є
         є 16h Окончание вертикального     Номер строки растра, в
 кото-є
         є   гашения луча (End vertical    рой заканчивается сигн
ал    є
         є   blank)                        вертикального гашения 
луча  є
         є                                 (биты 7-0)            
      є
         ИННННННННННННННННННННННННННННННННННННННННННННННННННННННН
ННННННј
         
               Для  записи  данных  в регистр необходимо поместит
ь номер
         регистра в порт ввода/вывода с адресом 3D4h, после чего 
 произ-
         вести запись нового значения в порт 3D5h  (См. листинг п
рограм-
         мы 1).
               При программировании блока управления ЭЛТ можно пр
именить
         ряд  специальных приемов. Во-первых, можно производить з
апись в
.
                                   - 8 -
         
         
         один 16-битовый порт  вместо  последовательного  вывода 
 в  два
         8-битовых порта для получения одних и тех же результатов
               
               ;AL = номер регистра
               mov al,RegNumber
               ;AH = новое значение регистра
               mov ah,RegValue
               mov dx,3D4h
               ;Запись в порт 3D4h/3D5h
               out dx,ax
               
               Если используется доступ к 8-битовым  портам, обяз
ательно
         необходимо  запретить прерывания. В противном случае, ме
жду за-
         писями в порты может произойти аппаратное прерывание, пр
ограмма
         обработки которого модифицирует регистры блока управлени
я  ЭЛТ,
         после  чего исходная программа не сможет правильно функц
иониро-
         вать.
               В  случае  программирования адаптера VGA для видео
режимов
         BIOS с номерами 7 или 0Fh вместо  портов  ввода/вывода  
3D4h  и
         3D5h  следует  использовать  порты с адресами 3B4h и 3B5
h соот-
         ветственно. Эти адреса портов совпадают с адресами  анал
огичных
         портов  монохромного  дисплейного  адаптера (Monochrome 
Display
         Adapter - MDA), что позволяет устанавливать на одном и  
том  же
         компьютере кроме видеоадаптера VGA еще одну цветную граф
ическую
         подсистему.
               
               Изменение значений регистров блока управления ЭЛТ
                                                    Листинг прогр
аммы 1
         ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН»
         є                                                       
      є
         є  cli               ; запретить прерывания             
      є
         є  mov al,RegNumber  ; AL = номер регистра              
      є
         є  mov dx,3D4h                                          
      є
         є  out dx,al         ; запись в порт 3D4h               
      є
         є  mov al,RegValue   ; AL = новое значение регистра     
      є
         є  inc dx                                               
      є
         є  out dx,al         ; запись в порт 3D5h               
      є
         є  sti               ; разрешить прерывания             
      є
         є                                                       
      є
         ИННННННННННННННННННННННННННННННННННННННННННННННННННННННН
ННННННј
               В отличие от предыдущих моделей видеоадаптеров фир
мы IBM,
         управляющие  регистры  VGA  могут быть не только записан
ы, но и
         прочитаны (см. листинг программы 2), что дает возможност
ь прог-
         рамме запомнить текущее состояние регистров адаптера пер
ед  тем
         как модифицировать содержащиеся в них значения.
               Устройство синхронизации адаптера VGA выполняет ря
д взаи-
         мосвязанных  функций,  включая  синхронизацию вывода сим
волов с
         работой генератора пикселов. Одна строка растра символов
  может
         отображаться  либо  за  8  либо за 9 тактов генератора п
икселов
         или, другими словами, в алфавитно-цифровом режиме каждый
 символ
         может состоять из 8 или 9 пикселов по горизонтали в зави
симости
         от того, какие значения будут помещены в  управляющие  р
егистры
         блока синхронизации.
               По умолчанию, при использовании VGA, каждый символ
 состо-
         ит  из  9  пикселов  по горизонтали. В графическом режим
е или в
.
                                   - 9 -
               
               
         350-строчном алфавитно-цифровом режиме (режим  совместим
ости  с
         EGA),  блок  синхронизации  программируется  таким образ
ом, что
         каждый символ занимает 8 пикселов в строке.  Использован
ие  до-
         полнительного  (девятого)  пиксела  позволяет повысить ч
еткость
         отображаемого на экране текста.
                              
               В отличие от предыдущих моделей видеоадаптеров, VG
               позволяет производить чтение управляющих регистров
                                                    Листинг прогр
аммы 2
         ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН»
         є                                                       
      є
         є  cli               ; запретить прерывания             
      є
         є  mov al,RegNumber  ; AL = номер регистра              
      є
         є  mov dx,3D4h                                          
      є
         є  out dx,al         ; запись в порт 3D4h               
      є
         є  inc dx                                               
      є
         є  in al,dx          ; чтение значения регистра в AL    
      є
         є  sti               ; разрешить прерывания             
      є
         є                                                       
      є
         ИННННННННННННННННННННННННННННННННННННННННННННННННННННННН
ННННННј
                                                             
               Регистры  блока  синхронизации  доступны через пор
ты вво-
         да/вывода с адресами 3C4h и 3C5h (см. табл. 4). При  про
грамми-
         ровании этого блока используется тот же подход, что и пр
и прог-
         раммировании  блока  управления  ЭЛТ,  описанный ранее. 
Однако,
         здесь имеются и свои особенности. Если необходимо измени
ть час-
         тоту генератора пикселов или  размер  символа  по  гориз
онтали,
         требуется  "перезапустить" (reset) блок синхронизации ус
тановив
         бит 1 регистра перезапуска в 1  и  обратно.  Пример  про
граммы,
         позволяющей переключить адаптер в режим вывода символов 
шириной
         в 8 пикселов приведен в листинге 3.
         
                        Регистры блока синхронизации VGA        Т
абл. 4
         ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН»
         є  Номер     Наименование               Назначение      
      є
         є регистра                                              
      є
         МННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН№
         є 0   Перезапуск (reset)       Бит 1: синхронный перезап
уск   є
         є                                                       
      є
         є 1   Количество пикселов в    Бит 0: 1 = 8 пикселов    
      є
         є     строке символа (Clocking        0 = 9 пикселов    
      є
         ИННННННННННННННННННННННННННННННННННННННННННННННННННННННН
ННННННј
                                                                 
      
               Биты  2  и 3 многоцелевого регистра вывода (miscel
laneous
         output register) используются для управления частотой ге
нерато-
         ра пикселов (см. табл. 5). Для изменения частоты генерат
ора не-
         обходимо прочесть содержимое регистра 3CCh, модифицирова
ть биты
         2 и 3 полученного значения и записать результат  в  порт
  3C2h.
         При  выполнении  таких  действий  необходимо перезапусти
ть блок
         синхронизации подобно тому, как это было описано выше.
               По умолчанию, программы видеообслуживания BIOS уст
анавли-
         вают адаптер VGA в алфавитно-цифровой  режим  с  25  тек
стовыми
         строками на экране. В этом режиме изображение на экране 
состоит
         из 400 строк растра и, следовательно, каждый символ зани
мает по
.
                                   - 10 -
               
         
         высоте  16  растровых строк. В алфавитно-цифровых режима
х можно
         увеличить количество текстовых строк,  появляющихся на  
экране,
         уменьшив число строк растра символа.
               
               Использование многоцелевого регистра вывода для
                    выбора частоты генератора пикселов
                                                                Т
абл. 5
         ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН»
         є Бит 3         Бит 2         Частота генератора пиксело
в     є
         МННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН№
         є  0              0                    25.175 МГц       
      є
         є  0              1                    28.322 МГц       
      є
         ИННННННННННННННННННННННННННННННННННННННННННННННННННННННН
ННННННј
         
               Биты 0 - 4 регистра 09h (регистр максимального кол
ичества
         строк  в символе) блока управления ЭЛТ используются для 
задания
         размера символа по вертикали. Сюда помещается значение, 
которое
         должно быть на 1 меньшим количества строк в растре симво
ла. Та-
         ким образом, по умолчанию, в этом регистре содержится  з
начение
         0Fh.  Если, например, указанное значение будет изменено 
на 07h,
         каждый символ будет состоять из 8 строк растра и,  следо
ватель-
         но, на экран может быть выведено 50 строк вместо 25.
               Хотя значение в регистре количества строк в символ
е может
         быть изменено непосредственно, предпочтительнее воспольз
оваться
         для  его  модификации программами видеообслуживания BIOS
. Прог-
         раммы BIOS предоставляют для этого достаточно  гибкие  с
редства
         и, кроме задания размеров символа, позволяют одновреммен
но осу-
         ществить  выбор соответствующей таблицы графических пред
ставле-
         ний символов:
               
               ; AH = 11h (номер функции BIOS)
               ; AL = 12h (номер подфункции)
                mov ax,1112h
                mov bl,0
               ; вызов программы BIOS
                int 10h
                
               Приведенная последовательность команд может быть  
исполь-
         зована  для перехода к режиму вывода символов с размером
 по го-
         ризонтали  8 пикселов.  При этом программами  видеообслу
живания
         BIOS производится загрузка требуемой таблицы символов в 
генера-
         тор символов, модифицируются значения требуемых регистро
в блока
         управления ЭЛТ и записывается новое значение в область о
писания
         характеристик текущего режима видеоадаптера.
               
                             Два примера программ
               
               Автором разработаны две программы (тексты которых 
не при-
         водятся), позволяющие автоматизировать расчет значений, 
которые
         должны  быть записаны в регистры блока управления адапте
рап VGA
         для различных видеорежимов. Программа,  обеспечивающая  
возмож-
         ность работы в алфавитно-цифровом режиме носит название 
AVMODE.
         Эта программа в качестве параметров принимает количество
 симво-
         лов в строке, размер символов и, кроме  того,  используе
т  один
         специальный  параметр, предназначенный для управления це
нтриро-
.
                                   - 11 -
               
         
         ванием текста на экране дисплея. Так, для перехода к вид
еорежи-
         му, в котором допускается использование  90  символов  р
азмером
         8 x 8 в строке, достаточно выполнить команду:
               
               AVMODE 90 8 8
                           
               Если полученное изображение располагается не в цен
тре эк-
         рана,  можно  включить в команду еще один параметр, упра
вляющий
         горизонтальным центрированием изображения. Например,  дл
я  того
         чтобы  сдвинуть  изображение  на  ширину одного символа 
вправо,
         введите команду:
                      
               AVMODE 90 8 8 -1
               
               Для управления высотой символов в программе  испол
ьзуется
         интерфейс генератора символов видеообслуживания BIOS. По
сле ус-
         тановки размера символа по вертикали, в блоке синхрониза
ции ус-
         танавливается  размер символа по горизонтали - 8 или 9 т
очек. В
         конце работы программы в регистры блока управления ЭЛТ а
даптера
         записываются требуемые значения временных параметров, уп
равляю-
         щих строчной разверткой.
               
                 Программирование блока синхронизации VGA для
                  формирования символов "шириной" 8 пикселов
                                                    Листинг прогр
аммы 3
         ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН»
         є                                                       
      є
         є  cli               ; запретить прерывания             
      є
         є  mov dx,3C4h                                          
      є
         є  mov ax,0100h      ; AH = значение регистра перезапуск
а:    є
         є                      бит 1 = 0; бит 0 = 1             
      є
         є  out dx,al         ; запись в порт 3D4h               
      є
         є  out dx,ax         ; синхронный перезапуск блока синхр
ониз. є
         є  mov al,1          ; AL = номер регистра количества пи
кселовє
         є                    ; в строке символа                 
      є
         є  out dx,al                                            
      є
         є  inc dx                                               
      є
         є  in al,dx          ; AL = значение регистра           
      є
         є  dec dx                                               
      є
         є  or al,1           ; установить бит 1                 
      є
         є  mov ah,al         ; AH = новое значение регистра     
      є
         є  mov al,1                                             
      є
         є  out dx,ax         ; запись нового значения           
      є
         є  mov ax,0300h      ; AH = значение регистра перезапуск
а:    є
         є                    ; бит 1 = 1; бит 0 = 1             
      є
         є  out dx,ax                                            
      є
         є  sti                                                  
      є
         ИННННННННННННННННННННННННННННННННННННННННННННННННННННННН
ННННННј
               
               Для упрощения, в программе AVMODE.C все действия п
о прог-
         раммирования блока  синхронизации  выполняются  подпрогр
аммами,
         написанными  на языке высокого уровня. На практике, одна
ко, эти
         программы должны быть написаны на языке ассемблера, т.к.
  функ-
         ции inp() и outp() в языке программирования высокого уро
вня ор-
.
                                   - 12 -
               
               
         ганизованы  в  виде вызова подпрограмм, а не как встроен
ные не-
         посредственно в вызывающую программу команды IN и OUT. П
о  этой
         причине, для выполнения функций inp() или outp() требует
ся дос-
         таточно большой промежуток времени, что делает их весьма
 чувст-
         вительными  к  возникновению  аппаратных прерываний и, с
ледова-
         тельно, снижают надежность их работы.
               При использовании мониторов, устанавливаемых на ПЭ
ВМ  се-
         рии  PS/2 фирмы IBM, в алфавитно-цифровом режиме можно в
ыводить
         на экран до 96 символов (шириной 8 точек) в строке.  Дал
ьнейшее
         увеличение  количества  символов в строке ограничивается
 техни-
         ческими характеристиками мониторов.
               При использовании мониторов  с переменной  частото
й,  VGA
         позволяет  выводить  на экран до 132 символов в строке. 
Частота
         кадров при этом составляет всего 51.5 Гц, что может прив
ести  к
         возникновению  мерцаний  при  выводе  на  экран больших 
и ярких
         участков изображения. Это является следствием недостаточ
но  вы-
         сокой частоты кадров.
               Если  для установления видеорежима используется пр
ограмма
         AVMODE и при этом был изменен вертикальный размер символ
ов, ко-
         мандой CLS (очистка экрана) операционной системы MS DOS 
следует
         пользоваться с осторожностью. Программы видеообслуживани
я  BIOS
         записывают  по адресу 0040:0084h текущий размер символа 
по вер-
         тикали, однако операционная система  игнорирует  это  зн
ачение,
         предполагая, что на экране всегда представлено 25 строк 
текста.
         Если в текущем видеорежиме выводится 50 строк, командой 
CLS бу-
         дет очищена только верхняя половина экрана. В связи с эт
им, ре-
         комендуется написать собственную программу очистки экран
а ( см.
         листинг программы 4), использующую функцию с номером 6 п
рерыва-
         ния видеообслуживания 10h.
               Программа  GVMODE  позволяет  устанавливать нестан
дартные
         графические видеорежимы. При ее использовании следует  з
адавать
         размер  экрана в количестве пикселов по горизонтали и по
 верти-
         кали.  Для  получения  16-цветного  видеорежима  с  разр
ешением
         720 x 480 необходимо выполнить команду:
               
               GVMODE 720 480
                                  
               Программа  выбирает  частоту  генератора пикселов 
в зави-
         симости от значений параметров, что обеспечивает более  
широкие
         возможности по выбору характеристик видеорежима чем при 
исполь-
         зовании  только  одного  генератора.  В остальном же, пр
ограмма
         GVMODE функционирует аналогично программе AVMODE.
               На  стандартном  адаптере VGA при использовании пр
ограммы
         GVMODE удается добиться разрешения 720 x 512 точек, хотя
  такой
         режим для аналоговых мониторов PS/2 лежит на пределе их 
возмож-
         ностей. При использовании мониторов с переменной частото
й можно
         получить на экране изображение размером 800 x 600 точек.
               Как  и  ранее,  при использовании режимов с более 
высоким
         разрешением снижается частота кадров, что может привести
 к мер-
         цанию изображения на экране.
.
                                   - 13 -
               
                           Программа очистки экрана
                                                    Листинг прогр
аммы 3
         ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН
НННННН»
         є                                                       
      є
         є  ; Наименование программы:  vgacls.asm                
      є
         є  ; Назначение: очистка экрана при использовании нестан
дарт- є
         є  ;             ных видеорежимов                       
      є
         є  ; Замечания: для получения загрузочного модуля выполн
ите   є
         є  ;            следующие действия:                     
      є
         є  ;                                MASM VGACLS         
      є
         є  ;                                LINK VGACLS         
      є
         є  ;                                                    
      є
         є  CodeSeg  SEGMENT byte                                
      є
         є           ASSUME  cs:CodeSeg,ss:StackSeg              
      є
         є  VGAcls   PROC    far                                 
      є
         є           mov ah,0Fh  ; AH = номер функции прерывания 
10h   є
         є           int 10h     ; Определение видеорежима       
      є
         є  ; AH = количество символьных позиций в строке        
      є
         є  ; AL = видеорежим                                    
      є
         є  ; BH = номер текущей видеостраницы                   
      є
         є           push bx     ; Сохранение BX и AX в стеке    
      є
         є           push ax                                     
      є
         є           mov ax,1130h ; AH = 11h (номер функции прер.
 10h) є
         є                        ; AL = 30h (номер подфункции)  
      є
         є           int 10h      ; Чтение информации о генератор
е     є
         є                        ; символов:                    
      є
         є                        ; DL = [Число символьных строк]
 - 1  є
         є           pop ax       ; Восстановление AX            
      є
         є           mov dh,dl    ; DH = номер последней строки э
крана є
         є           mov dl,ah                                   
      є
         є           dec dl       ; DL = номер последн. позиции с
троки є
         є           sub cx,cx    ; CH = 0 (номер первой строки э
крана)є
         є                        ; CL = 0 (первая позиция строки
)     є
         є           mov dh,7     ; BH = атрибут по умолчанию    
      є
         є           cmp al,7                                    
      є
         є           jle L01      ; переход, если алфавитно-цифро
вой   є
         є                        ; режим                        
      є
         є           xor bh,bh    ; BH = графический атрибут по у
молч. є
         є  L01:     mov ax,0600h ; AH = 6 (номер функции прерыва
н.10h)є
         є                        ; AL = 0 (число строк для скрол
линга)є
         є           int 10h      ; Скролиинг вверх (очистка экра
на)   є
         є           pop bx       ; BH = номер текущей видеостран
ицы   є
         є           xor dx,dx    ; DH,DL = 0 ( новая позиция кур
сора) є
         є           mov ah,2                                    
      є
         є           int 10h      ; Установка курсора            
      є
         є           mov ax,4C00h                                
      є
         є           int 21h      ; Обращение к DOS для прекращен
ия    є
         є                        ; программы                    
      є
         є  VGAcls   ENDP                                        
      є
         є  CodeSeg  ENDS                                        
      є
         є                                                       
      є
         є  StackSeg SEGMENT stack                               
      є
         є           DB   800h dup(?)                            
      є
         є  StackSeg ENDS                                        
      є
         є           END VGAcls                                  
      є
         ИННННННННННННННННННННННННННННННННННННННННННННННННННННННН
ННННННј
.
                                   - 14 -
               
               
                       VGA - совместимые видеоадаптеры
               
               Микросхемы, используемые фирмой IBM в адаптере VGA
,  раз-
         работаны и выпускаются самой этой фирмой и не поставляют
ся дру-
         гим фирмам -  производителям  графической  видеоаппарату
ры  для
         ПЭВМ.  В связи с этим, конкурирующие фирмы вынуждены раз
рабаты-
         вать собственную аппаратуру с теми же  характеристиками 
 что  и
         адаптер VGA. Это означает, что совместимые по своим хара
ктерис-
         тикам с VGA адаптеры не обязательно совместимы с этим ад
аптером
         на  аппаратном  уровне.  Возникает два типа несовместимо
сти: по
         значениям, которые должны быть помещены в управляющие  р
егистры
         устройства и по частотам генератора пикселов.
               Т.к.  не  для всех типов VGA - совместимых видеоад
аптеров
         используются те же значения при программировании блока у
правле-
         ния ЭЛТ, что и в VGA фирмы IBM, предложенный подход к  п
рограм-
         мированию адаптера не может быть применен ко всем типам 
совмес-
         тимой видеоаппаратуры. В частности, при программировании
  адап-
         тера  VEGA  фирмы  Video  Seven, в регистры необходимо з
аносить
         значения, отличные от тех, которые  необходимы  для  VGA
  фирмы
         IBM. В то же время в некоторых других типах совместимых 
адапте-
         ров,  например, Paradise VGA Plus, используются те же зн
ачения,
         что и в оригинальном VGA, в связи с чем при его  програм
мирова-
         нии никаких затруднений не возникает.
               Обычно  VGA - совместимые адаптеры обеспечивают бо
лее вы-
         сокое разрешение за счет использования генераторов  пикс
елов  с
         более  высокой  частотой.  Например,  в устройстве Parad
ise VGA
         Plus при выводе 132 символов в строке в алфавитно-цифров
ом  ре-
         жиме  и графическом режиме с разрешением 800 x 600 испол
ьзуется
         генератор с частотой 36 МГц. Поэтому частота строк и кад
ров при
         использовании адаптера указанного типа выше, чем при  ис
пользо-
         вании  VGA фирмы IBM с частотой генератора 28.322 МГц, ч
то зна-
         чительно снижает уровень мерцаний.
               
                                   Заключение
               
               Использование нестандартных видеорежимов требует  
опреде-
         ленного уровня знаний о видеоадаптере и понимания того, 
как ра-
         ботает видеосистема ПЭВМ.
               С другой стороны, нестандартные видеорежимы крайне
  редко
         поддерживажтся существующим программным обеспечением. На
стройка
         стандартной программы обработки крупноформатных таблиц и
ли тек-
         стового  редактора  может  потребовать  разработки  спец
иальных
         средств генерации системы. Программы видеообслуживания B
IOS не-
         которых VGA - совместимых адаптеров обеспечивают работу 
системы
         в нестандартных видеорежимах. Во многих случаях  при  на
стройке
         той или иной программной системы допускается использован
ие спе-
         циальных драйверов, поставляемых разработчиком видеоаапа
ратуры.
         При отсутствии таких драйверов для обеспечения функциони
рования
         программной  системы  в  нестандартных  видеорежимах при
ходится
         разрабатывать собственные драйверы.
               Несмотря на сказанное выше, во вногих  случаях  це
лесооб-
         разно  использовать  VGA в нестандартном режиме. При акк
уратном
         программировании видеоадаптера и правильном использовани
и прог-
         рамм видеообслуживания  BIOS  можно  разрабатывать  прил
ожения,
         требующие  для своей работы большего разрешения экрана, 
чем это
         обеспечивается программами BIOS.
.
                                   
                                       
               


Яндекс цитирования