第11章

家族で秋葉原にいくことはよくあった。 そんなある日、親父が「PC−8001+mkII マシン語入門」 という本を買った。

なんでかは知らないが、自分で勉強するつもりだったらしい。 しかし、その本は結局全く読まれずに家に置かれていた。

私は当時、パソコンの本なら何でもかんでも夢中で読んでいたので、 当然の如くこの本も読み始めた。

その本は、まず著者の身近な話題から始まっていた。 「ワタシも、週に一度は秋葉原をウロつかないと、どうも、こう、 落ち着かないんですよね」という感じの書き出しだったと思う。 そして、「おもしろそうなゲームが並んでいます。ちょっと並べてみましょうか… ラリーX(BASIC+マシン語)、パックマン(マシン語)…(中略) ほとんどのゲームで、この「マシン語」なるものが見られます」 「入門書のコーナーを見てみましょう。(中略)ここでも『マシン語』の オンパレードです」…「いったい、マシン語って何なんだ!」

そして、次の節では、「これがマシン語だ」と題して、マシン語が どのようなものか紹介している。その書きかたも、 「まず、PC−8001の電源を入れてください。

NEC PC-8001 BASIC Ver 1.2
Copyright(C)1979 Microsoft

Ok
という画面になりましたね。
『おかしい。違ってるぞ』という方が何人かいらっしゃるようです。 おそらく、
Ver 1.2
の部分が違っているのではないでしょうか。実は、PC−8001は、 何種類もあったのです!初代PC−8001がVer1.0で…」…(中略)… 「では、mon[return]と入力してください」 と、モニタモードに来るまでに2ページくらいページを裂いている。 そして、「
mon
*
という画面になりましたね。
『それがどうしたんだ』という方もいらっしゃるかもしれません。しかし、 みなさんは、いつの間にか、
マシン語の世界
にワープしていたのです!」と書かれ、「BASIC→mon→マシン語」という 図解まで載っていた。そのあとDコマンドを入力させて16進数の羅列を 出力させ、「これがマシン語なのです!」となってマシン語の紹介を 終える…というしくみになっていた。

…と終始この調子で、これでもかというくらいのスローペースで レジスタ、アドレス、内部ルーチン、アセンブラ…等々が解説されていくのだった。

この本は、やはりというか、フォーサイト企画部員が書き、ナツメ社が出版した 入門書であった。つまり、「はるみのプログラミング・レッスン」と 同じサークル・同じ出版社の本である。その執拗なまでのわかりやすさのため、 BASICの時と同じように、じつにスムースに読み進めることができたのである。

しかし、なにしろ当時はマシン語というと、「とてつもなく難しいもの」という イメージがあったので、いくらその本で「マシン語は難しくない!」と主張 されていたからといっても、やはり最初は「読んでいるだけ」で、 本に載っていたプログラムを実際に打ち込んでみるまでは結構時間がかかった。 だが、実際に「マシン語」を打ち込んでみて、しかもそれが 本に書かれている通りに動くとなると、だんだん面白くなってくる。 また、マシン語のプログラムは、一見長そうでも実はそれほど時間を かけずに打ち込めるので、結構気楽に試せたというのもある。

「ホットスタート」「コールドスタート」などの内部ルーチン (この本はやたらと内部ルーチンの重要性を強調していた)利用の基本的なプログラムから、「画面を●で埋めつくす」とか、「画面左上のスペードを 右に動かす」とか(ちなみに、このプログラムは、&hF300のキャラを &HF302に動かして&HF300を空白にするというものだった。 当時は何回も実行して「なんで一回しか動かないんだー」と悩んだりしていた。)、 「メッセージを表示」するとか「グラフィックキャラで作った絵を表示する」とか、 いろいろなプログラムを打ち込んでは実行して喜んでいた。 (「マシン語はちょっとまちがえると暴走する」という恐怖があったので、 ヘボいプログラムでも動くだけでうれしい。)

そのうち、実行するプログラムがなくなってくる。ちなみに、その本に 書かれていたプログラムで最も高級だったのは、「画面に大きなキャラクターを 表示させる」というものだった。ヘボいといえばヘボいが、しかし あそこまでわかりやすく書いたわりには結構健闘しているともいえる。

「自分でマシン語プログラムを書いてみよう」と思ったのも、おそらく そんな流れから来たものだったのだろう。本当に、「できたら儲けもん」という 軽いノリで、ちょっと作ってみることにした。 内容は、「逆スクロール」。もしかしたら、同じ頃構想していたゲームで 使うために作ったのかもしれない。とにかく、最初に作るにしては (まあ、それまでもちょっと本のプログラムを改造するくらいはしていたが) なかなか厳しいプログラムであった。

見ようみまねでVRAMがどうなっているかなども実験し、大体のしくみも つかんだ。紙にニーモニックを書いていき、何度かの手直しを経て書き終えたら、 ハンドアセンブルする(当然、アセンブラなどというマニアックなものは 持っていなかった。カセットだとロード時間も馬鹿にならないし、あまり 欲しいとも思わなかった。)。そして、入力。短いプログラムなので、 入力は簡単である。そして、実行…。

動いた。画面は、なにやら一段下がった。「おお…動いた…動いたぞ!」 そのときの気持ちを言葉にするとこんなところだろうか…。今考えると 最初ちょっとバグったような気もするが、とにかく私のマシン語プログラム 第一弾は、ほぼ一発で動いたのだった。「どうせまともに動かないだろう」 と予測していただけに、これはかなりの驚きであった。速さのほうも、 「マシン語といえど、スクロールのような大量の処理には かなり時間をとるのではないか?」と心配していたが、 杞憂であった。ほぼ一瞬で処理が終わった。さすがである。

とにもかくにも、これで私は「マシン語の使えるプログラマー」の仲間入りを 果たしたのであった。BASICをマスターして以来、ひさびさの 技術革新である。


12章へ
10章へ

戻る