2008年1月5日土曜日

My PC History (2) VIC 1001

高校パソコンクラブ時代に自分のパソコンが欲しくなり、当時一番安いパソコンを買った。
それがVIC 1001だ。一番安いパソコンといっても、ワンボードマイコンにはもっと安いものも会った。CRCというマイコンは39800円くらいで販売していた。かなり迷ったあげくVICに決めた。この決断は間違っていなかったと思う。マイコンを買ったら直ぐに使わなくなっただろう。ハードウェアには詳しくなったかもしれないが、ソフトウェアを学ぶことはできなかっただろう。
VIC 1001はBASIC内蔵とはいえ、ユーザメモリは4KBくらいしかなかった。8KBの内蔵メモリ中、モニタとBASICが4KB使っていた。しばらくはそのまま使っていたが、どうしてもがまんできずに16KBのメモリカートリッジをつけた。結局、このメモリは宝の持ち腐れに終わった。当時の私のプログラミング能力では16KBのメモリを使い切ることはできなかった。
VIC 1001では、市販のゲームもしたが、はじめて自分でゲームを作った。どんなゲームかというと格子状の盤面で巡回する障害物を避けながらゴールを目指すゲームだ。これはある程度動いたが、マシン語にはまってしまい、あまり納得の行く出来にはならなかった。
BASICを習ったときIF,FORが何の役に立つかわからなかったが、ゲームを作ってはじめて役に立つことがわかった。
初心者がゲームを作るとき最初に思いつくアルゴリズムはキャラクタの動きをFOR文で表すものだ。例えば、ミサイルが移動するなら、消して書いてを繰り返す。しかし、物体ごとにFOR文を書いても、その物体だけしか移動しない。だから、それぞれの物体が少しずつ移動する処理全体をループにする。これがはじめて自分で学んだアルゴリズムだった。当時の雑誌にはゲームのアルゴリズムがフローチャートで示されていたものだ。どのゲームを見ても同じようなアルゴリズムになっていた。それがわかるまでは、どうやってゲームを作ってよいかわからなかった。
次の壁は、プログラムを完全に動作するようにすることだった。つたないプログラマーだったからバグは山のように出た。全く思ったとおりの動作にならなかった。それを少しずつ直していった。
最後の壁は、プログラムのスピードだ。一応動くが、どうも遅い。結局、BASICでリアルタイムゲームを作るのは無理だとわかり、マシン語を学び始めた。マシン語をハンドアセンブリして、DATA文に並べ、メモリにPOKEする。USR関数を使ってマシン語を呼び出す。最初のうちは簡単に暴走する。非常に根気の要る作業だ。そのうち全部マシン語にするのは、自分の手に余るとわかった。
このように簡単なパソコンでBASICとマシン語を学んだのはとてもよい経験だった。
しかし、VIC 1001というパソコン自身は決して他人には推奨できない代物だ。友人のPC 6001がうらやましかったし、PC 8001にあこがれた。VIC 1001が69800円なのに対してPC 8001は168000円で、10万円の差があった。

0 件のコメント: