Цветной графический адаптер ( CGA ), первоначально также называвшийся цветным графическим адаптером или цветным графическим мониторным адаптером IBM [1] , представленный в 1981 году, был первой цветной графической картой IBM для IBM PC и фактически стал стандартом компьютерных дисплеев .
Оригинальная графическая карта IBM CGA была построена на базе контроллера дисплея Motorola 6845 [2] , имела 16 килобайт встроенной видеопамяти и поддерживала несколько графических и текстовых режимов . Максимальное разрешение дисплея в любом режиме составляло 640 × 200, а максимальная поддерживаемая глубина цвета составляла 4 бита (16 цветов).
Карту CGA можно было подключить либо к монитору с прямым приводом на основе ЭЛТ с использованием 4-битного цифрового ( TTL ) интерфейса RGBI , например, цветного дисплея IBM 5153 , либо к NTSC -совместимому телевизору или композитному видеомонитору через разъем RCA . [3] Разъем RCA обеспечивал только видеосигнал в основной полосе частот, поэтому для подключения карты CGA к телевизору без композитного видеовхода требовался отдельный радиочастотный модулятор . [1]
IBM выпустила цветной дисплей для персонального компьютера 5153 для использования с CGA, но он не был доступен на момент выпуска [4] и не был выпущен до марта 1983 года. [5]
Хотя собственный цветной дисплей IBM не был доступен, клиенты могли использовать либо композитный выход (с радиочастотным модулятором, если необходимо), либо выход прямого привода с доступными сторонними мониторами, которые поддерживали формат RGBI и скорость сканирования. Некоторые сторонние дисплеи не имели входного сигнала интенсивности, что сокращало количество доступных цветов до восьми, [4] и многие также не имели уникальной схемы IBM, которая отображала темно-желтый цвет как коричневый, поэтому любое программное обеспечение, использующее коричневый, отображалось некорректно.
CGA предлагала несколько видеорежимов. [6] [7]
Графические режимы:
Некоторое программное обеспечение достигало большей глубины цвета за счет использования артефактного цвета при подключении к композитному монитору.
Текстовые режимы:
IBM предполагала, что CGA будет совместим с домашним телевизором. Режимы текста 40 × 25 и графики 320 × 200 можно использовать с телевизором, а режимы текста 80 × 25 и графики 640 × 200 предназначены для монитора. [2]
CGA использует 4-битную RGBI 16-цветную гамму , но не все цвета доступны в любое время, в зависимости от используемого графического режима. В режимах среднего и высокого разрешения цвета хранятся с меньшей битовой глубиной и выбираются фиксированными индексами палитры, а не прямым выбором из полной 16-цветной палитры.
При использовании четырех бит (для режима низкого разрешения или для программирования регистров цвета) они располагаются в соответствии с цветовой моделью RGBI : [8]
Эти четыре бита цвета затем интерпретируются монитором или преобразуются в цвета NTSC (см. ниже).
При использовании монитора с прямым приводом четыре бита цвета выводятся непосредственно на разъем DE-9 на задней стороне карты.
В мониторе четыре сигнала интерпретируются для управления красным, зеленым и синим цветными пистолетами. Что касается цветовой модели RGBI, описанной выше, монитор будет переводить цифровое четырехбитное число цвета в семь различных аналоговых напряжений в диапазоне от 0,0 до 1,0 для каждого пистолета. [10]
Цвет 6 обрабатывается особым образом; обычно цвет 6 становится темно-желтым , как показано слева, но для достижения более приятного коричневого тона специальная схема в большинстве мониторов RGBI, начиная с цветного дисплея IBM 5153, [11] делает исключение для цвета 6 и изменяет его оттенок с темно-желтого на коричневый, уменьшая амплитуду аналогового зеленого сигнала. Точная величина уменьшения различалась между моделями мониторов: оригинальный цветной дисплей персонального компьютера IBM 5153 уменьшает амплитуду зеленого сигнала примерно на треть, [12] в то время как улучшенный цветной дисплей IBM 5154 внутренне преобразует все 4-битные цветовые числа RGBI в 6-битные цветовые числа ECD, [8] что равнозначно уменьшению амплитуды зеленого сигнала вдвое. Мониторы Tandy CM-2, [13] CM-4 [14] и CM-11 [15] оснащены потенциометром с надписью «BROWN ADJ.» для регулировки величины уменьшения зеленого сигнала.
Эта палитра «RGBI с измененным коричневым» была сохранена в качестве палитры по умолчанию для более поздних стандартов графики ПК, таких как EGA и VGA , которые могут выбирать цвета из гораздо более широких цветовых гамм, но по умолчанию используют их до тех пор, пока не будут перепрограммированы.
Более поздние видеокарты/мониторы в режимах эмуляции CGA приблизительно рассчитывали цвета по следующей формуле:
красный := 2/3×( номер_цвета & 4)/4 + 1/3×( номер_цвета & 8)/8 зеленый := 2/3×( номер_цвета & 2)/2 + 1/3×( номер_цвета & 8)/8 синий := 2/3×( номер_цвета & 1)/1 + 1/3×( номер_цвета & 8)/8если (цвет == 6) зеленый := зеленый * 2/3
что дает каноническую палитру CGA: [10]
Для композитного выхода эти четырехбитные цветовые числа кодируются встроенным оборудованием CGA в NTSC-совместимый сигнал, подаваемый на выходной разъем RCA карты. По соображениям стоимости это делается не с помощью преобразователя RGB в YIQ , как того требует стандарт NTSC, а с помощью серии триггеров и линий задержки. [16] [17]
Следовательно, видимые оттенки лишены чистоты; в частности, и голубой, и желтый имеют зеленоватый оттенок, а цвет 6 снова выглядит темно-желтым, а не коричневым. [18]
Относительные яркости цветов, создаваемых составной схемой генерации цвета, различаются между ревизиями CGA: они идентичны для цветов 1-6 и 9-14 в ранних CGA, выпущенных до 1983 года, [19] и отличаются для более поздних CGA из-за добавления дополнительных резисторов. [20]
CGA предлагает четыре текстовых режима BIOS ( режимы с 0 по 3 , называемые буквенно-цифровыми или режимами A/N в документации IBM). В этих режимах отдельные пиксели на экране не могут быть адресованы напрямую. Вместо этого экран разделен на сетку ячеек символов, каждая из которых отображает символ, определенный в одном из двух растровых шрифтов, «нормальном» и «тонком», включенных в ПЗУ карты. Шрифты фиксированы и не могут быть изменены или выбраны из программного обеспечения, только с помощью перемычки на самой плате.
Шрифты хранятся в виде растровых изображений с глубиной цвета 1 бит, где "1" представляет символ, а "0" - фон. Эти цвета можно выбирать независимо для каждого символа на экране из полной 16-цветной палитры CGA. Набор символов определяется аппаратной кодовой страницей 437 .
Данные о битовой карте шрифта доступны только самой карте, они не могут быть прочитаны процессором. В графических режимах текстовый вывод BIOS осуществляется путем побитового копирования текста из ПЗУ шрифта в видеопамять.
Режимы BIOS 0 и 1 — это текстовые режимы 40 столбцов на 25 строк, где каждый символ — это шаблон из 8×8 точек. Эффективное разрешение экрана в этом режиме составляет 320 × 200 пикселей ( соотношение сторон пикселя 1:1,2). Карта имеет достаточно видеопамяти для восьми различных текстовых страниц в этом режиме.
Разницу между этими двумя режимами можно увидеть только на композитном мониторе, где режим 0 отключает цветовую вспышку, заставляя весь текст отображаться в оттенках серого. Режим 1 включает цветовую вспышку, позволяя использовать цвет. Режим 0 и режим 1 функционально идентичны на мониторах RGB и на более поздних адаптерах, которые эмулируют CGA без поддержки композитного цветного вывода.
BIOS Modes 2 и 3 выбирают текстовые режимы 80 столбцов по 25 строк, при этом каждый символ по-прежнему представляет собой точечный шаблон 8×8, но отображается с более высокой скоростью сканирования. Эффективное разрешение экрана в этом режиме составляет 640 × 200 пикселей. В этом режиме карта имеет достаточно видеопамяти для четырех различных текстовых страниц.
Как и в режимах текста на 40 столбцов, режим 2 отключает цветовую вспышку в композитном сигнале, а режим 3 включает ее.
Каждая ячейка символа хранит четыре бита для цвета переднего плана и фона. Однако в конфигурации карты по умолчанию четвертый бит цвета фона не задает интенсивность, а задает атрибут мерцания для ячейки. Все символы на экране с этим установленным битом будут периодически мигать, то есть их цвет переднего плана будет изменен на цвет фона, так что символ станет невидимым. Все символы мигают в унисон.
Установив аппаратный регистр, можно отключить функцию мерцания, восстановив доступ к фоновым цветам высокой интенсивности.
Все мигающие символы на экране мигают синхронно. Эффект атрибута мигания включен по умолчанию, а эффект высокоинтенсивного фона отключен; отключение мигания — единственный способ свободно выбирать последние восемь индексов цветов (8-15) для цвета фона.
Примечательно, что языки программирования GW-BASIC и Microsoft QBASIC , включенные в MS-DOS, поддерживали все текстовые режимы CGA с полным управлением цветом, но не предоставляли нормальных средств через язык BASIC для переключения CGA из режима мерцания в режим 16-цветного фона. Однако это все еще было возможно путем прямого программирования аппаратных регистров с использованием оператора OUT языка BASIC.
CGA предлагает графические режимы с тремя разрешениями: 160 × 100, 320 × 200 и 640 × 200. Во всех режимах каждый пиксель на экране может быть настроен напрямую, но глубина цвета для более высоких режимов не позволяет свободно выбирать из полной 16-цветной палитры.
Режим низкого разрешения 160 × 100 использует 16-цветную палитру и настроен как режим 80 × 25 символов ( режим 3 ), но использует графику, отображенную в память, на 16 КБ памяти. [21]
В режимах среднего разрешения 320 × 200 ( режимы 4 и 5 ) каждый пиксель — это два бита, которые выбирают цвета из четырехцветной палитры. В режиме 4 есть две палитры, а в режиме 5 — одна палитра.
Несколько вариантов выбора можно сделать, программируя аппаратные регистры. Во-первых, выбранная палитра. Во-вторых, интенсивность, которая определяется для всего экрана, а не попиксельно. В-третьих, цвет 0 (цвет «фона») может быть установлен на любой из 16 цветов.
Конкретный графический режим BIOS влияет на то, какие палитры доступны. BIOS Mode 4 предлагает две палитры: зеленая/красная/коричневая и голубая/пурпурная/белая.
Как и в текстовых режимах 0 и 2, режим 5 отключает цветовую вспышку, позволяя цветам отображаться в оттенках серого на композитном мониторе. Однако, в отличие от текстовых режимов, это также влияет на цвета, отображаемые на мониторе RGBI, изменяя их на палитру циан/красный/белый, показанную выше. Эта палитра не документирована IBM, но использовалась в некотором программном обеспечении.
В режиме высокого разрешения 640 × 200 ( режим 6 ) каждый пиксель представляет собой один бит, предоставляя два цвета, которые можно выбрать из 16-цветной палитры путем программирования аппаратных регистров.
В этом режиме видеоизображение сохраняется как простое растровое изображение, с одним битом на пиксель, устанавливающим цвет на «передний план» или «фоновый». По умолчанию цвета — черный и ярко-белый, но цвет переднего плана можно изменить на любой элемент в 16-цветной палитре CGA. Цвет фона нельзя изменить с черного на оригинальной карте IBM CGA.
Этот режим по умолчанию отключает композитный сигнал цветовой синхронизации. BIOS не предоставляет возможности включить цветовую синхронизацию в режиме 640 × 200, и пользователь должен напрямую записать в регистр управления режимом, чтобы включить ее.
Существует ряд официальных и неофициальных функций, которые можно использовать для достижения специальных эффектов.
Некоторые из этих настроек можно комбинировать. Примеры можно найти в нескольких играх. [24]
Технически этот режим не является графическим режимом, а представляет собой модификацию текстового режима 80 × 25. Регистр высоты ячейки символа изменен для отображения только двух строк на ячейку символа вместо обычных восьми строк. Это учетверяет количество отображаемых строк текста с 25 до 100. Эти «плотно сжатые» текстовые символы не являются полноценными символами. Система отображает только их верхние две строки пикселей (по восемь в каждой) перед переходом к следующей строке.
Символ 221 набора символов CGA состоит из прямоугольника, занимающего всю левую половину матрицы символов. (Символ 222 состоит из прямоугольника, занимающего всю правую половину.)
Поскольку каждому символу можно назначить разные цвета переднего плана и фона, его можно раскрасить (например) в синий цвет слева (цвет переднего плана) и ярко-красный справа (цвет фона). Это можно изменить, поменяв местами цвета переднего плана и фона.
Используя либо символ 221, либо 222, каждая половина каждой усеченной ячейки символа может, таким образом, рассматриваться как отдельный пиксель — делая 160 горизонтальных пикселей доступными на строку. Таким образом, возможны 160 × 100 пикселей в 16 цветах с соотношением сторон 1:1.2.
Хотя это и окольный путь достижения 16-цветного графического дисплея, он работает довольно хорошо, и этот режим даже упоминается (хотя и не объясняется) в официальной документации IBM по оборудованию. [25] Этот режим использовался еще в 1983 году в игре Moon Bugs . [26] [27] [28] [29]
Больше деталей можно получить в этом режиме, используя других персонажей, комбинируя ASCII-арт с вышеупомянутой техникой. Это было исследовано Macrocom, Inc в двух играх: Icon: Quest for the Ring (выпущена в 1984 году) и The Seven Spirits of Ra (выпущена в 1987 году). [29] [30] [31] [32] [33]
Тот же метод уменьшения высоты текстовой ячейки можно использовать и в текстовом режиме 40 × 25, что даст разрешение 80 × 100.
Использование композитного выхода вместо монитора RGBI приводило к получению видео более низкого качества из-за худшего разделения яркости и цветности в NTSC. [34] Это особенно касается текста в 80 столбцов: [35]
По этой причине каждый из текстовых и графических режимов имеет дублирующий режим, который отключает композитный цветовой пакет , что приводит к черно-белому изображению, но также устраняет цветовое искажение для получения более четкого изображения. На мониторах RGBI две версии каждого режима обычно идентичны, за исключением графического режима 320 × 200, где «монохромная» версия создает третью палитру.
Программисты обнаружили, что этот недостаток можно превратить в преимущество, поскольку отдельные узоры точек с высоким разрешением превращались в последовательные области сплошных цветов, что позволяло отображать совершенно новые цвета артефактов . С помощью этой техники можно было использовать как стандартный четырехцветный режим 320 × 200, так и цветной режим 640 × 200 на черном.
Прямые цвета — это обычные 16 цветов, описанные выше в разделе «Цветовая палитра CGA».
Артефактные цвета видны, потому что декодер цветности NTSC композитного монитора неправильно интерпретирует часть информации о яркости как цвет. Тщательно размещая пиксели в соответствующих шаблонах, программист может создавать определенные перекрестные цветовые артефакты, дающие желаемый новый цвет; либо из чисто черно-белых пикселей в режиме 640 × 200, либо в результате комбинации прямых и артефактных цветов в режиме 320 × 200, как показано на следующих рисунках :
Таким образом, благодаря возможности выбора между режимами 320 × 200 и 640 × 200, выбора между двумя палитрами и одного свободно выбираемого цвета (фон в режимах 320 × 200 и передний план в режиме 640 × 200) можно использовать множество различных наборов артефактных цветов, что позволяет получить общую гамму из более чем 100 цветов.
Более поздние демонстрации энтузиастов увеличили максимальное количество цветов, которые CGA может отображать одновременно, до 1024. [36] [37] Эта техника включает в себя настройку текстового режима, которая учетверяет количество текстовых строк. Затем определенные символы ASCII, такие как U и ‼, используются для создания необходимых шаблонов, которые приводят к неразмытым изображениям с эффективным разрешением 80 × 100 на композитном мониторе. [38]
160 циклов цветовых часов NTSC происходят во время вывода каждой строки, поэтому в режиме 40 столбцов каждый пиксель занимает половину цикла, а в режиме 80 столбцов каждый пиксель использует четверть цикла. Ограничивая отображение символов верхними одной или двумя строками сканирования и используя преимущества расположения пикселей в определенных символах кодовой страницы 437 , можно отображать до 1024 цветов. [36] Эта техника использовалась в демо 8088 MPH . [37]
Вариант 320 × 200 этой техники (см. выше) — это то, как выглядит стандартный поддерживаемый BIOS графический режим на композитном цветном мониторе. Однако вариант 640 × 200 требует модификации бита (отключения цветовой синхронизации) непосредственно в аппаратных регистрах CGA. В результате его обычно называют отдельным «режимом».
Поскольку композитные цветовые артефакты полностью зависят от процесса кодирования/декодирования NTSC, они недоступны на мониторе RGBI и не эмулируются EGA, VGA или современными графическими адаптерами.
Современный, ориентированный на игры эмулятор ПК DOSBox поддерживает режим CGA, который может эмулировать артефакты цвета композитного монитора. Поддерживаются как композитный режим 640 × 200, так и более сложный вариант 320 × 200.
Композитный артефакт, используемый намеренно или как нежелательный артефакт, снижает эффективное горизонтальное разрешение до максимума в 160 пикселей, больше для черного на белом или белого на черном тексте, не изменяя вертикальное разрешение. Полученный композитный видеодисплей с «артефактными» цветами иногда описывается как «режим» 160 × 200 / 16-цветный, хотя технически это был метод, использующий стандартный режим.
Низкое разрешение этого метода композитного цветового артефакта привело к тому, что он использовался почти исключительно в играх. Многие громкие названия предлагали графику, оптимизированную для композитных цветных мониторов. Ultima II , первая игра в серии игр, портированная на IBM PC, использовала композитную графику CGA. King's Quest I также предлагала 16-цветную графику на PC, PCjr и Tandy 1000, но предоставляла «режим RGB» на титульном экране, который использовал только обычный графический режим CGA, ограниченный 4 цветами.
Видеосинхронизация на CGA обеспечивается видеоконтроллером Motorola 6845. Эта интегральная схема изначально была разработана только для буквенно-цифровых (текстовых) дисплеев и может адресовать максимум 128 строк символов.
Для реализации графических режимов с 200 строками развертки на CGA, MC6845 программируется с 100 строками символов на изображение и двумя строками развертки на строку символов. Поскольку адрес видеопамяти, выводимый MC6845, идентичен для каждой строки развертки в строке символов, CGA должен использовать вывод "адреса строки" MC6845 (т. е. строку развертки в строке символов) в качестве дополнительного адресного бита для извлечения растровых данных из видеопамяти. [39]
Это означает, что если размер растровых данных одной строки развертки не является степенью двойки, растровые данные не могут быть размещены непрерывно в видеопамяти. Вместо этого графические режимы на CGA хранят четные строки развертки непрерывно в памяти, за которыми следует второй блок нечетных строк развертки, начиная с позиции видеопамяти 8192. Такое расположение приводит к дополнительным накладным расходам в графических режимах для программного обеспечения, которое манипулирует видеопамятью.
Несмотря на то, что видеоконтроллер MC6845 может обеспечить синхронизацию для чересстрочного видео , схема CGA выравнивает сигналы синхронизации таким образом, что сканирование всегда прогрессивное. Следовательно, невозможно удвоить вертикальное разрешение до 400 строк сканирования, используя стандартный монитор 15 кГц.
Более высокая пропускная способность, используемая 80-колоночным текстовым режимом, приводит к появлению случайных коротких горизонтальных линий на экране (известных как «снег»), если программа записывает данные непосредственно в видеопамять во время рисования экрана. BIOS избегает этой проблемы, обращаясь к памяти только во время горизонтального обратного хода или временно отключая вывод во время прокрутки. Хотя это и приводит к мерцанию дисплея, IBM решила, что это лучше, чем снег. [2] Проблема «снега» не возникает ни на каком другом видеоадаптере или на большинстве клонов CGA.
В текстовом режиме с 80 столбцами частота пиксельных часов удваивается, и все сигналы синхронизации выводятся в течение удвоенного количества тактов, чтобы длиться в течение их надлежащей продолжительности. Исключением является схема сигнала цветовой синхронизации композитного выхода : поскольку он по-прежнему выводит то же количество циклов, теперь с удвоенной тактовой частотой, производимый сигнал цветовой синхронизации слишком короток для большинства мониторов, что приводит к отсутствию или нестабильности цвета. Поэтому в документации IBM режим текста с 80 столбцами указан как «функция» только для RGBI и черно-белых композитных мониторов. [40] Стабильный цвет все еще может быть достигнут путем установки цвета границы на коричневый, что приводит к созданию фазы, идентичной правильному сигналу цветовой синхронизации , и служит его заменой.
CGA был выпущен вместе с IBM MDA и фактически мог быть установлен вместе с MDA на том же компьютере. Команда, включенная в PC DOS, позволяла переключать вывод дисплея между картами CGA и MDA. [41] Некоторые программы, такие как ранние версии AutoCAD для MS-DOS, поддерживали использование обоих дисплеев одновременно.
CGA широко поддерживался в программном обеспечении ПК вплоть до 1990-х годов. Некоторые из программ, которые поддерживали плату, были:
BYTE в январе 1982 года описал вывод CGA как «очень хороший — немного лучше, чем цветная графика на существующих микрокомпьютерах». [4] PC Magazine не согласился, сообщив в июне 1983 года, что «монохромный дисплей IBM абсолютно прекрасен для текста и замечательно приятен для глаз, но ограничен простой символьной графикой. Качество текста на дисплеях, подключенных к цветному/графическому адаптеру... в лучшем случае среднее и способствует напряжению глаз в долгосрочной перспективе». [43]
В ретроспективном комментарии Next Generation также негативно отозвалась о CGA, заявив: «Даже для того времени (начало 1980-х годов) эта графика была ужасной и бледнела по сравнению с другими цветными машинами, доступными на рынке». [44]
У CGA было несколько конкурентов:
Другие альтернативы:
На смену карте CGA в потребительском секторе пришла карта Enhanced Graphics Adapter (EGA) от IBM, которая поддерживает большинство режимов CGA и добавляет дополнительное разрешение (640 × 350), а также программно выбираемую палитру из 16 цветов из 64 как в текстовом, так и в графическом режимах.
Цветной графический адаптер использует стандартный разъем DE-9 для прямого видео (к монитору RGBI). Разъем на карте — гнездовой, а на кабеле монитора — штекерный.
Адаптер цветной графики использует стандартный разъем RCA для подключения к телевизору или композитному видеомонитору , совместимому с NTSC . [3] Разъем на карте — гнездовой, а на кабеле монитора — штекерный.
Палитра CGA, представленная композитным выходом ранней («старого образца») карты
Основная проблема возникает, когда сигнал яркости ... содержит частотные компоненты, которые попадают в диапазон цветности.
Резкие переходы от черного к белому ... содержат частотные компоненты ..., а те, что в полосе цветности, создают перекрестную цветность.