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

Ваш аккаунт

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

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

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

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

1. Проблема совместимости

Ограниченные возможности цветного графического адаптера IBM (CGA) стали очевидны после того, как графика стала играть все большую роль в деловых применениях PC. CGA был разработан для дешевых и широко распространенных бытовых телевизоров и композитных мониторов. Вертикальное разрешение CGA равно 200 строк. Горизонтальное разрешение 320 строк, хотя на композитных и RGB-мониторах можно использовать 640 строк.

Из-за высокой стоимости памяти разработчики были вынуждены ограничить ее размер. CGA снабжен достаточной памятью (16 К) для поддержки 4 цветов при разрешении 320х200 (такое разрешение наилучшим образом используется на бытовых телевизорах). При этом, однако, 16К не хватает для того, чтобы использовать более 2 цветов в режиме разрешения 640х200, кроме того, в этом случае один из цветов должен быть черный. Даже 4-цветный режим ограничивает пользователя 2 наборами по 4 цвета в каждом, хотя для фона может использоваться любой из цветов.

Когда стоимость микросхем памяти и прочих компонентов компьютеров стала снижаться и микрокомпьютеры пришли на смену большим системам, пользователей перестал устраивать ограниченный выбор цветов CGA. Длительная работа с экранным разрешением 320х200 утомительна для глаза, поэтому большинство графических систем снабжается вторым монитором (с неграфическим разрешением 720х350) для работы с текстом. В результате некоторые фирмы приступили к разработке плат для поддержки высокого графического разрешения с использованием 16 и более цветов. Компания Hercules Computer Technologies выпустила плату Hercules Card, позволяющую использовать для монохромной графики монохромный монитор высокого разрешения.

Совместимость с ранними моделями адаптеров

Самой большой проблемой среди ранних моделей графических плат высокого разрешения является отсутствие стандарта и возможности работать в режиме CGA. Кроме того, методы программирования, которые применялись в этих платах, отличаются от методов, используемых CGA. Адресация EGA является следствием и совместима с CGA, снабжена расширением доступной памяти и дополнительной поддержкой BIOS для обеспечения высокого разрешения. Однако EGA тоже не лишен недостатков. Большое число регистров и режимов работы затрудняет программирование, если не полагаться исключительно на программы BIOS, которые характеризуются низким быстродействием. Большинство регистров доступно только для записи; часто бывает невозможно определить текущее состояние адаптера. Указанные трудности мешают разработке многозадачных систем и резидентных программ, которые требуют сохранения видеосостояния до переключения задачи. Так же как и плата Hercules, EGA с монохромным монитором не поддерживает графику CGA.

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

ПРИМЕЧАНИЕ:

Это отличие, которому автор уделил всего одну фразу, на самом деле является революционным шагом в видеотехнике. Если при цифровом кодировании цветовых сигналов, выдаваемых адаптером на вход монитора, набор цветов и оттенков определяется исключительно возможностями монитора, то при аналоговом представлении видеосигналов, когда каждая из цветовых составляющих (R - красная, G - зеленая и B - синяя) представляется уровнем напряжения в диапазоне от 0 до 1В, а мониторы снабжаются прецизионными видеоусилителями, диапазон отображаемых цветов и оттенков ограничивается исключи тельно возможностями видеоадаптеров. Так как мониторы аналогового типа обладают значительным запасом точности отображения цвета, появляется возможность при появлении новых моделей адаптеров с более высоким разрешением и цветовым диапазоном использовать те же самые мониторы. Иными словами, аналоговые мониторы становятся инвариантными к типу видеоадаптеров.



Так же как и EGA, VGA поддерживает работу в монохромном и CGA-совместимом режимах. Более того, эти режимы поддерживаются как на монохромных, так и на цветных мониторах.

Степень совместимости режимов EGA/VGA может быть определена по поддержке EGA программ BIOS, выполняемых по прерыванию INT 10h. Оригинальные программы BIOS настраиваются на прерывание INT 42h, тогда как EGA помещает свой код BIOS по прерыванию INT 10h. BIOS EGA использует старые программы для поддержки отдельных функций, поэтому правильнее говорить о расширении BIOS, а не о замене старых функций новыми. Прежние обращения к BIOS поддерживаются полностью, а выполнение новых не противоречит старым.

Обращения к BIOS, как правило, совместимы между различными типами IBM-(и совместимых с IBM) адаптеров, при этом отличия обусловлены различными аппаратными реализациями интерфейсных портов. Архитектуры адаптеров Монохромного/CGA и EGA/VGA совершенно различны. Оригинальные адаптеры основаны на графическом контроллере Motorola 6845, в то время как EGA и VGA используют микросхемы разработки IBM. Конечно, многие изготовители разработали свои наборы микросхем, которые почти идентичны. Несколько регистров EGA/VGA имитируют работу микросхемы 6845; те, которые отличаются, описаны в главах по программированию регистров.

Несмотря на некоторые различия среди адаптеров (обусловленные в основном типом дисплея), IBM включает поддержку для режимов эмуляции CGA и MDA, которые позволяют работать с большинством функций и реализовать большинство особенностей. Например, алфавитно-цифровой монохромный режим EGA преобразует набор символов в такой же, как у MDA. И если VGA в режиме CGA использует сдвоенную развертку (чтобы из 400 линий адресуемыми были только 200), EGA обладает возможностью переключения в режим обычного монитора с кадровым разрешением 200 строк.

Гибкость (страничная организация памяти, альтернативные наборы символов, мониторы).

EGA позволяет работать с оригинальными цветными и монохромными мониторами. Кроме того, предусмотрена поддержка ECD (усовершенствованного цветного дисплея), разрешение которого близко к разрешению монохромного монитора (640х350 для ECD, для монохромного - 720х350) и возможно использование 16 цветов из 64. Адаптер позволяет заменить любой из 16 цветов на любой из оставшихся 63. VGA не поддерживает работу с прочими оригинальными дисплеями (за исключением некоторых мультичастотных мониторов). Для работы VGA требуется аналоговый дисплей. Режим высокого разрешения VGA составляет 640х480 и поддерживает использование 16 цветов (или градаций серого) из 262144 возможных (или из 64 градаций серого). Так же как у EGA, цвета VGA можно выбирать индивидуально.

IBM обеспечивает расширение памяти EGA, так что возможна поддержка двух отдельных страниц для цветного графического режима высокого разрешения. EGA (и VGA) других изготовителей поставляется с полным комплектом памяти. При низком разрешении (или монохромной графике) адаптер позволяет хранить до 8 страниц текстовой или графической информации. Возможно совмещение отображения на экране одной страницы с модификацией другой. Дополнительная память может использоваться и для хранения таблицы шрифтов (в графическом режиме это невозможно), что позволяет хранить до 1024 различных символов (на VGA до 2048), 512 из которых могут быть отображены одновременно.

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

Вероятно, наиболее серьезным архитектурным изменениям в EGA и VGA была подвергнута организация памяти. В CGA для описания каждой цветной точки (пикселя) используется последовательность битов данных. Несмотря на простоту этого метода для программирования, при его использовании адресное пространство процессора расходуется неоптимально (удвоенное число цветов, удвоенный размер карты памяти); наблюдается сильное замедление прикладных графических программ, использующих большое число цветов (удвоенное количество цветов требует в два раза больше времени для записи в память). EGA и VGA используют битовую матрицу, в которой биты цвета помещаются по одному и тому же адресу. Битовая матрица допускает использование большого числа цветовых комбинаций без увеличения адресного пространства процессора. В некоторых случаях применение архитектуры битовой матрицы позволяет повысить скорость записи в память, поскольку одно обращение к памяти позволяет модифицировать 8 битов каждой матрицы. Более подробно эти режимы описаны в следующих главах.

Так как в этом разделе рассматриваются развитие стандартов графического адаптера, его новые особенности и гибкость, правомерен вопрос какова перспектива этого развития: VGA отодвинул к пределу возможностей существующие в настоящее время процессоры. Максимальный размер сегмента памяти 64К оказывается полностью занятым в режиме работы с 256 цветами, а управление режимом разрешения 640х480 осуществляется очень медленно даже при использовании процессоров, обладающих высоким быстродействием (поскольку адаптер также выполняет обращение к памяти и блокирует процессор установкой состояния ожидания). Вероятно, следующим шагом должны быть более сложные графические сопроцессоры, которые сделают возможным одновременный доступ и использование встроенных графических примитивов, таких как изображение линии и окружности.

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

