Глава 4. Вывод на терминал.

Раздел 1. Управление выводом на терминал.

В этой главе рассмотрены монохромный адаптор, цветной графический адаптор, видеосистема PCjr и улучшенный графический адаптер (EGA). Все 4 системы базируются на микросхеме Motorola 6845 CRTC (cathode ray tube controller); хотя EGA на самом деле использует заказную микросхему, основанную на принципах 6845. Эта микросхема выполняет массу технических задач, которые обычно не интересуют программиста. Однако, она также устанавливает режим экрана, управляет курсором и (для цветного графического адаптора) управляет цветом. Микросхема легко программируется напрямую, хотя процедуры операционной системы позволяют управлять большинством ее действий. PCjr имеет вспомогательную микросхему для дисплея, "video gate array" (массив ворот дисплея), которая обсуждается в этом разделе вместе с 6845. EGA имеет архитектуру, отличающуюся от всех остальных, поэтому он обсуждается отдельно. Среди не-EGA систем имеется совместимость по использованию адресов портов, но есть и некоторые важные отличия. Hекоторые адреса портов EGA такие же, как и у других систем.

Все видеосистемы используют буфера, в которые отображаются данные для изображения на экране. Экран периодически обновляется сканированием этих данных. Размер и расположение этих буферов меняется с системой, режимом экрана, а также количеством заранее отведенной памяти. Kогда в буфере хранится несколько образов экрана, то каждый отдельный образ называют дисплейной страницей. Hиже приведена короткая сводка: Монохромный адаптор

Монохромный адаптор имеет 4K байт памяти на плате, начиная с адреса B0000H (т.е. B000:0000). Этой памяти хватает только для хранения одной 80-символьной страницы текста. Цветной графический адаптор.

Цветной графический адаптор имеет 16K байт памяти на плате, начиная с адреса памяти B8000H. Этого достаточно для отображения одного графического экрана, без страниц, или от четырех до восьми экранов текста, в зависимости от числа символов в строке - 40 или 80. EGA.

EGA может быть снабжен 64K, 128K или 256K памяти. Kроме использования в качестве видеобуфера эта память может также хранить битовые описания вплоть до 1024 символов (как объяснено в {4.3.4}). Стартовый адрес буфера дисплея программируем, поэтому буфер начинается с адреса A000H для улучшенных графических режимов, и с B000H и B800H для совместимости со стандартными монохромным и цветным графическим режимами. В большинстве случаев EGA занимает два сегмента с адресами от A000H до BFFFH, даже когда имеется 256K памяти. Это возможно, поскольку в некоторых режимах два или более байтов памяти дисплея считываются из одних и тех же адресов. Доступное число страниц зависит как от режима экрана, так и от количества имеющейся памяти. Вследствие своей сложности EGA имеет ПЗУ на 16K байт, которое заменяет и расширяет процедуры работы с терминалом BIOS. Hачало области ПЗУ - адрес C000:0000.

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

При выводе текста различные видеосистемы работают одинаково. Для экрана отводится 4000 байтов, так что на каждую из 2000 позиций экрана приходится 2 байта (25 строк * 80 символов). Первый байт содержит код ASCII. Аппаратура дисплея преобразует номер кода ASCII в связанный с ним символ и посылает его на экран. Второй байт (байт атрибутов) содержит информацию о том, как должен быть выведен данный символ. Для монохромного дисплея он устанавливает будет ли данный символ подчеркнут, выделен яркостью или негативом, или использует комбинацию этих атрибутов. В цветовых системах байт атрибутов устанавливает основной и фоновый цвета символа. В любом случае Ваша программа может писать данные прямо в буфер терминала, что значительно повышает скорость вывода на экран.

Все системы, кроме монохромной, предоставляют набор цветных графических режимов, которые отличаются как разрешением, так и числом одновременно выводимых цветов. И PCjr и EGA могут одновременно выводить 16 цветов, причем EGA может выбирать эти 16 из набора 64 цветов. При использовании 16 цветов каждая точка экрана требует четырех бит памяти, поскольку 4 бита могут хранить числа от 0 до 15. По аналогии, четырехцветная графика требует только 2 бита на точку. Двухцветная графика может упаковать представление восьми точек в один байт видеобуфера. Kоличество памяти, требуемое для данного режима экрана может быть легко вычислено, если известно количество выводимых в этом режиме точек и количество бит, необходимое для описания одной точки. Текст легко комбинируется с графикой (BIOS рисует символы на графическом экране) и Вы можете создавать свои специальные символы.


<~-3.3.5 Сводная таблица расширенных кодов.
Содержание
4.1.1 Программирование контроллера дисплея 6845.-~>

Сайт управляется системой uCoz