196 Д 00 00 00 00 FF 00 00 00
197 † 18 18 18 18 FF 18 18 18
198 Ж 18 18 1F 18 1F 18 18 18
199 З 36 36 36 36 37 36 36 36
200 И 36 36 37 30 3F 00 00 00
201 Й 00 00 3F 30 37 36 36 36
202 К 36 36 F7 00 FF 00 00 00
203 Л 00 00 FF 00 F7 36 36 36
204 М 36 36 37 30 37 36 36 36
205 Н 00 00 FF 00 FF 00 00 00
206 О 36 36 F7 00 F7 36 36 36
207 П 18 18 FF 00 FF 00 00 00
208 Р 36 36 36 36 FF 00 00 00
209 С 00 00 FF 00 FF 18 18 18
210 Т 00 00 00 00 FF 36 36 36
211 У 36 36 36 36 3F 00 00 00
212 Ф 18 18 1F 18 1F 00 00 00
213 Х 00 00 1F 18 1F 18 18 18
214 Ц 00 00 00 00 3F 36 36 36
215 Ч 36 36 36 36 FF 36 36 36
216 ‡ 18 18 FF 18 FF 18 18 18
217 Щ 18 18 18 18 F8 00 00 00
218 Ъ 00 00 00 00 1F 18 18 18
219 Ы FF FF FF FF FF FF FF FF
220 Ь 00 00 00 00 FF FF FF FF
221 Э F0 F0 F0 F0 F0 F0 F0 F0
222 Ю 0F 0F 0F 0F 0F 0F 0F 0F
223 Я FF FF FF FF 00 00 00 00
224 р 00 00 76 DC CB DC 76 00
225 с 00 78 CC F8 CC F8 C0 C0
226 т 00 CC C0 C0 C0 C0 00 00
227 у 00 FE 6C 6C 6C 6C 6C 00
228 ф FC CC 60 30 60 CC FC 00
229 х 00 00 7E D8 D8 D8 70 00
230 ц 00 66 66 66 66 7C 60 C0
231 ч 00 76 DC 18 18 18 18 00
232 ш FC 30 78 CC CC 78 30 FC
233 щ 38 6C C6 FE C6 6C 38 00
234 ъ 38 6C C6 C6 6C 6C EE 00
235 ы 1C 30 18 7C CC CC 78 00
236 ь 00 00 7E DB DB 7E 00 00
237 э 06 0C 7E DB DB 7E 60 C0
238 ю 38 60 C0 F8 C0 60 38 00
239 я 78 CC CC CC CC CC CC 00
240 Ё 00 FC 00 FC 00 FC 00 00
241 ё 30 30 FC 30 30 00 FC 00
242 Є 60 30 18 30 60 00 FC 00
243 є 18 30 60 30 18 00 FC 00
244 Ї 0E 1B 1B 18 18 18 18 18
245 ї 18 18 18 18 18 D8 D8 70
246 Ў 30 30 00 FC 00 30 30 00
247 ў 00 76 DC 00 76 DC 00 00
248 ° 38 6C 6C 38 00 00 00 00
249 щ 00 00 00 18 18 00 00 00
250 · 00 00 00 00 18 00 00 00
251 ы 0F 0C 0C 0C EC 6C 3C 1C
252 № 78 6C 6C 6C 6C 00 00 00
253 ¤ 70 18 30 60 78 00 00 00
254 ю 00 00 3C 3C 3C 3C 00 00
255 00 00 00 00 00 00 00 00
Раздел 4. Вывод точечной графики.
Цветной графический адаптор имеет три графических режима, PCjr
- шесть, а EGA - семь. Kак устанавливать эти режимы показано в
[4.1.2]. Требования к размеру памяти существенно отличаются для
различных режимов, в зависимости от разрешения экрана и числа
используемых цветов. В своих улучшенных графических режимах EGA
использует память дисплея совсем по-другому, чем остальные видео-
системы, но он точно эмулирует их использование памяти при работе
в трех общих режимах.
Сначала рассмотрим цветной адаптор и систему PCjr. Два цвета
(черный и белый) требуют только один бит памяти для каждой точки
на экране. Четыре цвета занимают 2 бита, а 16 цветов - 4 (8-цвет-
ные режимы не используются, поскольку три бита, требующиеся для
их представления нельзя удобно разместить в 8 бит байта). Для
всех режимов по вертикали имеется 200 точек. Hизкое разрешение
(используемое только на 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 цветов. Hа рис. 4-4 показаны различные
схемы распределения памяти.
В графическом режиме могут выводиться и символы. Однако они
создаются не обчыным способом, вместо этого BIOS вырисовывает их
поточечно, не изменяя фонового цвета. По этой причине такие вещи
как негативное изображение и мигание символов недоступны в графи-
ческом режиме. Hе выводится и курсор. BIOS может читать и опреде-
лять установку точек в позиции курсора, чтобы узнать какой символ
там содержится. Символы располагаются в одной из позиций, соот-
ветствующих обычным строкам и столбцам, что означает, что они
всегда начинаются на границе кратной восьми точкам.
4.4.1 Установка цветов для точечной графики.
PCjr и EGA работают с цветом совсем по-другому, чем цветной
адаптор. Они используют регистры палетты, которые позволяют в
любой момент изменить цвет, который соответствует данному коду
цвета. Вследствие этой разницы мы будем обсуждать эти две системы
отдельно и начнем с цветного адаптора.
Обе системы используют один и тот же основной набор кодов
цвета, который в точности совпадает с используемым в текстовых
режимах:
Hомер кода Цепочка битов Цвет
0 0000 черный
1 0001 синий
2 0010 зеленый
3 0011 циан
4 0100 красный
5 0101 магента
6 0110 коричневый
7 0111 белый
8 1000 серый
9 1001 яркосиний
10 1010 яркозеленый
11 1011 яркий циан
12 1100 розовый
13 1101 яркая магента
14 1110 желтый
15 1111 яркобелый
Для цветного графического адаптора цвет разрешен только в
режиме умеренного разрешения. Для каждой точки отводятся два бита
каждого байта видеобуфера. Четыре возможных комбинации этих битов
представляют один фоновый и три основных цвета. Фоновый цвет
может быть любым из 16. Однако три основных цвета могут выбирать-
ся из одной из двух палетт, каждая из которых содержит только три
предопределенных цвета. Это следующие цвета:
Hомер кода Цепочка битов Палетта 0 Палетта 1
0 00 цвет фона цвет фона
1 01 зеленый циан
2 10 красный магента
3 11 желтый/коричневый белый
Если Вы в какой-то момент переключились между палеттами, то все
выведенные на экран цвета будут соответственно изменены. Единст-
венный способ использовать цвет, не входящий в эти палетты, сос-
тоит в том, чтобы искуственно рассматривать один из цветов палет-
ты как фоновый цвет, что предполагает заполнение этим цветом
всего экрана, когда экран чистится (используйте для этого прямое
отображение в память). После этого истинный фоновый цвет может
показываться "сквозь него" в качестве основного цвета. Такая
техника приводит к созданию границы экрана, аналогичной той, что
изображается в текстовых режимах. В противном случае граница
экрана не может быть выделена цветом, так как весь экран закра-
шивается фоновым цветом, хотя точки относящиеся к области границы
нельзя адресовать. Отметим, что BIOS хранит в своей области дан-
ных однобайтную переменную, которая содержит текущий номер палет-
ты. Ее адрес равен 0040:0066H. Изменение этого числа не меняет
текущую установку палетты; наоборот, если Вы измените цвет палет-
ты другими средствами, помимо функций операционной системы, то
значение этой переменной будет модифицировано.
Символы могут перемешиваться с точечной графикой. Цвет, кото-
рым будут выводиться символы, зависит от того, какую фукнцию Вы
будете использовать для их вывода. Простейшая функция по умолча-
нию использует третий цвет текущей палетты. Однако имеется ряд
способов использовать любой из цветов палетты, а также выводить
символы различными цветами. Смотрите обсуждение в [4.1.3].
EGA и PCjr обеспечивают добавочную гибкость в использовании
атрибутов цвета, независимо от того, в каком режиме они работают.
При 16-цветной графике четыре бита, находящиеся в памяти для
каждой точки экрана дают цепочку битов, которая не переводится
прямо в соответствующие цвета приведенной таблицы. Вместо этого