はじめに
PC-9800シリーズの話題や議論では、よく「EGCの仕様は非公開だった」とされて語られています。今回はこれについて具体的にどういう意味を持つことなのかの考察をしてみたいと思います。
EGCについて
EGC(Enhanced Graphic Charger)は、それ以前のGRCG(Graphic Charger)を拡張(Enhance)したもので、GRCG用のソフトウェアを動かすための互換モードとEGC対応のソフトウェアを動かすための拡張モードの2種類をサポートしています。
GRCGは4096色中16色が表示可能な機種に搭載された描画機構※1で、1985年5月に発売されたPC-9801U2にオプションのPC-9801U-02を装着して16色表示対応にすると使用できるようになったのを皮切りに、1986年5月※2に発売されたPC-9801UV2で標準搭載されるようになりました。
EGCが初めて搭載されたのは1986年11月に発売されたPC-9801VX0/PC-9801VX2/PC-9801VX4からです。
このうちPC-9801VX4にはMS-DOS 3.1とWindows 1.0がプレインストールされたPC-9801VX4/WNが用意されています。現在のパソコンやその他情報機器には普通にOSがインストールされた状態で販売されるのが普通になっていますが、当時は別に販売されており、ユーザーが好みのOSを別途購入して使うのが一般的でした。
GRCGの技術的な解説 – 超簡易版
4096色中16色対応のPC-9800シリーズのGVRAMは、1ビットが1ドットに対応するプレーンというものが4枚合わさって1枚の画像を出力するようになっています。このため、ある1ドットを任意の色に変更しようとすると4プレーンの各ビットへのアクセスが必要ということになります。
GRCGは、CPUがGVRAMへアクセスする際に、4つのプレーン(=4ビット=16色)を別々にアクセスすることなく、1つのプレーンへのアクセスのみで4つのプレーンへのアクセスができるようにするための機構です。
GRCGには「タイルレジスタ」というものが4プレーン分用意されており、読み出し時には比較対象(TCRモード / Tile Compare Read)として、書き込み時には書き込み演算対象(RMWモード / Read Modify Write)または書き込み内容(TDWモード / Tile Direct Write)として使用することができます※3。
これによってCPUからGVRAMへのアクセスを行う手間が大幅に低減され、また高速化することができます。
EGCの技術的な解説 – 超簡易版
EGCはGRCG互換モードとEGC独自の拡張モードの2種類をサポートしています。また、GRCG互換モードも拡張されており、CPUからのみ使用可能であったGRCG機能がグラフィック用GDC (Graphics Display Controller)※4からの描画にも適用されるようになりました。
拡張モードでは、CPUからのGVRAMのアクセスに呼応して、転送元と転送先および描画データを基にしたラスター・オペレーション(Raster operation)、ドット単位でのGVRAMアクセスを容易にするビット・シフト、対象のドット数を指定するためのビット長の指定などができるようになっています。
これにより、スプライトのような画像合成や特定の領域の画像のコピーなどが簡単かつ高速にできるようになりました。
EGCの仕様は非公開?
このEGCの仕様は、現在では「非公開であった」と語られることが多いようです。非公開になった理由として「(国民機を名乗った)セイコーエプソン株式会社の98互換機対策」であったとする、陰謀論的な話がついて回ることも多いようです。
いかにもそれが真実のように語られていますが、実際にはどうだったのでしょうか? 当時の出版物をあたってみたいと思います。
当時、PC-9800シリーズのプログラミングをする人たちの大半が持っていた、いわば必携の書籍に株式会社アスキーが出版していた「PC-9800シリーズ テクニカルデータブック」というシリーズがあります。
初期のころには「PC-9800シリーズ テクニカルデータブック」(以下、旧テクニカルデータブック)というものがあり、1986年8月に出版されました。これは奥付に「© NEC Corporation」と明示されているように、NECからの情報提供に基づいて編集されており、事実上のNEC公式のデータブックであると受け取られています。対応機種はPC9801/E/F/M/U/UV/VF/VMであり、GRCG対応機種も含まれています。そして、当然GRCGについての情報も掲載されています。
続いて1年後の1987年8月には「PC-9800シリーズ テクニカルデータブック 増補版」(以下、増補版テクニカルデータブック)が出版されました。これは以前の旧テクニカルデータブックからの差分となっており、以前の対応機種からその後発売された機種での追加・変更となった仕様が掲載されています。対応機種はPC-9801VM21/VX0,2,4/UV21/VX01,21,41/PC-98LTです。この中にはEGCを搭載した機種も含まれており、このことからEGCについても詳細な情報(事例付き)が6ページにわたり掲載されています※5。
実はEGCの仕様が初めて掲載されたのはこのテクニカルデータブックではありません。
1987年5月に出版された「PC-98XL/XA テクニカルデータブック」が初出です。掲載対象となる2機種のうち、1986年12月に発売されたPC-98XLがEGCを搭載しています。このため、EGCに関する詳細な情報が7ページにわたって掲載されています※6。掲載内容は増補版の掲載内容とほぼ同じです。異なる個所は、GRCGの仕様がハイレゾモード(ハイレゾリューションモード)では異なる部分があることからその部分の記載事項およびビット長の設定レジスターが16ビットすべて有効であるように記載されている点です※7。
EGCは非公開という認識が生まれた理由
さて、ここからはなぜ「EGCは非公開」という認識が生まれたのかについて考察したいと思います。
おそらくは、1990年4月に出版された「新版PC-9800シリーズ テクニカルデータブック」(以下、新テクニカルデータブック)にはGRCG互換モードの動作についての解説と拡張モードへの切り替えに関する記述以外の記載がなかったことが一因ではないかと考えています。というのも、このころにPC-9800シリーズのプログラミングを開始したプログラマーは当然この本をよりどころにしていたからです。
この新テクニカルデータブックは、旧テクニカルデータブックと増補版テクニカルデータブック、PC-98XL/XAテクニカルデータブックの内容を概ね盛り込んで1冊にまとめたような内容に、その後発売となった機種の仕様を盛り込んだ、とても分厚い全800ページにも及ぶものとなっています。正直言って読みづらいほどです。
これは想像でしかないのですが、この800ページちょうどというのが造本する際の限界点だったのではないかと思われます。800ページに収めるために、収録するもの、しないものの取捨選択を行った際に、当時のEGCを使用するアプリケーションの少なさから6から7ページ程度をEGCに割く必要はないと判断された可能性があるのではないかと思えるのです※8。
1991年4月には株式会社小学館から「PC-9801シリーズ マシン語ゲームグラフィックス(日高 徹/青山 学・共著)」(以下、マシン語ゲームグラフィックス)という書籍が出版されます。この本にはEGCの情報と実際にEGCを使用したサンプル・プログラムの掲載および実働するプログラムを収録した5.25インチのフロッピー・ディスクが同梱されています。同書の著者前書きである「はじめに」には、機材の貸し出しをNECから受けた旨記載があります:
なお、本書執筆にあたり日本電気株式会社、オムロン株式会社よりデモ機材等の貸し出しを受けましたことを、この場より改めて御礼申し上げる次第です。
EGCの仕様を公開しないことがNECの方針であれば、このような本の出版に協力することもなかったのではないかと考えるべきでしょう。しかし、実際には協力をし、該当書籍が出版されています。ちなみに、増補版テクニカルデータブックに掲載されているEGCの情報はこの本の42 – 45ページ※9の計5ページにさらっと記載されている内容とほぼ等価です。ただし、同書の別の部分とかぶる記述については省かれています。
1992年4月には株式会社アスキーから「PC-9801 スーパーテクニック(小高輝真・清水和文・速水裕 共著)」(以下、スーパーテクニック)が出版されます。この本の94ページ※10には以下のような記述があります:
ただし、このEGCの機能は、NEC独自のもので、一般には公開されていないため、一般のプログラマはEGCを使ったソフトウェアがなかなか作成できない。
さらに171ページのコラムには以下の記載があります:
解説していないグラフィックの機能
4プレーン描画でも利用したEGC(Enhanced Graphic Charger)の内部情報については、『PC-98XL/XAテクニカルデータブック』と『PC-9800テクニカルデータブック増補版』(共にアスキー出版局刊)にわずかに解説がある他はまったく公開されていない。 (~ 中略 ~)互換機の問題などあるのかもしれないが、是非正式な内部情報を公開してほしいものだ。
このように、だいぶ現在のうわさに近い内容を含む文面が登場しました。現在の「EGCの仕様は非公開」という認識はこの辺りから来ているのかもしれません。
これは個人の見解であり一般論とはならないことは重々承知していますが、今現在EGCの動作を理解したうえで増補版テクニカルデータブックのEGCの記載内容を読むと、簡潔に必要な事項がほぼすべて載っているように思うのです。また同書は「テクニカルデータブックは解説書ではない(プログラミングの手法を解説するガイドブックではない)」と冒頭で宣言しています:
なお本書は、限られたページの中に膨大なデータを記載するために、解説書ではなくデータブックとして作られました。そのため、本書を利用する場合には、ハードウェア、ソフトウェアについて、ある程度以上の知識を必要とします。特にハードウェアにおいては、使用しているデバイスの一般的な解説などは行っていません。必要な場合には、各デバイスのデータシートなどを参考にしてください。
PC-9800シリーズ テクニカルデータブック 増補版 3ページの「はじめに」より引用
このことを考えると仕様は公開されているとみていいのではないかと思います。また想像するに、おそらくNEC社内の資料もテクニカルデータブックに記載された内容とそう変わらないのではないかと考えます。独自にアスキーが編集して起こしたものとは思えない程度に簡潔であり、また必要十分の内容を備えているからです※11。
また、対セイコーエプソン株式会社の互換機としての側面についても、以前に出した出版物が世の中からなくなるわけではなく、またマシン語ゲームグラフィックスのような解説書が出版されていることから、否定してよいのではないでしょうか? 少なくとも肯定する要素はないように思われます。
ところでやや余談にはなりますが、テクニカルデータブックのシリーズ中には突き放すばかりではなく、EGCを実際に動作させるサンプル・プログラムを掲載しているものもあります。それは1990年9月に出版された「PC-H98model70 テクニカルデータブック」です。この本の巻末394 – 405ページ※12に「マルチカラーグラフィックサンプル」として、EGC(より正確に記述するならば「E2GC : Enhanced EGC※13」)を使用して256色描画を行うサンプルのコード(Microsoft Macro Assembler用)が掲載されています。
スーパーテクニックと同じ1992年4月には「PC-9800シリーズ テクニカルデータブック HARDWARE編」(以下、HARDWARE編)が出版されます。これは従来の新テクニカルデータブックではハードウェア仕様とBIOS仕様などを1冊の本にまとめていたものでしたが、前述のように扱いに困る厚さに達していたことから、新規機種の情報を追加するとともに「HARDWARE編」と「BIOS編」に分けられることになりました※14。
このHARDWARE編に掲載されたEGCの記述は新テクニカルデータブックと同等でモードの切り替え方法とGRCG互換モードの掲載に留まっています。この理由は明確ではありませんが、想像してみると、
- 差分編集で書き加えているので、いったん編集上削除したもの(この場合は新テクニカルデータブックで削除されたEGC詳細)が復活しなかった。
- 現在言われているようにセイコーエプソン株式会社の98互換機対策(?)としてNECの意向により掲載しなかった。
といったあたりがあり得そうに思います。
しかし、1990年12月にはセイコーエプソン株式会社がEGC互換機能を搭載したPC-386SとPC-386Gを発売済みであり、1992年4月になってから出版されたHARDWARE編に載せない理由にはなりえないように思いますので、おそらくは前者なのではないかと私は考えています。
まとめ
ここまでの調査内容をもとに考察すると、総合的にはNECが積極的にEGCの仕様を非公開にするメリットがほとんどないように思います。なぜそのように考えるに至ったかを説明するために、今回の調査結果を時系列で並べてみます:
- 1986年11月に発売されたPC-9801VX0/2/4で初めてEGCが搭載された。
- 1986年12月に発売されたPC-98XLmodel1/2/4もEGCを搭載している※15。
- 1987年5月に出版された「PC-98XL/XA テクニカルデータブック」にEGCの仕様が掲載されている。
- 1987年8月に出版された「PC-9800シリーズ テクニカルデータブック 増補版」にEGCの仕様が掲載されている。
- 1990年4月に出版された「新版PC-9800シリーズ テクニカルデータブック」にはEGCの仕様は掲載されていない。
- 1990年9月に出版された「PC-H98model70 テクニカルデータブック」にはEGC(E2GC)を使用した256色モード用のサンプル・プログラムが掲載されている。
- 1990年12月にセイコーエプソン株式会社が発売したPC-386SとPC-386GにEGC互換機能が初めて搭載された。
- 1991年4月に出版された「PC-9801シリーズ マシン語ゲームグラフィックス」にはEGCの仕様が掲載され、具体的なプログラム例による解説が載っている。
- 1992年4月に出版された「PC-9801 スーパーテクニック」ではEGCの仕様が公開されていない、互換機問題もあるだろうが公開してほしいと記載している。一方でEGCの基本的な使い方を解説している。
- 1992年4月に出版された「PC-9800シリーズ テクニカルデータブック HARDWARE編」にはEGCの仕様は掲載されていない。
EGCが98互換機に載らないことでけん制する効果が発揮されるためには、EGCを活用したアプリケーションが十分多く存在していなければなりません。しかし、アプリケーションが十分存在している状況では、EGCの情報は広くいきわたっていることになります。これを両立させるのはなかなか難しそうです。
また、逆にEGCを使用したアプリケーションの使用率が低かったり、EGCがない場合にはGRCGを使うようにプログラムされたりすることが多かった関係で、EGCを搭載していないセイコーエプソン株式会社の98互換機が成立していた側面もあります。
それも1990年12月にセイコーエプソン株式会社の98互換機にEGCが搭載されるに至っては、隠す理由がほぼなくなります。そして1991年4月にはNECも協力したEGCの解説書であるマシン語ゲームグラフィックスが出版されます。
こうした状況下では、「EGCは非公開であった」「互換機対策だった」というのは説得力に欠けるように思います。また、「互換機への対策として非公開とした」という説に関しては、うわさ以上のものは何も見つけることができなかったと結論します。
以上が、今回調査した結果のまとめとなります。もしも反論、疑問等ありましたらコメントに投稿していただければと思います。すべてに応対することはできないかもしれませんが、可能な限りにおいて確認をしたいと考えています。
募集告知
2017年6月9日 – 2022年4月29日現在
さかきけいは「PC-H98シリーズ テクニカルデータブック」を探しています。これだけが手元にありません。もしお持ちで譲ってもよいという方がいらっしゃいましたら本の状態と諸条件をメールにてお送りいただければと思います。よろしくお願いします。
- あくまでも描画するための機構であり、表示に関しては従来のCRTCと2つのGDCによって行われています。この仕組みに関してはEGCでも同様であり、640ドット×400ラインの表示をGRCGあるいはEGCと呼ぶのは誤りです。
- NECのサイト内には「1986年5月」という表記と「1986年7月」という表記の両者が混在しています。
- 事前にどのように動作するのかモードを設定する必要があります。
- PC-9800シリーズは、テキスト用のGDCとグラフィック用のGDCの2つを搭載しており、それぞれで役割分担をしていました。ここでいう「グラフィック用GDC」というのは、グラフィック用に割り当てられたGDCを意味します。
- 手元の初版本では42 – 47ページに掲載されています。
- 手元の初版本では97 – 103ページに掲載されています。
- なお、増補版では12ビットが有効との記載となっており、その後にアスキーが出版した書籍に限らず他社のものであってもEGCを解説する際にはこれを踏襲する形で紹介されています。おそらく12ビット有効が正しく、PC-98XLにおいても16ビット有効ということはないのではないかと考えます。実機を所有していないので試せませんが…。
- 実際のところ、EGC必須のアプリケーションは現代においてもあまりないという認識であろうと考えます。
- 手元の初版本のページ数です。以下同じ。
- 手元の初版本のページ数です。以下同じ。
- すべて16ビットで扱わなければならないなど、一部必要な情報が欠落していることも事実ではありますが、それが意図的であったとはいえないでしょう。WORD境界などについては記載があるからです。むしろ記述漏れと考える方が妥当性が高いと思います。
- 手元の初版本のページ数です。
- いずれ時間と気力があるときにE2GCについても解説をしたいと思います。
- 後年にはさらに改訂版と追加となるいくつかの「○○編」が出版されましたが、今回の話題からは外れるので取り上げません。
- モデルのバリエーションは以下の通り:
初めまして。興味深い考察ですね。「EGCの仕様は非公開」と言われるようになった経緯がしっくり来ました。
かつて手元にあった「PC-9801VXハードウェアマニュアル」(VX後期モデルの付属品、1987年発行)にEGCのI/Oポート構成が記載されていました。この記載だけでは同書の他のページ同様にレジスタの使い方が不明なのですが、これだけでも「非公開だった」というのは筋が合わないと思っていました。テクニカルデータブックの1993年改訂版は持っていましたが、EGCについては機能の概要しか記載がありませんでした。旧版にEGCの仕様が載っているとは知りませんでした。
情報をいただいた「PC-9801VXハードウェアマニュアル」について、内容を前期のものと後期のもの両方で確認しました。
確かにI/Oポートの説明の中で使い方までは書いてはいませんが、割り当てがどうなっているのかレジスター・レベルでは記載されていますね。
本体付属のマニュアルでこのように記述があるのですから「非公開だった」というのは筋が合わないというのは同感です。
偶然流れ着いて読ませて頂きましたが色々とすっきりしました。
私は当時、新版のテクニカルデータブックを見てEGCの仕様が見つからずスーパーテクニックに流れ着いたクチだったのですっかり非公開の物とばかり思っていました。
当時はWEBとかも無く、田舎の図書館と本屋が限られた情報源だったため、スーパーテクニックを立ち読みしてEGCの記述を見つけた時は大喜びしたものです。
今でもスーパーテクニックは大事に持っています。