PC-6001とカセットテープレコーダーを買ってもらったら、まだまだ小学生、やっぱりゲームがしたくなるものです。おこづかいを貯めていくつかゲームを買って遊んでいました。親から見たらせっかくIT投資したのにゲームで遊んでばっかりで、と思っていたかもしれません。
いくつか買ったゲームの中で、ちょっと変わったものがありました。それは某A社の「オリオン/クエスト」というものです。「オリオン」は、セガのスペースハリアーみたいなものでしょうか、「クエスト」は迷路ゲームです。両方とも当時には珍しい3Dゲームでした。
今でこそ3Dゲームは当たり前ですが、当時は演算速度や描画速度が極端に遅く、3Dでしかもアニメーションを実現するのは大変なことだったので、ソフトウェアも高度にチューニングされていました。しかし、このゲームの最も特筆すべきは、その技術内容(ソースコード)を操作マニュアルに記載して、解説までしていたことです。
ちょっとだけその解説を紹介します。変数Aに0を代入するということをしたい場合、普通の言語ですとA=0などと書きます。これがZ80アセンブラになるとLD A, 00Hなどと書くわけですが、それをXOR Aと書くと、より速くなる、というのが高速化テクニックの一例です。
ここからは私の補足ですが、LD命令の場合、命令で1バイト、代入する値(00H)を格納するのに1バイトの合計2バイトを使ってしまうわけですが、XOR Aはこれで1バイト命令なのでプログラムを読み込む時間が短くなり、速くなります。
XOR Aというのは、変数A(実際にはアキュムレーターといいますが)に対して同じAとの排他的論理和を取って、結果をAに代入せよという命令です。同じ値同士のXORですから2進数に分解して考えると0 XOR 0、または1 XOR 1のパターンしかないわけですが、どちらも結果は0になります。したがってXOR Aは必ず0になります。こういう性質を使ったテクニックなのです。
こんなテクニックを小学生が読んでもちんぷんかんぷんだったわけですが、このわけのわからなさが非常に印象に残り、のちに中学生になってアセンブラ(機械語)にはまるきっかけになったのかもしれません。

ストレス社会との付き合い方
「思いやり経営」のススメ
テレワークが労働者のマインドを変える
求む、クックパッド男子
37歳の常識――我々は一生学び続ける