переместить через весь экран дисплея. Такой эффект возникает как результат
попыток одновременного доступа к памяти со стороны компьютера и со стороны
дисплея. Опасного в этом ничего нет, любопытен лишь сам эффект и не более.
Взяв за основу дисплей, хранящий копию изображения в памяти, закрепив за
дисплеем свою собственную область памяти и обеспечив двусторонний вход в
память фирма, IBM решила задачу визуализации информации наилучшим образом.
Можно было бы, правда, обеспечить и более высокую разрешающую способность
дисплея в текстовом режиме, а также реализовать пиктографический режим,
хотя бы в том объеме как это было впервые сделано для рабочей станции
"Стар" (STAR) фирмы "Ксерокс" или для компьютера "Лиза" ( Lisa) фирмы
"Apple".
В базовом варианте распределения памяти для IBM/PC под память дисплея
отводилось 128Кбайт. Это верный признак того, что фирма IBM намеривалась
реализовать все эти возможности.
Это все, что следует знать читателю, прежде чем приступать к более
глубокому изучению вопросов отображения информации на экране дисплея. В
следующем параграфе мы изложим наши взгляды на принципы построения
графических систем, а затем рассмотрим детали построения хранимого образа
экрана и обсудим такие понятия как "страницы" и "атрибуты".
Память дисплея физически размещается вместе с другими схемами дисплея
на плате адаптера. Однако логически (для центрального процессора) она
является частью основного адресного пространства компьютера. Для дисплея
отводится 128Кбайт памяти в блоках А и В с адресами А0000(16) - BFFFF(16),
однако оба стандартно поставляемых дисплейных адаптера используют лишь два
небольших фрагмента этой области памяти. Одноцветный адаптер использует 4К
дисплейной памяти, начиная с адреса B800. Оставшаяся память, в частности,
64-килобайтный блок от A000 до B000 отводится для развития возможностей
дисплея, например, для использования дисплейного графического адаптера.
Одноцветный и цветной графические адаптеры используют для вывода
информации на экран дисплея так называемый битовый образ изображения
(экрана) хранящегося в описанной выше памяти. Каждая ячейка области памяти
соответствует определенной позиции экрана, между ними установлено взаимно
однозначное соответствие.
Схемы дисплея периодически считывают информацию из памяти и выводят
ее на экран. Программа может непосредственно изменять содержимое памяти,
тем самым изменяя содержимое экрана. Контроллер экрана служит для связи
памяти дисплея с монитором, преобразуя поток получаемых из памяти битов в
электронные пучки, направляемые в определенные точки экрана. Точки экрана
называть пикселями, пэлами или элементами изображения. Они образуются при
столкновении потока электронов с люминофором поверхности
электронно-лучевой трубки. Поток электронов испускается электронной пушкой
и построчно перемещается сверху вниз. По мере его движения контроллер
электронно-лучевой трубки модулирует его интенсивность в зависимости от
комбинации битов, полученных из памяти дисплея.
Видеосхема обновляет экран 60 раз в секунду, делая меняющееся
изображение отчетливым и ясным. В конце каждого цикла обновления экрана
электронный пучек должен переместиться из нижнего правого угла экрана в
его верхний левый угол. Это перемещение называют вертикальным обратным
ходом. Во время обратного хода луча его подача на поверхность экрана
блокируется.
Время обратного вертикального хода луча составляет 1,25мсек и может
учитываться программистом.
8.3. Структура копии изображения экрана
Выше уже говорилось о том, что дисплеи компьютера IBM/PC относятся к
классу дисплеев, хранящих битовый образ экрана в памяти (карту) памяти. В
связи с этим обстоятельством имеет смысл рассмотреть принципы построения
этого образа.
Описываемый здесь образ экрана в памяти применим как к монохромному,
так и к цветному графическому адаптерам, работающим в текстовом режиме.
Графические режимы будут рассмотрены в следующей главе с учетом
особенностей хранения изображений в памяти (Более подробные сведения о
различных режимах работы цветного графического адаптера и некоторые
интересные возможности описаны в разделе 8.11.).
Поскольку дисплейные адаптеры используют специальную двухвходовую
память, не следует удивляться тому, что она размещается особым образом.
Физически память дисплея размещается на схемной плате и плате расширения
адаптера. Схемная плата содержит также микросхему контроллера дисплея и
все вспомогательные электронные схемы. Эта плата, подобно другим платам
для IBM/PC, вставляется в один из дополнительных разъемов, предназначенных
для подключения вспомогательного оборудования.
Несмотря на то, что память дисплея физически размещается на плате
контроллера дисплея, логически она ничем не отличается от обычной памяти в
том смысле, что допускает считывание и запись информации путем обращения
по адресу. Дисплеям двух различных типов отводятся различные участки
памяти (об этом уже говорилось при обсуждении основ использования памяти
персонального компьютера в главе 3), поэтому они могут быть одновременно
подключены к одному компьютеру. Монохромному дисплею отводится область
памяти, начиная с шестнадцатеричного адреса B000, а цветному графическому
- с адреса B800.
Читателю, знакомому с Бейсиком, напомним, что доступ к памяти
осуществляется с помощью операторов PEEK и POKE после того, как установлен
нужный указатель сегмента
10 DEF SEG = &HB000 (память монохромного дисплея)
20 DEF SEG = &HB800 (память цветного графического дисплея)
После приведенных кратких сведений о принципах работы дисплея с
хранимым образом экрана в памяти имеет смысл еще раз обратиться к
диаграмме на рис. 8.1.
Процесс отображения содержимого экрана в память начинается с
определения позиций отдельных символов экрана. Каждой позиции экрана
соответствует два байта памяти. Совместно эти два байта задают собственно
объект подлежащий, отображению на экране и то, как его следует отобразить.
Первый из двух байтов (имеющий четный адрес) специфицирует собственно
объект (т.е. "что" отображается на экране). Это шестнадцатеричный код
символа ASCII. Второй байт (имеющий нечетный адрес) специфицирует режим
отображения первого байта (т.е. "как" символ отображается на экране). Это
так называемый байт-атрибутов. В случае цветного графического адаптера
байт-атрибутов управляет цветом. В случае монохромного адаптера
байт-атрибутов управляет яркостью и подчеркиванием символа; это своего
рода монохромные эквиваленты цвета. Кроме того байт-атрибутов
устанавливает режим мерцания символа (для адаптеров обоих типов).
Детальное описание байта-атрибутов приводится в разделах 8.5 и 8.6.
Первой позиции экрана (верхний левый угол соответствует таким образом
два байта в памяти дисплея со смещением 0. Следующей позиции (смещенной на
одно знакоместо вправо) соответствуют два байта памяти со смещением 2, Так
продолжается до конца первой строки экрана дисплея. Для монохромного
дисплея, а также для цветного графического дисплея, работающего в 80-ти
позиционном режиме последнему символу строки соответствует пара байтов со
смещением 158 (т.е. 79х2). Для цветного графического дисплея, работающего
в 40-позиционном режиме, последней позиции первой строки соответствует
пара байтов памяти со смещением 78 (т.е. 39х2).
При переходе к новой строке позиции экрана продолжают отображаться
парой смежных байтов таким образом, что первой позиции следующей строки
соответствует пара байтов, расположенных непосредственно вслед за байтами
последней позиции предыдущей строки. Область памяти используется без
промежутков, т.е. какие-либо пробелы между концом одной строки и началом
другой строки - отсутствуют. Разумеется, речь идет о физических
промежутках, поскольку в логическом плане вполне естественно говорить о
вычислении местоположения границы между строками.
Все сказанное выше распространяется как на 80-ти позиционный, так и
на 40-позиционнный режимы. Поэтому при переходе из одного режима в другой
должна измениться структура расположения в памяти позиций и строк.
Монохромный и цветной графический дисплеи в 80-ти позиционном режиме
требуют 4000 байтов: 80 позиций х 2 байта х 25 строк. Цветной графический
адаптер в 40-позиционном режиме требует вдвое меньшей памяти, т.е. порядка
2000 байт.
Следствием такой схемы хранения образа экрана в памяти является то,
что отображаемые символы могут располагаться в любом другом месте памяти.
А это, в свою очередь, создает неудобства при перемещении сообщений в
память дисплея. Сообщения или любые другие строки отображаемых данных не
могут быть перемещены по месту назначения за один шаг, если форма их
хранения в программах не предполагает наличия байтов-атрибутов. Сообщение,
таким образом, должно быть представлено в виде чередующейся
последовательности содержательных и атрибутивных байтов. Поскольку большая
часть данных выводятся на экран в виде строк символов с одними и теми же
атрибутами, то возникает потребность в специальных программах перемещения
данных в нужную область памяти, которые бы попутно дополняли их нужными
атрибутами. Листинг 8.2 содержит тексты некоторых служебных программ на
Паскале, реализующих эти функции; в параграфе 8.7. этот вопрос рассмотрен
более детально.
Поскольку в памяти, отведенной дисплею, отсутствуют физические
границы между строками, то могут быть автоматически перенесены в следующие
строки, путем простого использования очередных адресов. Это довольно
эффективный способ решения проблемы переноса сообщений с минимальными
затратами. В тех случаях, когда важно фиксировать факт достижения
сообщением конца строки, следует предусматривать в программах проверку и
обработку этого условия. Для использования монохромного адаптера требуется
4000 байт памяти. Это приблизительно соответствует 4К (4096). Лишние 96
байтов не используются и остаются свободными. Цветной графический адаптер
требует значительно большего объема памяти, а именно, 16К. Это объясняется
большими потребностями памяти.
Объем памяти, используемой цветным графическим адаптером, составляет
16К байт. Такой значительный объем памяти определяется потребностями
графических режимов, детально описываемых в следующей главе. Персональный
компьютер использует излишки памяти (когда эта память реально не
используется в графических режимах) путем организации (в текстовом режиме)
набора копий кадров экрана. Эти копии принято называть страницами. В
следующем параграфе мы рассмотрим принципы организации и функционирования
страничного механизма.
8.4. Страничный механизм цветного графического дисплея
Материалы настоящего параграфа в первую очередь относятся к
компьютерам IBM/PC, снабженным цветным графическим адаптером. Однако, по
мере изложения станет ясно, что эта концепция может быть распространена и
на систему с монохромным адаптером. Поэтому, если читателя интересуют
только системы второго класса (либо универсальные системы) данный
параграф, несомненно, представляет интерес.
В отличие от монохромного адаптера, объем памяти которого в точности
соответствует размеру заполненного кадра дисплея, цветной графический
адаптер располагает памятью гораздо большего объема, чем это требуется для
работы в текстовом режиме. Это объясняется тем, что для работы в
графическом режиме требуются значительные ресурсы памяти. Фирма IBM пошла