電脳事始め

一昨日「幼き日の Florian 」なんて話をしたので、思いで話をちょっと。


Florian は昔からゲーマーでした。もちろんインベーダーもやってたし、ムーンクレスタやギャラクシャンももちろんリアルタイム。「ゼビウス以前」のゲームについてやたらと詳しいのは、とりもなおさず実物をみていたからです。
当然のことながら、それだけゲームをやっていれば、「あのゲームがいくらでもやれるならうれしい」とか、「私ならこうするのに」とか、まぁ、思う訳ですな。あのゲームセンターの機械の正体が「コンピュータ」であるということはたまたま行った上野の科学博物館の展示で分かっていたので(スペースウォーか何かを見たんだろうなぁ)、自然と Florian の興味はまだ見ぬ「コンピュータ」という物にひかれて行ったのでした。


当時、学研の「科学」シリーズに飽き足らなくなっていた Florian は、誠文堂新光社の「子供の科学」という雑誌をほぼ定期的に買っていました。
この本、確かに切り口は子供向けなんですが、実はかなり高度なことを平気で書く、今考えるととんでもない雑誌だったのですが、たまたま、松下のJR-100の特集をしていたことがありました。コンピュータの基礎知識から、BASICの文法まで、一応一通り。
決して分かりやすい記事ではなかったと思いますが、プログラミングという物に開眼しました。文法って言っても、「何のために何をすればいいのか」という事までは載ってなかったので、ソースとつぎはぎの文法を組み合わせて、なんとなく何をやっているかをやっと理解した程度でしたけど。でも、プログラミングによるロジックの構築が画面内での世界を作るということはよく分かりました。


ほぼ同時期、学研の「電子ブロック」にFXマイコンという新シリーズが出ました。非常に制限されたマシン語の命令コードを少ないキーで打ち込んで動かすという本当に「マイコン」用のセットでしたが、「電子ブロック友の会」に入っていると、普段の会誌に紛れて命令表やサンプルプログラムがたくさん送られてくるのです。
BASICとは全然違う設計思想の言語(当時の Florian にとって「ニーモニック」という考え方はなかった)にドキドキしながら、「BASICで書くとこんな感じ」「FXマイコンで書くとこんな感じ」と似たようなロジックを2通りでノートに書きなぐるなんて事をよくしていました。


もう一つ、当時のとてもし親しかった友人の父親が研究所務めで、個人で関数電卓ポケコンをもっていたのをよく触らせてもらいました。
当時よく触っていたのは、HPのHP-45というRPN逆ポーランド記法)のプログラマブル関数電卓。これまたやっぱり全然BASICとも、マイコンとも違う設計思想のマシンで、その不思議な命令形態に戸惑いながらやっぱりノートに書きなぐっては打ち込むということを繰り返していました。サンプルとしてマニュアルについて来た石取りゲームの「35071(I LOSE)」(8セグメント蛍光管で見た上で、逆さまから読んで見ましょう)とかね。
なにせこれ、 Florian が、唯一触ることができる「本物の実装系」でしたから、ノート上では行けるはずのプログラムが変なところで止まる感触を初めて味わってみたり。


とまぁ、いろいろ触っていましたが、実際に Florian が初めて手元にコンピュータを持つことができたのはそれから1年ほどたった小学5年の12月でした。
PB-100というCASIOのポケットコンピュータでした。
手にいれたその晩のうちにBASICを学習し直し(FOR-NEXTとGOSUB-RETURNの理解が微妙に間違っていたことがこの時点で明らかに(^^;))、あとは坂道を転がるボールのごとくゴロンゴロンとコンピュータの道へと落ちて行く一方でしたけど、まぁ、それはこの際さて置き。