При использовании EGA с улучшенным разрешением и возможностью поддерживать 16 цветов игровые программы производят вполне удовлетворительное впечатление. Можно предполагать, что EGA и VGA будут иметь спрос у пользователей, аналогичный существовавшему в свое время спросу на компьютеры на базе простых процессоров 8086/8088, которые в основном используются в качестве домашних машин. Деловая графика и представление данных на улучшенном разрешении при использовании 16 цветов выглядят очень резко и точно. В соответствии с принятым соглашением графики в деловых бумагах должны быть изображены с использованием не более 4 цветов (не считая черного и белого). Этому вполне соответствуют возможности EGA, позволяющие выполнить выбор любых цветов из 64. Деловому рынку, который является главной движущей силой в развитии компьютеров фирмы IBM, в настоящий момент не требуется серьезного улучшения графической технологии.

Главными областями деятельности, в которой проявятся преимущества повышения быстродействия и использования графики высокого разрешения, являются настольные издательские системы, графические многооконные программы и системы автоматизированного проектирования (САПР). Прикладные разработки, работающие с оцифрованными цветными изображениями, выиграют при увеличении разрешения и числа поддерживаемых цветов, хотя 256-цветный режим VGA позволяет воспроизводить на экране изображения, близкие к реальным, несмотря на довольно низкое разрешение.

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


2. Введение в BIOS.

Модифицируемые программы

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

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

Операционная система OS/2 не использует программную обработку прерываний с целью управления аппаратурой (кроме окна эмуляции IBM PC) и не допускает непосредственного управления аппаратурой. OS/2 полагается на обращения к операционной системе, сходные с обращениями к внешним модулям в программах DOS: параметры помещаются (PUSH) в стек, после чего выполняется вызов (CALL) соответствующей программы. Заметим, что и в пакете Microsoft Windows используется такой же способ. Если программа написана для DOS и рассматривается вопрос ее адаптации к OS/2, то для каждой из используемых операций следует написать макрокоманды.

Таким образом макрокоманды могут быть написаны для установки цвета и построения пикселя. В начальной стадии разработки макрокоманда могла вызвать прерывание BIOS (макрокоманда установки цвета могла присвоить значение цвета некоторой переменной, а все остальные операции выполняла программа BIOS). В более поздних версиях можно перейти к непосредственной работе с регистрами и памятью за счет использования программы установки цвета для определения значений соответствующих регистров адаптера и программы построения для установки значений регистров и записи в память. Наконец, в версии для OS/2 с помощью макрокоманды можно пометить в стек (PUSH) соответствующие параметры и выполнить вызов подпрограммы (CALL). Такой способ использования макрокоманд применен в программах изображения линии и окружности, которые приведены в главе 15. За счет применения макрокоманд можно избежать поиска кода для каждого доступа к регистру, памяти или выполнения прерывания INT. Однако следует соответствующим образом предусмотреть структуру макрокоманд необходимо решить, какие из примитивных функций поддерживаются. Например, при рассмотрении структуры обращения к BIOS может возникнуть желание объединить выбор цвета и операции построения. Однако во многих случаях более эффективным (и, возможно, даже необходимым) является разделение этих функций.

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

Обращения к BIOS.

BIOS EGA предусматривает 20 основных программ для работы с экраном. Эти функции пронумерованы от 0 до 13h. Для доступа к функции необходимо поместить ее номер в регистр AH, после чего выполнить прерывание INT 10h. Для работы большинства программ требуются дополнительные исходные данные, которые должны быть помещены в регистры AL, BX, CX и/или DX. В главах 2, 3 и 4 дано подробное описание каждой функции, а также приведены замечания о работе таблицы состояний регистров и примеры программ на языках ассемблера и Turbo-Pascal. Описаны также различия между старыми (CGA) и новыми обращениями. Как уже отмечалось ранее, использование вызовов BIOS в виде макрокоманд может помочь переходу к регистровому программированию и другим операционным системам.

Каждая программа, написанная на ассемблере, является выполняемой, поэтому преобразование EXE-файла в COM-файл не требуется. Программа на языке Turbo-Pascal дает тот же результат, что и версия на ассемблере, однако структура программы может отличаться. Простота работы с вызовами BIOS объясняется тем, что для обращения достаточно установить соответствующие значения всех необходимых регистров и выполнить прерывание INT 10h. Загрузка каждого из требующихся регистров со значениями обязательна. При наличии опыта программирования BIOS для CGA можно совершить ошибку, пропустив требуемый регистр, особенно номер страницы в графических режимах, поскольку CGA не поддерживает графические страницы.


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

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

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