Введение

В этой книге рассмотрены три наиболее распространенные в настоящее время типа видеоадаптеров - CGA, EGA и VGA.

Подробно описана архитектура этих видеоадаптеров, их регистры. Для каждого регистра воспроизводится его формат и описывается назначение. В наиболее интересных случаях представлены программы, использующие непосредственный доступ к регистрам. Благодаря этому читатель сможет получить на экране своего компьютера видеоэффекты, недоступные при использовании только функций BIOS или функций библиотек трансляторов языков высокого уровня.

Читателю предоставляется возможность подробно рассмотреть стандартные режимы работы видеоадаптеров, структуру видеопамяти в этих режимах. Знание структуры видеопамяти позволяет создавать программы, отображающие информацию на экране путем непосредственного доступа к видеопамяти. А это, в свою очередь, важно при создании быстрых видеопрограмм, в частности, динамических игр и графических редакторов.

В качестве примера рассмотрены два не стандартных режима видеоадаптера VGA. Эти режимы не поддерживаются функциями BIOS и позволяют в режиме с 256 цветами иметь большую разрешающую способность.

Далее в книге излагаются традиционные методы управления видеоадаптерами. Приведен обзор всех прерываний и функций BIOS, предназначенных для работы с видеоадаптерами. Описываются также наиболее важные функции cтандартных библиотек трансляторов Microsoft Quick C 2.5 и C 6.0. Применение каждой группы функций иллюстрируется примерами программ.

Большое количество программ, составленных с использованием таких распространенных языков программирования, как Си и ассемблер, значительно облегчают понимание материала, изложенного в книге.

Книга предназначена для специалистов по вычислительной технике, системных и прикладных программистов, студентов вузов, специализирующихся на вычислительной технике.

Для лучшего понимания материала, изложенного в книге, желательно знакомство с языками Си и ассемблер.

Соглашения, принятые при изложении материала

При описании регистров мы используем следующее соглашение относительно нумерации отдельных битов регистров:

D7 D6 D5 D4 D3 D2 D1 D0

Биты в байте нумеруются справа налево. Бит D7 является старшим, а бит D0 - младшим битами.

Пролог

Изначально персональные компьютеры серии IBM PC комплектовались видеоадаптером MDA (Monochrome Display Adapter) с монохромным дисплеем (MD). Этот адаптер имел небольшую разрешающую способность, не мог отображать графическую информацию и был, как это следует из названия, монохромным. Через некоторое время небольшая фирма Hercules Computer Technology, Inc. выпустила монохромный видеоадаптер Hercules, который уже имел возможность вывода графики и обеспечивал большую разрешающую способность.

CGA (Color Graphics Array) стал первым цветным видеоадаптером фирмы IBM. Он уже обеспечивал возможность отображать цветную графическую и текстовую информацию, но имел слишком маленькую, даже по сравнению со своими предшественниками - MDA и Hercules, разрешающую способность.

Затем фирма IBM выпустила два, наиболее распространенных в настоящее время, видеоадаптера - EGA (Enhanced Graphics Array) и VGA (Video Graphics Array). Они созданы на другой элементной базе и имеют лучшую, чем у CGA, разрешающую способность, при большем числе отображаемых цветов.

В последнее время различные фирмы - производители видеоадаптеров выпустили большое количество плат, превосходящих по своим возможностям VGA. Эти платы, которые можно объеденить общим названием Super VGA, не имеют пока единого стандарта.

Сейчас фирма IBM начала выпуск нового видеоадаптера XGA (Extended Graphics Array), который, как предполагается, станет новым стандартом для высокопроизводительных компьютеров на основе процессоров Intel 80386/486. Видеоадаптер содержит встроенный графический процессор, что позволяет значительно увеличить его возможности и скорость работы. XGA апаратно поддерживает перерисовку изображений в окнах экрана. При обмене данными между видеопамятью и основной памятью компьютера, XGA вместо процессора реализует управление шиной данных, что позволяет быстро передавать изображение на экран.

Следует также отметить, что предусмотрена совместимость видеоадаптеров VGA и XGA на уровне регистров.

Базовая конфигурация XGA содержит 512К байт видеопамяти, что обеспечивает разрешение 1024 пиксела по горизонтали на 768 пикселов по вертикали при 16 цветах. Увеличение объема видеопамяти до 1М байта при той же разрешающей способности позволяет получить 256 цветов. Существует также режим, в котором при обычном для VGA разрешении, XGA может отображать 65536 цветов.