もちろん、PB-100で作ったものはゲームばかりでした。文字表示のみの1行ディスプレイを駆使してアーケードゲーム(の、エッセンスだけ)を片っ端から移植したり、オリジナルのゲームを作ったり、技術デモだけでルールのない何かを作ったり。
いろいろやりながら、1年もしないうちに二次元の画面が恋しくなりMZ-721を手にいれて、あまりのBASICのロードの遅さに(それでも、テープのBPSを2700にするローダをかますとか、いろいろ小技を使ってはいたんだけど)マシン語モニタ上で直接ハンドアセンブルする技なんかも覚えました。いや、この方法はメインテナンス性が極端に悪かったので、すぐにOh!MZに掲載されたアセンブラに乗り換えましたけど。


実は、MZ-721を手にいれたのは、シャープのカタログをたまたまイベントでいただいていたという偶然はあるのですが、しみじみ考えると非常に正解に近い位置にいたのだと実感できます。
後に古旗一浩さんが「MZ-700に不可能はない!」との発言をして非常に話題になりましたが、あの気分は Florian もほぼ同様に感じていました。
コンピュータの世界ってのは非常に「けものみち」でして、やろうと思うことを本当に完全に実現しようとするといくらスペックがあっても足りないケースが大変多いです。でも、その目標の中で「何をやりたいか」を見極めて行くと実は、そぎ落とせる要素や、見かけにだけだまされている部分が結構多いことに気づきます。
まして、MZ-700はグラフィック表示すらできないハードでした。サウンドも、1チャンネルの矩形波タイマしかついてませんでした。その代わり、Z80Aを3.7MHzでほぼノーウェイトで駆動することができたため、当時としてはCPUの機能的にはかなり高速の部類に入っていました。外部デバイスの駆動も、OSによる仲介がほぼあり得ない(って言うか、IOCSはあっても、ハードウェアを直たたきした方が簡単(^^;))状況では、ボトルネックとなるソフトウェアは少なく、何よりも、ことゲームなどのインタラクティブなプログラムにおいて最もボトルネックとなる描画処理に関しては、文字プレーンしか持たない関係上大量のメモリアクセスは行いようがない、つまり処理的なボトルネックにはならないことがあらかじめ分かっています。
なので、「こんなことがやりたいなぁ」と思った内容について、思いつくままにプログラムを組んで行くと、パフォーマンス的にもさほど問題のないものがおおむねそのまま出来上がるのです。もちろん、MZ-700なりの「表現の限界」ってものには引っ掛かるのですが、その「表現の限界」の内側にいる限りは逆にすごく強力であるという印象を、当時しみじみ感じていました。
その意味で、「MZ-700に不可能はない!」という気分ではあったのです。


また、 Florian は目一杯ゲーマーでしたので、コンピュータはゲームのための道具として見ていました。
マシン語は、アセンブラやデバッガのロードが早いかららといって決して作りやすい環境ではありません。へたするとソースの入っているメモリ自体も破壊される可能性が有り得る状況では、ちょっと手抜きしてセーブしないといきなり手戻りが発生したりします。
でも、「マシン語を使えばほぼ制限のない環境が手にはいる」と思うと、ゲームの実現のためには多少の苦労は正当化されてしまいました。元来、結構飽きっぽいにもかかわらず、そこそこプログラムを作り込むことができたのは、幻の中の「ゲーム」という抽象的なゴールがいつもあったからなんだろうな、と今では思えます。
もっとも、せっかく作ったゲームは見てもらえることはあんまり多くなかったですけどね(^^;)。何度か投稿したベーマガはそのたびに没だったし。


MZ-700より後は、結構いろんなハードを使い回して来ました。直接購入したものは少なかったですが、それこそショールームや、友人宅や、学校の部室など。
興味の範疇もただ「ゲームを作る」ことではなく、「ゲームを作る枠組み」や「ハードウェアの効率的なたたき方」や「ゲームを楽に作ることができてパフォーマンスのいい言語」など、あちこちふらふらと揺れてはいますが、あれから20年以上がたった今でも、あいかわらず Florian のコンピュータに対する根っこは「ゲーム」なのでした。