Справочник программиста на персональном компьютере фирмы 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 может читать и опреде-
лять установку точек в позиции курсора, чтобы узнать какой символ
там содержится.  Символы  располагаются в одной из позиций, соот-
ветствующих  обычным  строкам и столбцам, что означает,  что  они
всегда начинаются на границе кратной восьми точкам.