![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Видеорежимы и их краткая характеристика
Кафедра вычислительной техники
Методический материал К выполнению лабораторных работ по дисциплине «Вычислительные машины, системы и сети» Составил: асс. каф. ВТ Кочетков А.В.
Санкт-Петербург, 2005 год Лабораторная работа №1 ИССЛЕДОВАНИЕ ВИДЕОСИСТЕМЫ (ТЕКСТОВЫЙ РЕЖИМ) Цель работы: изучение работы с видеосистемой в текстовом режиме, освоение приемов использования цветовой палитры: изменение цвета символов и фона на всем экране и в отдельном окне. Общие положения Аппаратные средства для вывода информации на экран включают специальную электронную плату (видеоадаптер, либо адаптер дисплея, либо просто адаптер) и телевизионный монитор (или просто экран). Конструктивно видеоадаптеры - это весьма сложные устройства, управляемые собственным микропроцессором, сравнимым по мощности с центральным процессором компьютера. Несмотря на огромное разнообразие фирм-производителей видеоадаптеров, имеется несколько стандартов, которым все эти продукты удовлетворяют. Для персональных компьютеров типа IBM PC доступны три основных типа мониторов: монохроматический, цветной и усовершенствованный цветной (Enhanced Color Display -ECD). Существует несколько вариантов ECD: с низким и высоким разрешением, с фиксированной частотой синхронизации и мультичастотный. Если компьютер оснащен адаптером, генерирующим цветной сигнал, и монохроматическим экраном, цвета передаются на экране различными оттенками серого (как цветная телепередача по черно-белому телевизору). В самом общем виде видеоадаптер состоит из двух основных частей: контроллера электронно-лучевой трубки, или CRT-контроллера (CRT - Cathode Rate Tube), и видеопамяти (видеобуфера). Помимо этих обязательных узлов, наиболее совершенные видеоадаптеры имеют в своем составе ряд дополнительных узлов, например специализированные контроллеры быстрой манипуляции содержимым видеобуфера (так называемые контроллеры графики). Основное назначение видеобуфера - хранение образа информации экрана. Видеоадаптер 25-30 раз в секунду "освежает" (заново рисует) изображение на экране. Так как человеческий глаз не способен уловить такое быстрое мелькание кадров, создается иллюзия неподвижного изображения на экране монитора. Изображение на экране строится из небольших телевизионных точек - так называемых пикселов (pixel - Picture ELement). Пикселы объединяются в телевизионные строки. Число пикселов в телевизионной строке и число самих строк различно для разных типов видеоадаптеров. Память, необходимая для хранения полного образа экрана, называется видеостраницей. Часто общий объем видеопамяти намного превышает объем единственной страницы. В этом случае появляется возможность хранить в видеобуфере не одну, а несколько страниц. Та видеостраница, которая постоянно "освежается" в данный момент, называется текущей. Видеоадаптер способен выполнять переключение текущей видеостраницы. Объем видеопамяти, а, следовательно, и число возможных страниц, зависит от конкретного адаптера. Для компьютеров IBM PC и совместимых с ними имеется несколько стандартов видеоадаптеров. Самые первые компьютеры IBM PC снабжались простейшим из адаптеров - монохроматическим адаптером дисплея, или MDA (Monochrome Display Adapter). Очень скоро появились цветные графические адаптеры, или CGA (Color Graphics Adapter), затем усовершенствованные графические адаптеры EGA (Enhanced Graphics Adapter). В наиболее совершенных персональных компьютерах PS/2 (Personal System 2) фирма IBM ввела два новых стандарта графики, реализуемых новыми типами адаптеров. В компьютерах PS/2 Model 30 - это адаптер MCGA (Mufti Color Graphics Array - многоцветный графический массив). Во всех остальных моделях PS/2 установлен видеоадаптер VGA (Video Graphics Array - графический видеомассив). Еще один распространенный тип видеоадаптеров - это монохроматический адаптер Hercules, или HGС (Hercules Graphics Card). Управление параметрами видеосистемы может выполняться на двух уровнях: 1) на уровне портов видеоадаптера; 2) обращением к функциям BIOS. В данной части описывается управление лишь некоторыми из параметров видеосистемы: определение типа и характеристик видеоадаптера и монитора, задание формы курсора и его позиции на экране, выбор режима, видеостраницы и палитры. Видеорежимы и их краткая характеристика Интегральной характеристикой особенностей работы адаптера является совокупность поддерживаемых им режимов. Поведение адаптера в том или ином режиме является фактическим стандартом и полностью характеризует все особенности адаптера, доступные для программиста средства управления адаптером и т.п. Режимы принято нумеровать, начиная с нуля. Чем совершеннее видеоадаптер, тем больше режимов он поддерживает. Как правило, более совершенные адаптеры полностью совместимы со своими "младшими братьями": если адаптер включен в режиме "младшего брата", он ведет себя, с точки зрения прикладной программы, точно так же, как и "младший брат". Среди перечисленных видеоадаптеров MDA - самый младший. Его преемником является CGA. "Старшим братом" CGA стал EGA. Преемником адаптера EGA является видеоадаптер VGA. Режимы работы видеоадаптеров описаны в табл. 1.1. Видеоадаптеры MDA поддерживали только режимы 0 и 1. CGA-адаптеры могли уже работать в режимах 0-6. Далее эти режимы часто будем называть CGA-режимами. Как следует из таблицы, в CGA-режимах способны работать и другие адаптеры: EGA и VGA. При этом они могут полностью "притвориться" CGA-адаптером, и тогда просто невозможно будет отличить по картинке на экране, установлен ли ССА-адаптер либо это "притворяется" EGA- или VGA-адаптер. Но старший адаптер в CGA-режиме может остаться и "самим собой", предоставляя пользователю дополнительные возможности. Например, EGA способен выдавать на экран 350 телевизионных строк, а не 200, как это может делать CGA. Поэтому для отображения текста в режиме "80 столбцов х 25 строк" можно потратить на каждую текстовую строку не 8 телевизионных строк, а уже 14. Следовательно, при тех же самых размерах каждый символ будет изображаться матрицей из 14 строк точек по 8 точек в каждой строке. Как результат, изображение каждой буквы на экране будет более четким. Но если EGA-адаптер заставить использовать для отображения символов матрицу 8x8 и при этом сохранить максимальное число телевизионных строк, появляется возможность разместить на экране уже 43 строки текста. Естественно, в этом случае сами символы на экране будут почти в 2 раза меньше. Режимы с номерами ODh - 10h впервые появились в EGA-адаптере, и далее мы будем называть их EGA-режимами. Этот адаптер, обладая всеми возможностями своих предшественников, имеет и ряд новых. Прежде всего, он способен выдавать на экран информацию для 200 и 350 телевизионных линий по 640 пикселов в каждой строке. Это позволяет при работе в текстовых режимах увеличить либо четкость изображения символов, либо число строк текста на экране (см. пример ранее). При работе в графических режимах EGA-адаптер способен отображать пикселы большим количеством цветов. И, наконец, режимы с номерами llh и старше - это режимы наиболее совершенных адаптеров - MCGA, VGA и специализированных графических адаптеров. Далее эти режимы будем называть VGA-режимами. Особенностями новых графических стандартов являются увеличенные максимальное число телевизионных строк (до 480) и максимальное число пикселов в каждой телевизионной строке (до 720). Адаптер способен выдавать 200, 350, 400 или 480 строк в зависимости от выбранных режима и инициализации адаптера. При работе в VGA-режимах еще более увеличилось число возможных цветов для пикселов.
Табл. 1.1. Режимы работы видеоадаптеров
При всем многообразии режимов работы видеоадаптеров их можно объединить в две группы: текстовые и графические. Переключение из текстового режима в графический и наоборот означает полное изменение логики работы видеоадаптера с видеобуфером. Если видеоадаптер включен в текстовый режим, он "рассматривает" экран как совокупность так называемых текселов (texel - Text Element) (рис. 1.1). Каждому знакоместу экрана (текселу) в текстовом режиме соответствуют два байта памяти видеобуфера. Байт по четному адресу хранит ASCII-код символа, а следующий за ним байт по нечетному адресу кодирует особенности отображения символа на экране: цвет пикселов, из которых формируется очертание символа (Foreground Color), цвет всех остальных пикселов знакоместа или цвет фона символа (Background Color),мерцание символа и необходимость повышения яркости символа при отображении. Этот байт называется байтом атрибута. Закрепление битов байта атрибута приведено на рис. 1.2 Рис. 1.1. Представление экрана в текстовых режимах "25 строк х 80 столбцов" R, G, В -соответственно красный (Red), зеленый (Green), синий (Blue) цвета (1 - цвет включен; 0 - цвет выключен) Рис. 1.2. Использование битов байта атрибута
Придавая различные числовые значения байту атрибута и помещая их в видеобуфер, можно управлять цветом символов и их фона. Например, если байт атрибута равен 128 + 64 + 32 + + 16 = 240, то выводится мерцающий символ черного цвета на сером фоне. Действительно, биты RGB цвета символа для атрибута 240 равны нулю. Биты цвета фона равны 1, и на мониторе для точек фона будут смешиваться в одинаковых пропорциях красный, синий и зеленый цвета. Для цветного видеоадаптера - это серый цвет. Повышение интенсивности цвета субъективно порождает ощущение "осветления" того или иного цвета. Поэтому можно добиться получения на экране светло-красного, светло-синего, светло-зеленого символа или светлых оттенков смешений красного, синего и зеленого цветов. Светло-серый цвет - это белый цвет, поэтому на экране цветного монитора при работе видеоадаптера в текстовом режиме могут быть белые буквы, но не может быть белый фон. Например, символы, атрибут которых в видеопамяти равен 8 + 4 + 2 + 1 = 15, будут отображаться белыми пикселами на черном фоне. В принципе, если задать цвета фона и символа одинаковыми, символы будут невидимыми, например красный символ на красном фоне (атрибут 0x44). Видеоадаптеры типов EGA и VGA имеют некоторые особенности использования бита интенсивности, которые будут рассмотрены несколько позже. Видеопамять адаптера при работе в текстовых режимах доступна для непосредственного доступа из программы. Это значит, что любая ячейка видеобуфера может быть прочитана программой так же, как и обычная ячейка оперативной памяти. И как в обычную ячейку памяти, в видеобуфер возможна запись значений из программы. Адреса ячеек видеопамяти начинаются для разных типов адаптеров с разных границ, приведенных в табл. 1.1 в девятом столбце. Если адаптер работает в текстовых режимах "40 столбцов х 25 строк", то для хранения полного образа экрана (видеостраницы) требуется 25 х 40 х 2 = 2000 байт видеопамяти. В режимах "80 столбцов х 25 строк" видеостраница занимает уже 25 х 80 х 2 = 4000 байт. Минимальная конфигурация видеоадаптера CGA имеет обычно 16К байт видеопамяти, что позволяет хранить 8 страниц текста в режимах 0 или 1 и 4 страницы в режимах 2 или 3. "Освежение" видеобуфера происходит, начиная с некоторого начального адреса, называемого смещением до видеостраницы. Страница 0 имеет нулевое смещение. Страница 1 в режиме "80 строк х 25 столбцов" начинается со смещения 4096 (lOOOh) относительно начального адреса видеопамяти, страница 2 - со смещения 8192 (2000h) и т.д. Если изменить смещение, с которого видеоадаптер производит "освежение" экрана, произойдет переключение страницы, т.е. на экране возникнет образ другой страницы видеопамяти. При этом образы других страниц останутся в видеобуфере целыми и невредимыми. Иногда переключение видеостраниц в текстовом режиме используется для реализации "живых" изображений. Видеоадаптер в текстовом режиме 25-30 раз в секунду считывает содержимое видеобуфера и по коду символа и байту атрибута "рисует" пикселы, формирующие в совокупности очертание символа и его фон. При этом байт символа служит индексом для входа в специальную таблицу - так называемую таблицу знакогенератора. Она задает карту, по которой видеоадаптер "расставляет" пикселы для изображения того или иного символа. Число строк и столбцов пикселов в этой карте различно для различных типов видеоадаптеров. В табл. 1.1 это значение, записанное в четвертом столбце в формате "столбцы х строки". Чем больше строк использовано для символа, тем более качественно он изображается на экране. Число знакомест в одной текстовой строке зависит от режима работы видеоадаптера и приведено в табл. 1.1 в седьмом столбце. Число текстовых строк для текстовых режимов зависит от типа адаптера и его инициализации. Для CGA-адаптера число строк текста в текстовых режимах всегда равно 25. EGA-адаптер в текстовых режимах способен отображать или 25 строк или 43 строки текста. Такой адаптер выдает на экран 25 строк текста, во-первых, если он полностью эмулирует CGA-адаптер и, во-вторых, если установлена таблица знакогенератора 8 х 14 и сохранено максимальное число (350) телевизионных линий. Если для EGA-адаптера выбрана таблица знакогенератора 8 х 8 и сохранено 350 телевизионных линий на экран выводится 43 строки текста по 80 символов каждой. VGA-адаптер способен выводить на экран 25, 28, 43 или 50 строк текста, работая в текстовом режиме. На экране 25 строк текста будет в том случае, когда: 1) VGA-адаптер полностью эмулирует CGA-адаптер; 2) VGA-адаптер эмулирует EGA-адаптер, отображающий 25 строк текста; 3) установлены таблица знакогенератора 9 х 16 и число телевизионных линий, равное 400. На экране 50 строк текста отображаются тогда, когда установлена таблица знакогенератора 8x8 и сохранено число телевизионных строк, равное 400. Если в VGA-адаптере сохранено 400 телевизионных строк и установлена таблица знакогенератора 8 х 14, на экране отображается 28 строк текста. Переключение адаптера в один из графических режимов полностью изменяет логику работы аппаратуры видеосистемы. При работе в графическом режиме появляется возможность управлять цветом любой телевизионной точки экрана или пиксела. Число строк пикселов и число пикселов в каждой телевизионной строке зависит от режима работы видеоадаптера и приведено в табл. 1.1 в шестом столбце в формате "столбцы х строки". Таким образом, экран в графическом режиме представляет собой матрицу пикселов (рис. 1.3).
Рис. 1.3. Представление экрана в графических режимах 4,5 (320 столбцов х 200 строк)
Функции консольного вывода Функции консольного ввода-вывода Turbo С, прототипы которых помещены в файле <conio.h>, предназначены для облегчения работы по созданию простейшего оконного интерфейса. Эти функции используют понятие активного окна экрана. Активное окно это прямоугольная область экрана, в границах которой в данный момент работают функции. Описание активного окна (или, как часто говорят, фрейм) хранится во внутренней структурной переменной Turbo С. Установку параметров активного текстового окна выполняет функция window( ).
#include <conio.h>
![]() |