EGA
EGA | |
---|---|
![]() Видеокарта EGA (клон фирмы Paradise) | |
![]() |
EGA (англ. Enhanced Graphics Adapter — Усовершенствованный графический адаптер) — стандарт видеоадаптеров и мониторов для IBM PC, расположенный между CGA и VGA по своим характеристикам (цветовое и пространственное разрешение). Выпущен IBM в августе 1984 года для новой модели персонального компьютера IBM PC/AT[1].
Видеоадаптер EGA при разрешении 640×350 пикселей позволяет одновременно использовать 16 цветов из возможных 64 (по два бита на красную, зелёную и синюю составляющие). EGA также поддерживает 16-цветные варианты графических режимов CGA 640×200 и 320×200; в этом случае можно использовать только цвета из палитры CGA. Исходные режимы CGA также поддерживаются, хотя EGA не полностью аппаратно совместим с CGA. EGA может выводить изображение на MDA-монитор, эта возможность включается с помощью переключателей на плате, при этом доступен только режим 640×350.
Видеоадаптер имел заказной видеоконтроллер (похожий по архитектуре на микросхему Motorola MC6845, но несовместимый с ним) и был оснащён 16 кБ ПЗУ для расширения графических функций BIOS[2]. Плата EGA подключается к компьютеру по шине ISA, начиная с 8-битной версии[источник не указан 138 дней].
Стандарт EGA был замещён стандартом VGA, представленным IBM в апреле 1987 года с моделью компьютера PS/2.
Архитектура и плоскостная видеопамять
Видеопамять EGA физически делилась на 4 плоскости равного размера — от 16К (младшие модели) до 64К (старшие).
Прямое отображение сразу всей видеопамяти в адресное пространство процессора было невозможно, все плоскости всегда отображались по одному и тому же адресу — 0xa0000 для 16 цветных графических режимов и 0xb8000 для всех остальных. Таким образом, один и тот же адрес адресовал сразу 4 байта, расположенные как бы «параллельно» друг другу в 4 плоскостях.
Для доступа процессора к такой видеопамяти EGA содержал т. н. секвенсор, который поддерживал 3 режима записи в видеопамять и 2 режима чтения, и имел немалое количество управляющих регистров.
При записи использовались регистры:
- маска плоскости: запись не вносила изменений в те плоскости, биты которых в данном регистре были установлены в 0.
- маска битов: для каждого байта в каждой плоскости запись не изменяла те биты, которые были установлены в 0 в данном регистре.
- логическая операция: 16 стандартных логических операций, они же используются в Windows GDI. В результате записи бит видеопамяти устанавливался в логическую функцию от бита пришедших от процессора данных и старого значения бита видеопамяти. Код логической операция есть 4 бита, бит данных процессора выбирал между старшими и младшими 2, а старое значение бита видеопамяти — между четными и нечетными. Выбранный бит кода логической операции и являлся новым значением бита видеопамяти. Например, логическая операция 0000b — установить все в чёрное, 1111b — все в белое, 1100b — обычное копирование битовой карты, 0011b — копирование с инвертированием, 1010b — пустая операция, 0101b — инвертирование старого содержимого, 1110b — OR старого содержимого с новым, 1000b — AND старого и нового, 0110b — XOR.
- циклический сдвиг данных, поступивших от процессора (только для режима 0).
В режиме 0 байт, поступивший от процессора, понимался как новое значение для 4 байтов 4 плоскостей. В режиме 2 использовались только 4 бита в байте, поступившем от процессора. Для плоскостей, у которых в этом байте был 1 — использовалось значение 11111111b, для остальных — 00000000b.
В режиме 0 чтения использовался регистр выбора плоскости, чтение читало байт из выбранной плоскости.
В режиме 1 использовался регистр выбора бита, секвенсор извлекал 4 бита, позиция которых была задана регистром выбора, из 4 плоскостей и комбинировал их в 4битное значение (старшие 4 бита обнулялись).
В графических режимах CGA использовалась только плоскость 0, секвенсор всегда находился в состоянии по умолчанию и не использовался.
В текстовых режимах для хранения кодов символов и атрибутов использовалась та же плоскость 0, а плоскость 1 использовалась для хранения таблиц знакогенератора. Секвенсор обычно находился в состоянии по умолчанию, кроме случая загрузки знакогенератора — для этого регистр маски плоскости переключали в 2, писали данные знакогенератора по тому же адресу 0xb8000 и затем переключали маску обратно в 1.
Во всех 16-цветных графических режимах использовались все 4 плоскости, каждая из которых хранила монохромную картинку для одного из 4 компонент общего цвета — красного, зелёного, синего и интенсивности (в палитре по умолчанию). Комбинированием битов из 4 плоскостей получалось четырёхбитное значение цвета пикселя (индекса в палитру). Поэтому режим 320×200×16 цветов, визуально и функционально идентичный режиму, появившемуся в PCjr и Tandy 1000, был программно с ним несовместим при прямой записи в видеопамять.
Даже те регистры, которые совпадали по адресам и назначению с регистрами MC6845, отличались по интерпретации их содержимого. В частности, в регистры числа символов в строке, строк изображения в символе и строк текста в кадре для 6845 надо было записывать значения, на 1 меньшие желаемых (то есть, например, 114 символов в строке для 80-колоночного режима, программировались, как 113 (0x71 в шестнадцатиричном виде). В регистры контроллера EGA того же назначения надо было записывать на 2 меньшее значение (то есть 112 или 0x70 в том же примере)[3].
Палитра
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/00/6-bit_RGB_uniform_palette_with_black_borders.svg/220px-6-bit_RGB_uniform_palette_with_black_borders.svg.png)
4-битные значения цветов пропускались через 16 регистров палитры, каждый из которых содержал 6-битное значение цвета — по 2 бита на R, G и B. Это же 6-битное значение затем выставлялось на коннектор кабеля, ведущий к монитору.
Регистры палитры были реализованы только на запись, без возможности чтения.
Текстовые режимы
В текстовых режимах используется два типа шрифтов. Стандартный шрифт EGA формируется матрицей 7×9 в ячейке 8×14 пикселей. Для совместимости с CGA используется шрифт с матрицей 7×7 в ячейке 8×8 пикселей.
EGA — первый видеоадаптер IBM, позволяющий программно менять шрифты текстовых режимов.
Доступны следующие режимы:[4][5]
- 80×25 символов (ячейка 8×14 пикселей; разрешение 640×350 пикселей).
- 40×25 символов (ячейка 8×8 пикселей; разрешение 320×200 пикселей).
- 80x43 символов (ячейка 8×8 пикселей; разрешение 640×350 пикселей). Данный режим не является стандартным (хотя многие приложения, в т.ч. знаменитый Norton Commander, умели переключать экран в этот режим горячей клавишей). Для его использования необходимо сначала установить режим 80×25, а затем загрузить шрифт 8×8 с помощью команды BIOS.[6]
Графические режимы
- 320×200 пикселей;
- 640×200 пикселей;
- 640×350 пикселей.
Для EGA Plus[7] (Super EGA):
- 640×400 пикселей;
- 640×480 пикселей;
- 720×540 пикселей;
- 752×410 пикселей;
- 800×560 пикселей;
- 896×350 пикселей;
- 912×480 пикселей.
Технические характеристики
При подключении цветного монитора EGA использовал частоту кадров в 60 Гц, и мог использовать одну из двух частот строк — 21,8 кГц для 350 строк (текстовые режимы с размером знакоместа 8×14 пикселей, и режимы 640×350×16 и 640×350×4) и 15,7 кГц для текстовых режимов с размером знакоместа 8×8 пикселей и графических режимов с 200 строк. При подключении монохромного монитора вырабатывал сигналы со стандартной для монохромного монитора частотой строк 18,43 кГц и частотой кадров 50 Гц. Тип монитора устанавливался на банке переключателей, доступном через отверстие в задней планке (брэкете).
Разъём
Вид разъёма на видеокарте:[8]
5 | 1 |
![]() | |
---|---|
9 | 6 |
Вывод | Описание |
---|---|
1 | земля |
2 | вторичный красный |
3 | первичный красный |
4 | первичный зелёный |
5 | первичный синий |
6 | вторичный зелёный / интенсивность |
7 | вторичный синий |
8 | строчная синхронизация |
9 | кадровая синхронизация |
Сигнал
Тип | Цифровой, ТТЛ[9] |
---|---|
Разрешение | 640×350 и др. |
Горизонтальная частота | 15,7/21,8 кГц |
Вертикальная частота | 60 Гц |
Количество цветов | 16/64 |
История
Американская компания Video Seven[англ.] выпустила первую видеокарту, совместимую со стандартом EGA, в 1985 году (а позднее — и одну из первых карт, совместимую со стандартом VGA, в 1987 году).
Базовая версия EGA имела 64 кБ видеопамяти, чего было достаточно для монохромной графики высокого разрешения и цветной графики в режимах 640×200 и 320×200. Со временем большая часть плат EGA стала выпускаться с 256 кБ видеопамяти. Некоторые клоны EGA сторонних производителей (в частности, ATI Technologies и Paradise) поддерживают расширенные графические режимы (например, 640×400, 640×480 и 720×540), автоматическое определение типа монитора и, иногда, специальный чересстрочный режим для CGA-мониторов.
Позднее, графические карты Super EGA выпускались Genoa Systems[нем.]. Также существовал графический адаптер JEGA (на базе Super EGA; обеспечивалась частичная совместимость с EGA, но с разрешением 640 × 480).
Конкурирующие видеоадаптеры
В 1984 году IBM также выпустила видеоплату Professional Graphics Controller для использования в САПР. Адаптер поддерживал разрешение 640×480 пикселей (немного больше, чем у EGA, физический размер пикселей на экране монитора имеет равный размер по горизонтали (строке) и по вертикали, то есть пиксели «квадратные») и одновременный вывод 256 цветов из 4096 возможных. Увеличенное количество цветов позволяло создавать фотореалистичные изображения. Адаптер имел собственный язык для создания и преобразования двухмерных и трёхмерных изображений. Также адаптер мог эмулировать работу CGA[10].
Примечания
- ↑ EGA Boards Labeled 'Accepted Standard' // InfoWorld. — 1985. — Т. 7, № 51. — P. 14. — ISSN 0199-6649.
- ↑ Glenn A. Hart. IBM Sets a New Standard // PC Magazine. — Ziff-Davis Publishing, 1984. — Т. 3, вып. 25. — С. 173.
- ↑ Wilton, Richard. Programming the Hardware // Programmer's Guide to PC and PS/2 Video Systems. — Microsoft Press, 1987. — С. 544. — ISBN 1-55615-103-9.
- ↑ Dnes, Walter Nicer console textmodes (англ.). Дата обращения: 28 октября 2006. Архивировано 7 декабря 2003 года.
- ↑ Музыченко, Евгений Frequently Asked Questions (Часто Задаваемые Вопросы) по видеоаппаратуре для IBM PC (неопр.) (txt). Дата обращения: 28 октября 2006. Архивировано из оригинала 17 февраля 2012 года.
- ↑ Int 10/AX=1112h (неопр.). Дата обращения: 28 октября 2006. Архивировано 19 июня 2016 года.
- ↑ PC Mag — Google Книги
- ↑ Справочник www.5v.ru (неопр.). Дата обращения: 24 октября 2006. Архивировано из оригинала 28 октября 2011 года.
- ↑ Kuphaldt, Tony R. Logic signal voltage levels (англ.). All About Circuits. Дата обращения: 14 октября 2006. Архивировано из оригинала 8 февраля 2012 года.
- ↑ Duke, Keith A.; Wall, W. Alan.: A Professional Graphics Controller (англ.). IBM Systems Journal (1985). Дата обращения: 1 ноября 2006. Архивировано из оригинала 17 февраля 2012 года.