2008年1月5日土曜日

My PC History (4) PC-9801RA

大学院に進学し、いよいよPC 9801を購入した。80386のRAであった。
5インチFDDが搭載され、MS-DOSを使うことができた。
しかし、MS-DOS用のプログラミング言語は高価だったので、SMC 777のように多くのコンパイラをそろえることはできなかった。しかし、既に研究室に所属しており、その研究室では当時まだ珍しかったVAX, SunでUNIXが稼動していた。コンパイラは十分に揃っていた。自宅のパソコンでコンパイラを使う必要はなかった。
卒論でCのプログラムを作成したため、Cコンパイラだけそろえた。
80386を一言で表現すると中途半端なCPUだ。80386の原型である8086のメモリアクセス方式はセグメント方式で64KBの領域をセグメントレジスタで切り替える。セグメントレジスタは16ビットでしかも下位4ビットは0なので全体では1MBしかアクセスできない。そのためPC 9801のメモリは1MBが上限で、通常640KBだった。たかだか8ビットマシンの10倍でしかない。80386はそれを超える32ビットリニアアドレスをサポートしていたが、DOSではその機能を十分に使うことができなかった。CPU自体の責任ではないが、16ビット時代から32ビット時代に移行する過渡期であったためにPC-9801RAの性能は十分に発揮されることはなかった。
ちなみにPC UNIXとしてLinuxが有名だが、それと双璧をなすFreeBSDの原型である386BSDというOSもある。いずれも80386でUNIXを実現したものだ。つまり、OSさえまともならもっとすごいことができるマシンだった。
しかし、当時はそのようなOSSの流れはまだ湧き出たばかりで全く感じられなかった。私はMS-DOSでメモリの壁に悩まされながらプログラムを書いていた。セグメントの壁を超えるためにhuge pointerという概念が導入され、セグメント内のポインタとセグメント間のポインタを明示的に区別する必要があったのだ。
ところで、PC 9801は確かにプログラミングスキルを向上させてくれたかもしれない。しかし、どちらかといえばPC 9801のおかげというより研究室のUNIXのおかげのように思える。典型的なプログラミング作法の見本がそこにはあった。
PC 9801は勉強の道具でも合ったが、遊びの道具でもあった。私のゲーム暦は以外に浅く、市販ゲームをたくさん買ってプレイするようになったのは、アルバイトをはじめた大学院生時代からだ。それ以前は数少ないゲームを長く遊ぶか、自分で作ることを楽しんだ。自分で作っても大したゲームができるわけではないが、ゲームを作る過程がゲーム以上に楽しかった。
このとき、自分で作ったゲーム?はRPGツクールのようなゲームエンジンだ。cursesを真似てマップを2画面用意し、デュアルバッファでリアルタイムに表示する。C言語だけでも十分スムーズにスクロールできた。もっとも、よく見ると多少ぎこちない感はあったし、最終的にはイメージをVRAMに書き込むときだけマシン語を使った。
凝ったのはシナリオシステムだ。シナリオファイルにキャラクターの台詞やイベント記述するとそれで任意のゲームを表現できる。もっとも、ドット絵を作るのが面倒だったので、敵キャラを増やすところで中断してしまった。ボタンなどのGUI部品も自作し、簡単なウインドウシステムになっていた。このような特徴は、実はすべて修士時代の研究テーマから取り入れたものだ。
大学院時代は学部時代より長かったが、すべてPC 9801で作業した。

0 件のコメント: