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