Enhanced Graphics Adapter(エンハンスト グラフィックス アダプター、EGA)は、IBMが1984年に開発したディスプレイ規格である。グラフィックモードで640×350 64色中16色が表示可能。

## 歴史

EGAは1984年10月にIBMより発表された。PC/ATの発売直後だが、PC/AT専用ではない。

EGA規格は1987年にPS/2とともに発表されたMCGAおよびVGAに置き換えられた。

VGAが発表される少し前に、ジェノア・システムズ (Genoa Systems) がプロプライエタリなチップセットを搭載したハーフサイズのグラフィックカード、Super EGAを発表、後期はSuper VGAと同様にVGAで拡張されたモードをサポートした。

## 設計

EGAは最大640x350ピクセルの画面解像度で64色のパレットから16色を選択して同時に表示する。EGAカードは追加のグラフィック機能をサポートするシステムBIOSの拡張のために16KBのROMを搭載し、旧来のグラフィックコントローラー(MDA、CGA)でビデオタイミング信号を生成するのに使われていたモトローラMC6845チップと後方互換のモードを持つカスタムCRTCを搭載していた。

640x350高解像度モードではピクセルあたり赤、緑、青の各2ビットずつ、それぞれの原色に4階調の輝度を設定でき、それらを組み合わせ可能なパレット(計64色)から16色を選択できた。EGAはCGAの640x200および320x200グラフィックモードのうち16色バージョンを搭載していた。EGA 4ビット(16色)グラフィックモードはCPUのビット演算によるビットプレーンとマスクレジスタの複雑な使用方法としても知られ、VGAや多くの互換ハードウェアに継承されることになる、早期のグラフィックアクセラレータを構成するものであった。

EGAは350ラインモード時に21.8kHz、200ラインモード時に15.7kHzで駆動するデュアルシンクである。オリジナルのCGAモードも存在するが、EGAはCGAとのハードウェア互換性は完全ではない。EGAはボード上のスイッチの設定を変えることでMDA用モニターを使用できるものの、この設定では640x350高解像度モノクログラフィックと標準MDAテキストモードのみが利用可能である。

