по пути реализации страничного механизма работы с кадрами изображения.
Страница представляет собой образ (копию) содержимого экрана дисплея
в памяти компьютера. В 80-ти позиционном текстовом режиме цветной
графический адаптер требует памяти в 4 раза (а в 40 - позиционном
текстовом режиме в 8 раз ) меньше фактически имеющейся. Поэтому память
этого адаптера может хранить либо 4, либо 8 страниц.
Любая страница изображения представляет собой полную копию
содержимого экрана дисплея, включающую байты данных, байты-атрибутов и
построчно-логическое разбиение символов. Работая в 80-ти позиционном
режиме, цветной графический адаптер может хранить четыре полных копии
одного кадра экрана монохромного адаптера. При работе в 40 - позиционном
режиме число таких кадров увеличивается до 8; при этом каждый кадр
обладает вдвое меньшей информационной емкостью.
Информация, хранящаяся в каждой из четырех или восьми страниц, может
в любой момент времени быть отображена на экране. Остальные страницы в это
время, подобно актерам, ожидающим выхода на сцену, ждут своей очереди.
Получив команду, дисплейный адаптер переключается с одной страницы на
другую, таким образом мгновенно обновляя содержимое экрана.
Пользовательская программа может формировать данные, подлежащие
отображению на дисплее, путем обычной записи по соответствующему адресу,
либо путем использования функций обслуживания BIOS, позволяющих
оперировать с нужной страницей. После того, как актуализация данных
закончена, сформированный в памяти образ экрана может быть мгновенно
отображен на дисплее путем переключения адаптером активной страницы. Такой
подход делает программу более оперативной, поскольку пользователь не
ощущает трудоемкого процесса формирования образа экрана - он видит лишь
быстрое появление результата.
Возможности программ в части использования страничной техники
представляют довольно интересное явление. Если программа использует
несколько стандартных форматов для представления информации, то она может
сформировать каждый формат только один раз и сохранить его в страничной
памяти дисплея. В случае возникновения потребности перехода от одного
формата к другому программа может, сохранив текущую страницу на экране,
форматировать данные другой страницы и завершив этот процесс, переключить
адаптер дисплея на новую страницу. Такого рода техника работы с памятью
дисплея создает впечатление, что программа обладает более высокой
производительностью, поскольку изображение появляется мгновенно. В
выигрыше оказывается и пользователь программы, получая более стабильное
изображение на экране дисплея. Поскольку мелкие изменения не допускаются,
то надежность человеко-машинного интерфейса повышается - в этом случае нет
необходимости каждый раз отыскивать на экране места возможных изменений и
проверять все ли на месте.
Еще одна потенциальная сфера использования страничной техники при
работе с дисплеем состоит в более совершенной передаче динамических
изображений. Если же изменения производятся "за кадром" и представляются
пользователю в виде цельного изображения путем замены активной страницы,
то динамический характер изображения передается более плавно.
Дисплейные страницы пронумерованы от 0 до 3, либо от 0 до 7 в случае
более мелких 40 позиционных страниц. Нулевая страница, как это можно
предположить, располагается в начале области памяти дисплея; вслед за ней
располагаются остальные страницы. Началу каждой страницы соответствует
адрес кратный 1К. Поясним это на примере. Дисплей, работающий в 80-ти
позиционном режиме, требует для каждой страницы 4000 байт памяти (25 строк
х 80 позиций х 2 байта на позицию). Первая страница, то есть страница,
имеющая 0 номер, располагается в памяти цветного графического адаптера с 0
смещением ( это соответствует параграфу с адресом B800). Вторая страница,
то есть страница, имеющая номер 1-й, размещается не вплотную за первой
страницей (с относительного адреса 4000), а с ближайшего адреса кратного
одному килобайту ( относительный адрес 4К или 4096 байт). В 80-ти
позиционном режиме работы дисплея страницы размещаются с интервалом в 4К
байтов, а в 40-позиционном - с интервалом в 2К байта. На рисунке 8.2.
показано размещение страниц в памяти дисплея.
Управление страничным механизмом дисплея можно осуществлять в рамках
Бейсика. Пользователь, работающий на Паскале такой возможности лишен, если
он не выходит за рамки этого языкового процессора; если же связь с
BIOS-ПЗУ осуществляется через программу, написанную на ассемблере, то эта
задача вполне разрешима. В параграфе 8.11 мы покажем как это делается
(готовая программа записана на дискету, прилагаемую к настоящей книге).
Монохромный дисплей не обладает описанными функциональными
возможностями, однако эта концепция может быть реализована (имитирована) в
обычной памяти. Пользовательские программы могут использовать эту память
для хранения полного образа экрана, своего рода эквивалента дисплейных
страниц. Эти пассивные экранные образы можно переместить в память дисплея
используя средства строковой пересылки микропроцессора 8086/8088.
Пользователям, работающим на Паскале, предоставляется встроенная
процедура MOVESL. Я использовал эту процедуру в ряде своих программ и могу
засвидетельствовать, что загрузка экрана происходит совершенно незаметно
для человеческого глаза - смена изображения производится мгновенно, как и
в случае смены страницы в цветном графическом адаптере. Описанный метод
весьма эффективен - настоятельно рекомендую его применять во всех
программах, не предъявляющих особых требований к объему используемой
памяти.
Причина, по которой лишь немногие программы используют страничный
механизм цветного графического адаптера очевидна: большинство программ для
IBM/PC должны работать одинаково хорошо как в случае цветного, так и в
случае монохромного монитора.
Эффективное использование страничного механизма может быть достигнуто
только в том случае, если программа специально написана для применения в
составе системы обработки графических образов, либо когда программа
настолько важна, что можно ожидать подстройку аппаратуры под нужды этой
программы. К числу известных примеров относится программа Context MBA.
Следует также иметь в виду, что имитация описанного выше страничного
дисплейного механизма всегда осуществима для любого компьютера IBM/PC,
имеющего достаточный объем памяти.
8.5. Атрибуты изображений
Следом за байтом символа, расположенного в памяти дисплея по четному
адресу расположен байт атрибутов, описывающий особенности отображения на
экране дисплея этого символа. В данном параграфе мы рассмотрим структуру
байта атрибутов и назначение всех его компонентов.
Программа, написанная на Бейсике, приведенная в приложении (листинг
8.1) демонстрирует все возможные комбинации битов байта атрибутов как для
монохромных, так и для цветных графических дисплеев. В процессе выполнения
этой программы у пользователя формируется представление о функциональных
возможностях и особенностях работы с атрибутами изображения.
Байт атрибутов управляет мерцанием символа и его цветом (или
монохромным аналогом цвета). Этот байт состоит из восьми разрядов, причем
каждому разряду отводится своя роль в процессе построения изображения. На
рисунке 8.3 приведена схема, иллюстрирующая назначение каждого разряда.
Существует множество различных способов идентификации отдельных разрядов
байта. Здесь мы будем придерживаться схемы нумерации этих разрядов
слева-направо (см.рис. 8.3).
Все восемь разрядов байта разбиты на четыре класса и рассматриваются
в контексте этого разбиения. Все, что выводится на экран - в конкретную
его позицию - состоит из двух компонентов: собственно символа (очертания)
и его окружения или фона. Поскольку цветной дисплей имеет три основных
цвета (красный, зеленый и синий), то очертанию и фону соответствуют по три
разряда байта-атрибутов, описывающие их цвета (или монохромные аналоги
цвета). Таким образом: разряды с 6-го по 8-й управляют цветом символа, а
разряды с 2-го по 4-й управляют цветом фона. Они и образуют два класса
признаков (из четырех) байта атрибутов.
Оставшиеся два класса признаков фиксируют интенсивность и мерцание
изображения. Под эти признаки отводится по одному разряду. Первый разряд
каждого байта атрибутов описывает мерцание фоновой составляющей позиции
экрана ( если бит установлен в 1, то имеет место мерцание ). Заметим
здесь, что мерцание распространяется только на фоновую составляющую и не
затрагивает собственно очертания символа.
Последний класс признаков (5-й разряд) байта атрибутов предназначен
для управления интенсивностью фона. Если 5-й разряд установлен в 1, то в
случае монохромного дисплея яркость символа будет повышена; в случае
цветного дисплея будет иметь место более яркий и светлый тон. Некоторые
цветные мониторы не используют бит интенсивности цвета; для этих мониторов
яркие фоновые цвета совпадают с обычными.
Для получения разнообразных цветов соответственно устанавливаются или
сбрасываются разряды тех или иных цветов. Так, для получения красного фона
следует устанавливать в"1" разряд красного цвета (6-й разряд), а два
остальных разряда обнулить. Комбинация двух основных цветов дисплея
позволяет синтезировать дополнительные цвета. Смесь зеленого и синего
цветов дает сине-зеленый цвет, так называемый циан. Если все три разряда
находятся в нулевом состоянии, то в результате будет получен черный цвет.
Смесь всех трех основных цветов дает на выходе белый цвет. При
внимательном рассмотрении символов белого цвета на цветном экране можно
различить все три основных цвета.
____________________________________________________________
Порядковый Значение * Функция
номер разряда
____________________________________________________________
1-й 128 Мерцание
2-й 64 Красная ! Фоновый
составляющая ! цвет
3-й 32 Зеленая !
составляющая !
4-й 16 Синяя !
составляющая !
5-й 8 Интенсивность! Фоновый
цвет
6-й 4 Красный ! Цвет
7-й 2 Зеленый ! очертания
8-й 1 Синий ! (символа)
____________________________________________________________
*) Численное значение позиции разряда. Используется в случае задания
атрибута в виде числа. Например: Мерцание (128) зеленого символа (2) на
красном (64) фоне - 128 + 2 + 64 = 194
Рис.8.3. Управляющие атрибуты дисплея
Полный перечень всех возможных цветовых сочетаний будет приведен в
следующем параграфе . По мере рассмотрения различных аспектов, связанных с
использованием атрибутов изображения мы узнаем много нового, в частности,
специфику их работы как в случае цветного графического, так и в случае
монохромного адаптера.
Операционная система DOS обеспечивает нормальный режим работы с
белыми символами на черном фоне даже при наличии цветного экрана
видеомонитора. Большинство программ, работающих под управлением DOS,