Компьютер - электронное устройство, которое не заменит человека до тех пор, пока не научится смеяться шуткам начальника и сваливать свои собственные ошибки на соседний компьютер.




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 синий
  &nb