ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.07.2020
Просмотров: 3183
Скачиваний: 1
0, то данные, определяемые пользователем переносятся из памяти в
специальный блок символов. Когда AL равен 1 или 2, то наборы
данных для символов 8*14 и 8*8 соответственно копируются из ПЗУ в
блок символов. Когда AL равен 3, то функция устанавливает назна-
чение блока в регистре выбора карты символов, как описано выше. В
последнем случае надо просто поместить соотвествующие данные в BL
и вызвать функцию. Для загрузки данных из ПЗУ поместите номер
блока в BL и выполните функцию. Для загрузки своих данных надо
чтобы ES:BP указывали на них, число передаваемых символов должно
быть в CX, смещение (номер символа) в блоке должно быть в DX,
число байтов на символ - в BH, а номер блока - в BL. После этого
вызывайте прерывание 10H. Вот пример:
;---устанавливаем 128 пользовательских символов в блоке 0
MOV AX,SEG CHARACTER_DATA ;ES:BP должны указывать на данные
MOV ES,AX ;
MOV BP,OFFSET CHARACTER_DATA ;
MOV CX,128 ;число символов
MOV DX,128 ;начальное смещение
MOV BL,0 ;номер блока
MOV BH,8 ;матрица 8*8
MOV AL,1 ;номер подфункции
MOV AH,11H ;номер функции
INT 10H ;переносим данные
4.3.5 Сводка данных для описания символов.
Ниже приведены 8-байтные последовательности, необходимые для
описания символов для цветного графического адаптора. Их исполь-
зование объяснено в [4.3.4].
Код ASCII Символ Последовательность (16-ная)
128 А 78 CC C0 CC 78 18 0C 78
129 Б 00 CC 00 CC CC CC 7E 00
130 В 1C 00 78 CC FC C0 78 00
131 Г 7E C3 3C 06 3E 66 3F 00
132 Д CC 00 78 0C 7C CC 7E 00
133 Е E0 00 78 0C 7C CC 7E 00
134 Ж 30 30 78 0C 7C CC 7E 00
135 З 00 00 78 0C 7C CC 7E 00
136 И 7E C3 3C 66 7E 60 3C 00
137 Й CC 00 78 CC FC C0 78 00
138 К E0 00 78 CC FC C0 78 00
139 Л CC 00 70 30 30 30 78 00
140 М 7C C6 38 18 18 18 3C 00
141 Н E0 00 70 30 30 30 78 00
142 О C6 38 6C C6 FE C6 C6 00
143 П 30 30 00 78 CC FC CC 00
144 Р 1C 00 FC 60 78 60 FC 00
145 С 00 00 7F 0C 7F CC 7F 00
146 Т 3E 6C CC FE CC CC CE 00
147 У 78 CC 00 78 CC CC 78 00
148 Ф 00 CC 00 78 CC CC 78 00
149 Х 00 E0 00 78 CC CC 78 00
150 Ц 78 CC 00 CC CC CC 7E 00
151 Ч 00 E0 00 CC CC CC 7E 00
152 Ш 00 CC 00 CC CC 7C 0C F8
153 Щ C3 18 3C 66 66 3C 18 00
154 Ъ CC 00 CC CC CC CC 78 00
155 Ы 18 18 7E C0 C0 7E 18 18
156 Ь 38 6C 64 F0 60 E6 FC 00
157 Э CC CC 78 FC 30 FC 30 30
158 Ю F8 CC CC FA C6 CF C6 C7
159 Я 0E 1B 18 3C 18 18 D8 70
160 а 1C 00 78 00 7C CC 7E 00
161 б 38 00 70 30 30 30 78 00
162 в 00 1C 00 78 CC CC 78 00
163 г 00 1C 00 CC CC CC 7E 00
164 д 00 F8 00 F8 CC CC CC 00
165 е FC 00 CC EC FC DC CC 00
166 ж 3C 6C 6C 3E 00 7E 00 00
167 з 38 6C 6C 38 00 7C 00 00
168 и 30 00 30 60 C0 CC 78 00
169 й 00 00 00 FC C0 C0 00 00
170 к 00 00 00 FC 0C 0C 00 00
171 л C3 C6 CC DE 33 66 CC 0F
172 м C3 C6 CC DB 37 6F CF 03
173 н 18 18 00 18 18 18 18 00
174 о 00 33 66 CC 66 33 00 00
175 п 00 CC 66 33 66 CC 00 00
176 ° 22 88 22 88 22 88 22 88
177 ± 55 AA 55 AA 55 AA 55 AA
178 І DB 77 DB EE DB 77 DB EE
179 і 18 18 18 18 18 18 18 18
180 ґ 18 18 18 18 F8 18 18 18
181 µ 18 18 F8 18 F8 18 18 18
182 ¶ 36 36 36 36 F6 36 36 36
183 · 00 00 00 00 FE 36 36 36
184 ё 00 00 F8 18 F8 18 18 18
185 № 36 36 F6 06 F6 36 36 36
186 є 36 36 36 36 36 36 36 36
187 » 00 00 FE 06 F6 36 36 36
188 ј 36 36 F6 06 FE 00 00 00
189 Ѕ 36 36 36 36 FE 00 00 00
190 ѕ 18 18 F8 18 F8 00 00 00
191 ї 00 00 00 00 F7 18 18 18
192 А 18 18 18 18 1F 00 00 00
193 Б 18 18 18 18 FF 00 00 00
194 В 00 00 00 00 FF 18 18 18
195 Г 18 18 18 18 1F 18 18 18
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 - семь. Как устанавливать эти режимы показано в
[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 может читать и опреде-
лять установку точек в позиции курсора, чтобы узнать какой символ
там содержится. Символы располагаются в одной из позиций, соот-
ветствующих обычным строкам и столбцам, что означает, что они
всегда начинаются на границе кратной восьми точкам.
4.4.1 Установка цветов для точечной графики.
PCjr и EGA работают с цветом совсем по-другому, чем цветной
адаптор. Они используют регистры палетты, которые позволяют в
любой момент изменить цвет, который соответствует данному коду
цвета. Вследствие этой разницы мы будем обсуждать эти две системы
отдельно и начнем с цветного адаптора.
Обе системы используют один и тот же основной набор кодов
цвета, который в точности совпадает с используемым в текстовых
режимах:
Номер кода Цепочка битов Цвет
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. Однако три основных цвета могут выбирать-
ся из одной из двух палетт, каждая из которых содержит только три
предопределенных цвета. Это следующие цвета:
Номер кода Цепочка битов Палетта 0 Палетта 1
0 00 цвет фона цвет фона
1 01 зеленый циан
2 10 красный магента
3 11 желтый/коричневый белый
Если Вы в какой-то момент переключились между палеттами, то все
выведенные на экран цвета будут соответственно изменены. Единст-
венный способ использовать цвет, не входящий в эти палетты, сос-
тоит в том, чтобы искуственно рассматривать один из цветов палет-
ты как фоновый цвет, что предполагает заполнение этим цветом
всего экрана, когда экран чистится (используйте для этого прямое
отображение в память). После этого истинный фоновый цвет может
показываться "сквозь него" в качестве основного цвета. Такая
техника приводит к созданию границы экрана, аналогичной той, что
изображается в текстовых режимах. В противном случае граница
экрана не может быть выделена цветом, так как весь экран закра-
шивается фоновым цветом, хотя точки относящиеся к области границы
нельзя адресовать. Отметим, что BIOS хранит в своей области дан-
ных однобайтную переменную, которая содержит текущий номер палет-
ты. Ее адрес равен 0040:0066H. Изменение этого числа не меняет
текущую установку палетты; наоборот, если Вы измените цвет палет-
ты другими средствами, помимо функций операционной системы, то
значение этой переменной будет модифицировано.
Символы могут перемешиваться с точечной графикой. Цвет, кото-
рым будут выводиться символы, зависит от того, какую фукнцию Вы
будете использовать для их вывода. Простейшая функция по умолча-
нию использует третий цвет текущей палетты. Однако имеется ряд
способов использовать любой из цветов палетты, а также выводить
символы различными цветами. Смотрите обсуждение в [4.1.3].
EGA и PCjr обеспечивают добавочную гибкость в использовании
атрибутов цвета, независимо от того, в каком режиме они работают.
При 16-цветной графике четыре бита, находящиеся в памяти для
каждой точки экрана дают цепочку битов, которая не переводится
прямо в соответствующие цвета приведенной таблицы. Вместо этого
каждый номер относится к одному из 16 регистров палетты. Каждый
из этих регистров содержит цепочку битов, соответствующую цвету,
который будет выводиться на самом деле. Если все 16 регистров
будут содержать 0100, то независимо от того, какой атрибут будет
приписан точке в памяти, она будет выведена красным цветом. Зна-
чение в регистре 0 используется в качестве фонового цвета. На
рис. 4-1 в [4.1.3] показан этот механизм. В двух- и четырехцвет-
ном режимах используются только первые два или четыре регистра
палетты.
Регистры палетты позволяют программе изменить все выводимое в
одном цвете на другой, не делая никаких изменений в видеобуфере.
Более того отдельные объекты могут появляться и исчезать как по
волшебству. Это делается изменением значения, содержащегося в
регистре палетты, соответствующему данному объекту, на значение