EGAカードはISAバスを採用し、当初は8ビット版および16ビット版が用意されていた。オリジナルのIBM製EGAカードは64KBのオンボードRAMを持ち、64KBのEGAカードでは640x350モード時は4色に制限されるため64KBを追加するためにはドーターボードを必要とした。ほとんどのサードパーティー製カードは128KBが実装済みで、一部は256KBを搭載して複数のグラフィックページをサポートした。ATIテクノロジーズやパラダイス(現・ウェスタン・ディジタルなどいくつかのサードパーティー製EGA互換品は640x400、640x480、720x540などの拡張されたグラフィックモード、モニター種別の自動検出、CGAモニターを使うための400ラインインターレースモードをサポートしていた。

### 表示機能

- テキストモード
  - 40x25、8x8ピクセルフォント(有効解像度は320x200)
  - 80x25、8x8ピクセルフォント(有効解像度は640x200)
  - 80x25、8x14ピクセルフォント(有効解像度は640x350)
  - 80x43、8x8ピクセルフォント(有効解像度は640x344)
- EGA グラフィックモード
  - 640x350、16色(64色の6ビットパレット)、ピクセル縦横比は1:1.37
  - 640x350、2色、ピクセル縦横比は1:1.37
  - 640x200、16色、ピクセル縦横比は1:2.4
  - 320x200、16色、ピクセル縦横比は1:1.2
- サードパーティー製ボードの拡張グラフィックモード
  - 640x400
  - 640x480
  - 720x540

### カラーパレット

EGAパレットは全ての16色CGAカラーを同時に使用することができ、これらの色はそれぞれ計64色から選んで置き換えることができた。これは追加のディスプレイハードウェア無しでCGA特有の茶色を表示させることも可能にした。後のVGA規格では64色をさらにカスタマイズすることができた。拡張カラーパレットは200ラインモードでは使用できなかった。

EGAパレットから色を選択するとき、赤、緑、青チャンネルに2ビットが使用される。これは各チャンネルが0、1、2、3の値を設定できることを意味する。マゼンタカラーを選択するには、赤と青の値を中輝度(十進数で2またはバイナリ値で10)として、緑の値をオフ(0)にセットする。64色EGAパレットで指定値を計算するとき、指定するバイナリ値の書式は"rgbRGB"、小文字をチャンネル輝度の最下位ビット、大文字を最上位ビットとする。マゼンタであれば、赤と青の最上位ビットは1なので、大文字のRとBの場所が1になる。残りの桁は全て0となり、マゼンタカラーを表すバイナリ値は"000101"となる。これは10進数で5となるから、パレット指定に5をセットすることでマゼンタが選択されたことになる。全てのデフォルト色のカラー値を次の表に記述する。

EGA 16色パレット(標準CGAカラーに設定した場合)

| 番号 | 色 | | 16進数 | rgbRGB | 10進数 |
| --- | --- | --- | --- | --- | --- |
| 0 |  | Black | #000000 | 000000 | 0 |
| 1 |  | Blue | #0000aa | 000001 | 1 |
| 2 |  | Green | #00aa00 | 000010 | 2 |
| 3 |  | Cyan | #00aaaa | 000011 | 3 |
| 4 |  | Red | #aa0000 | 000100 | 4 |
| 5 |  | Magenta | #aa00aa | 000101 | 5 |
| 6 |  | Brown | #aa5500 | 010100 | 20 |
| 7 |  | White / light gray | #aaaaaa | 000111 | 7 |
| 8 |  | Dark gray / bright black | #555555 | 111000 | 56 |
| 9 |  | Bright blue | #5555ff | 111001 | 57 |
| 10 |  | Bright green | #55ff55 | 111010 | 58 |
| 11 |  | Bright cyan | #55ffff | 111011 | 59 |
| 12 |  | Bright red | #ff5555 | 111100 | 60 |
| 13 |  | Bright magenta | #ff55ff | 111101 | 61 |
| 14 |  | Bright yellow | #ffff55 | 111110 | 62 |
| 15 |  | Bright white | #ffffff | 111111 | 63 |

### 仕様

EGAはCGA端子と同じ9ピンメスのDサブ端子を使用する。ピン割り当てを含むハードウェア信号インターフェースはCGAとほぼ互換性がある。その違いは3つのピンがEGAのセカンダリRGB信号となっていること。詳しくは、CGAではIntensityピンとされていたのがSecondary green、Secondary groundピンとされていたのがSecondary red、予約ピンとされていたのがSecondary blueに変更されている。EGAがCGAと同じ走査レートのモードで動作している場合、CGAモニターへの接続は正常に動作するが、モニターが2ピンをグラウンドに接続している場合はEGAのSecondary red出力をグラウンドに短絡させることになり、EGAアダプターの損傷に繋がる恐れがある。

ほとんどのEGAカードはカード背面にモニター種別を選択するためのディップスイッチを持っており、CGAが選択されていると、カードは200ラインモードで動作し、テキストモードでは8x8ピクセルフォントが使用される。350ラインモードには切り替えることができず、拡張カラーパレットも使用できない。EGAが選択されると、カードは350ラインモードで動作し、8x14ピクセルフォントが使用される。しかし、グラフィックモードは640x350x2のみが使用できる。

IBM 5154 EGAモニターは特殊なIBM 5153 CGA互換モードを備えていて、CGA相当の同期信号で動作しているときは自動でCGAのピン割り当てに切り替え、先に述べた問題を回避するようになっている。

### メモリ割り当て

EGAグラフィックモードはプレーンアクセス方式で、これはCGAやHerculesモードとは対照的である。ビデオメモリは4ページに分割され(2ページを持つ530x350x2を除く)、それぞれRGBI色空間を持つ。各ビットは1ピクセルを表す。赤ページの1ビットが有効にされると、他のページの同等のビットがセットされていなくても、画面上の指定位置に赤色のドットが現れる。同じピクセルの他のプレーン全てのビットも有効にすると、それは白色になる。各プレーンのサイズは、8KB(200ラインモードと640x350ピクセル2色)、16KB(64KBビデオRAMでの640x350ピクセル)、32KB(128KBビデオRAMでの640x350)となり、CPUアドレス空間のセグメントA000に割り当てられる。それらはバンク切り替え方式で、一度に1プレーンのみ読むことができるのだが、プログラマーは書き込み先のプレーンをEGAカードのコントロールレジスタにセットする手法をとっていた。したがって、読み込みは常に1プレーンのみだが、書き込みは全てのプレーンに一度に行うことができた。

後方互換性を確保するため、カラーテキストとCGAモードはセグメントB800、モノクロテキストはB000に割り当てられた。

### コネクタ

EGAではDE-9メスコネクタが使われている。ピン番号は上段が1-5、下段が6-9で、どちらも右から左に番号を割り当てた状態のピン割り当てを次に示す。

ピン割り当て

| ピン | 名称 | 役割 |
| --- | --- | --- |
| 1 | GND | Ground |
| 2 | SR | Secondary Red (Intensity) |
| 3 | PR | Primary Red |
| 4 | PG | Primary Green |
| 5 | PB | Primary Blue |
| 6 | SG | Secondary Green (Intensity) |
| 7 | SB | Secondary Blue (Intensity) |
| 8 | H | Horizontal Sync |
| 9 | V | Vertical Sync |
|

### 信号

|  |  |
| --- | --- |
| 種別 | デジタル、TTLレベル |
| 解像度 横 × 縦 | 640×350、他 |
| 水平同期周波数 | 15.7kHzまたは21.8 kHz |
| 垂直同期周波数 | 60 Hz |
| 表現可能色数 | 6ビット(64色) |