Справочник программиста на персональном компьютере фирмы IBM. Вывод на терминал - Вывод точечной графики
ОГЛАВЛЕНИЕ
Раздел 4. Вывод точечной графики.
Цветной графический адаптер имеет три графических режима, PCjr
- шесть, а EGA - семь. Как устанавливать эти режимы показано в
[4.1.2]. Требования к размеру памяти существенно отличаются для
различных режимов, в зависимости от разрешения экрана и числа
используемых цветов. В своих улучшенных графических режимах EGA
использует память дисплея совсем по-другому, чем остальные видео-
системы, но он точно эмулирует их использование памяти при работе
в трех общих режимах.
Сначала рассмотрим цветной адаптер и систему PCjr. Два цвета
(черный и белый) требуют только один бит памяти для каждой точки
на экране. Четыре цвета занимают 2 бита, а 16 цветов - 4 (8-цвет-
ные режимы не используются, поскольку три бита, требующиеся для
их представления нельзя удобно разместить в 8 бит байта). Для
всех режимов по вертикали имеется 200 точек. Низкое разрешение
(используемое только на PCjr) использует 160 точек по горизонта-
ли, среднее разрешение - вдвое больше (320 точек) и высокое раз-
решение - еще вдвое больше (640 точек). Число килобайт памяти,
требуемое для каждого режтима приведено в [4.5.3].
В двух- и четырехцветном режимах PCjr имеет выбор любого из 16
доступных цветов. Цветной адаптер более ограничен. В двухцветном
режиме он всегда ограничен белым и черным, а в четырехцветном
режиме только цвет фона может выбираться из 16 цветов, в то время
как основной цвет должен браться только из двух предопределенных
палетт. Палетта 0 содержит коричневый, зеленый и красный цвета, а
палетта 1 - циан, магента и белый.
В отличие от текстовых данных в режимах 4-6 и 8-A графические
данные разбиты на видеостранице на части. В большинстве режимов
данные разбиваются на две части, при этом первая половина буфера
содержит данные для четных строк экрана, а вторая половина -
данные для нечетных строк (строки нумеруются, начиная с верха
экрана вниз). Однако в 16-цветных режимах PCjr буфер размером 32K
делится на четыре части, каждая из которых содержит данные для
каждой четвертой строки.
В 4-цветных режимах первый байт буфера содержит информацию о
самых левых точках строки 0, причем старший бит относится к самой
левой точке. Следующий байт содержит информацию о следующем сег-
менте строки и т.д. Для всей строки требуется 80 байт. 81-й байт
содержит информацию о левом конце строки 2. В 16-цветных режимах
картина приблизительно такая же, но для каждой строки требуется
160 байт и каждая часть буфера содержит данные только для вдвое
меньшего числа строк. Для цветного графического адаптера четные
строки занимают память со смещениями от 0000 до 1F3FH, а нечетные
- от 2000H до 3F3FH. Промежуток между 1F3FH и 2000H игнорируется.
Для PCjr соответствующие ячейки могут существенно различаться, в
зависимости от режима и числа используемых страниц. PCjr спе-
циально устроен таким образом, что вывод в 16K, начинающихся с
сегмента B800H перенаправляется в ту область памяти, где реально
расположен видеобуфер. Это свойство позволяет писать программы,
которые будут одинаково работать на цветном дисплее и PCjr.
Для режимов экрана EGA от DH до 10H память организована совсем
по-другому. Она разделяется на одну, две или четыре битовые плос-
кости, каждая из которых организована так же, как для черно-бело-
го режима высокого разрешения, описанного выше: когда байт данных
посылается в определенный адрес видеобуфера, то каждый бит соот-
ветствует точке на экране, причем они описывают горизонтальный
сегмент строки и бит 7 соответствует самой левой точке. Записы-
ваются четыре таких битовых плоскости, соответствующих одним и
тем же адресам в видеобуфере. Это отводит каждой точке 4 бита,
что позволяет описывать 16 цветов. На рис. 4-4 показаны различные
схемы распределения памяти.
В графическом режиме могут выводиться и символы. Однако они
создаются не обчыным способом, вместо этого BIOS вырисовывает их
поточечно, не изменяя фонового цвета. По этой причине такие вещи
как негативное изображение и мигание символов недоступны в графи-
ческом режиме. Не выводится и курсор. BIOS может читать и опреде-
лять установку точек в позиции курсора, чтобы узнать какой символ
там содержится. Символы располагаются в одной из позиций, соот-
ветствующих обычным строкам и столбцам, что означает, что они
всегда начинаются на границе кратной восьми точкам.