Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO ■EGC 対象 V30HL,V33A,80286以上のCPUを搭載した機種 解説 o EGC(Enhanced Graphic Charger)は、PC-9800のグラフィックVRAM描画を高速化 するための回路で、GRCG(Graphic Charger)の上位互換。CPUとVRAM、または GDCとVRAMの間に入って、VRAMに書き込むデータに対して様々な論理演算を 行う。複数のプレーンを同時にアクセスしたり、データのビット単位の シフト等も可能である。 o EGCの全てのレジスタは、I/O 006AhでEGC拡張モードに設定されていて、 かつI/O 007Chのbit 7=1のときのみ変更可能である。 o PC-9801NVはEGCの回路を搭載しているが、通常はマスクされているため使用 できない。OUT EE8Eh,00hを実行し、0000:054Dh bit 6=1にすれば、 レジュームOFF時に限りEGCが使用可能になる。 PC-9801NS/E・NCは、レジュームON時にはEGCが使用できない。 u CPUがEGC経由で描画するときは、必ず16ビットアクセスしなければならない。 VRAMが32ビットローカルバス接続されている機種でも、EGCは16ビット単位で しか処理できない。 o EGCの使用するI/Oポート一覧 -----------+----+---+-------------------------------------------------- I/Oアドレス|幅 |R/W|内容 -----------+----+---+-------------------------------------------------- 04A0h |WORD| W |EGCレジスタ1ライト 04A2h |WORD| W |EGCレジスタ2ライト 04A4h |WORD| W |EGCレジスタ3ライト 04A6h |WORD| W |EGCレジスタ4ライト 04A8h |WORD| W |EGCレジスタ5ライト 04AAh |WORD| W |EGCレジスタ6ライト 04ACh |WORD| W |EGCレジスタ7ライト 04AEh |WORD| W |EGCレジスタ8ライト -----------+----+---+-------------------------------------------------- 関連 0000:054Dh bit 6 I/O EE8Eh I/O 006Ah - 04h,05h I/O 006Ah - 06h,07h I/O 007Ch bit 7 I/O 04A0h 名前 EGCレジスタ1ライト チップ EGC 機能 [WRITE] bit 15〜8: 未使用(常にFFhにする) bit 7〜4: P7EN#〜P4EN#■[PC-H98の256色モードのみ] bit 3〜0: P3EN#〜P0EN# 1= プレーンへの書き込み無効 0= プレーンへの書き込み有効 [READ] 設定値読み出し(PC-H98,PC-98GSのみ) 解説 o アクティブプレーンを設定する。書き込みを許可するプレーンに対応する ビットを0にする。 o bit 7〜4は、PC-H98の256色モード時のみ有効。 u PC-H98,PC-98GSでは、このポートをリードすると設定値が読める。 I/O 04A2h 名前 EGCレジスタ2ライト チップ EGC 機能 [WRITE] bit 15: 未使用(常に0) bit 14,13: FGC,BGC 11b= 設定禁止 10b= フォアグラウンドカラー 01b= バックグラウンドカラー 00b= パターンレジスタ * ROPのP入力に割り当てるデータを選択する bit 12: 未使用(常に0) bit 11〜8: リードプレーン 0111b= VRAM plane #7■[PC-H98 256色ボード装備時のみ] 0110b= VRAM plane #6■[PC-H98 256色ボード装備時のみ] 0101b= VRAM plane #5■[PC-H98 256色ボード装備時のみ] 0100b= VRAM plane #4■[PC-H98 256色ボード装備時のみ] 0011b= VRAM plane #3 0010b= VRAM plane #2 0001b= VRAM plane #1 0000b= VRAM plane #0 bit 7〜0: 未使用(常にFFhにする) [READ] * 設定値読み出し(PC-H98,PC-98GSのみ) 解説 o ROPのP入力に割り当てるデータを指定する。 o EGCが読み出しを行うプレーンを指定する。 u PC-H98,PC-98GSでは、このポートをリードすると設定値が読める。 関連 I/O 04A6h,04ACh I/O 04A4h 名前 EGCレジスタ3ライト チップ EGC 機能 [WRITE] bit 15,14: 未使用(常に00bにする) bit 13: コンペアリード 1= しない 0= する * コンペアリードとはVRAMリード時に、各ドット位置に対して全プ レーンのデータとフォアグランドカラーを比較し一致すれば1、 一致しなければ0を返す機能 bit 12,11: ライトソース 11b= 設定不可 10b= パターンレジスタの内容をライト 01b= ラスタオペレーションの演算結果をライト 00b= CPUデータをライト bit 10: リードソース 1= シフタ入力はCPUライトのデータ 0= シフタ入力はグラフィックVRAMのデータ * EGCのS入力に割り当てるデータを選択する bit 9〜8: レジスタロード 11b= 設定不可 10b= VRAMライト時にライトされる前のVRAMデータをロード 01b= VRAMリード時にVRAMデータをパターンレジスタにロード 00b= パターンレジスタの変更はしない bit 7〜0: ROPレジスタ Shifter 11110000 Distnation 11001100 PatternReg. 10101010 -------------------------------------------------------- ROPコード(例) 11110000=VRAM転送 00001111=VRAM反転転送 11001100=NOP 00110011=VRAM反転 11111111=VRAM塗りつぶし 00000000=VRAM消去 10101010=パターン塗りつぶし 01010101=パターン反転塗りつぶし [READ] なし 解説 o EGCのROP処理を定義する。 関連 I/O 04A6h I/O 04A6h 名前 EGCレジスタ4ライト チップ EGC 機能 [WRITE] ■[FGC=0かつBGC=0のとき] bit15〜0: 0 ■[FGC=1またはBGC=1のとき] bit15〜8: 0 bit 7〜4: フォアグランドカラー■(PC-H98 256色ボード装備時) bit 3〜0: フォアグランドカラー [READ] なし 解説 o フォアグランドカラーを指定する。 o ROPのP入力にパターンレジスタを割り当てる場合は、このポートに0000hを 指定しなくてはならない。 関連 I/O 04A2h bit 14,13 I/O 04A8h 名前 EGCレジスタ5ライト チップ EGC 機能 [WRITE] ■[FGC=0かつBGC=0のとき] bit15〜0: 0 ■[FGC=1またはBGC=1のとき] bit15〜0: マスクレジスタ * 1にセットされたビットの書き換えが無視される。 [READ] なし 解説 o マスクレジスタを設定する。 o ROPのP入力にパターンレジスタを割り当てる場合は、このポートに0000hを 指定しなくてはならない。 関連 I/O 04A2h bit 14,13 I/O 04AAh 名前 EGCレジスタ6ライト チップ EGC 機能 [WRITE] ■[FGC=0かつBGC=0のとき] bit15〜0: 0 ■[FGC=1またはBGC=1のとき] bit15〜8: 0 bit 7〜4: バックグランドカラー■(PC-H98 256色ボード装備時) bit 3〜0: バックグランドカラー [READ] なし 解説 o バックグランドカラーを指定する。 o ROPのP入力にパターンレジスタを割り当てる場合は、このポートに0000hを 指定しなくてはならない。 関連 I/O 04A2h bit 14,13 I/O 04ACh 名前 EGCレジスタ7ライト チップ EGC 機能 [WRITE] bit 15〜13: 000b bit 12: DIR 1= ←の方向にビットを数える(ビット降順) 0= →の方向にビットを数える(ビット昇順) bit 11〜8: 0000b bit 7〜4: ディスティネーションビットアドレス bit 3〜0: ソースビットアドレス [READ] なし 解説 o シフタの制御を行う。 o シフタでは、入力したデータをビット単位でシフトすることが可能。 関連 I/O 04AEh I/O 04AEh 名前 EGCレジスタ8ライト チップ EGC 機能 [WRITE] bit 15〜12: 0 bit 11〜0: ビット長(0〜4095) [READ] なし 解説 o シフタの制御を行う。 o このポートにはシフタで扱うデータのビット長を設定する。通常EGC使用時 にはVRAMは16bitアクセスを行うので、このポートには000Fhを指定する。 関連 I/O 04ACh