みっつ目は自分は呪われたプログラマであるということ(12)

友達も出来、長期に渡って休んでいた学校に毎日通いだしたことに気を良くした両親が私が子供のころから貯めていたお年玉でパソコンを買ってくれることになった。SHARPのX1Fである。当初はカセットテープデバイスだったのだが、小学6年の春にFDDを1つ購入(確か4万だったと思う。当時は5インチ2D)し、自分でDOS(DOSと言ってもMS-DOSとかをイメージしてはいけない!主にDiskI/Oまわりの処理しかない規模の小さなものだ。)を自作するようになった。


当時のパソコンにとっては、フロッピーからデータを読み出すのにも、FDC(Floppy Disk Controller)を自分で制御して、タイミングを計りながら読み出す必要があった。しかも、DMA(Direct Memory Access:CPUの代わりにI/Oから高速に転送してくれる転送方式)が備わったのは、X1の後継たるX1turboシリーズであり、X1シリーズにとってはフロッピーからデータを読み出すのにも、ひと苦労であった。しかし、その不自由さがかえって面白く、インターリーブセクタでフォーマットしたりするのに病みつきになった。


インターリーブセクタとは、本来は1.2.3..と順番にセクタ番号を振るところを、1.3.5...13.15.2.4.6..14.16というように、いくつか飛ばしながら番号を振る技術のことだ。これは単にコピー防止の意味もあるが、実用的な応用としてはアルシスソフトの「リバイバー」が挙げられる。このソフトは、インターリーブフォーマットを行なえば、次のセクタ読み出しまでに時間がかかることを利用し、その空いた時間でサウンドを同時に再生するという荒業を成し遂げた。つまり、ディスクを読みながらサウンドを再生できるのだ。知らない人のために言っておくが、X1シリーズは非常にしょぼいので、タイマ割り込みみたいなものは存在しない。CPUタイマーもZ80なので搭載されておらず、時刻用のタイマは秒きざみでしか得られない非常に精度の荒いシロモノだ。つまり、DISKからデータを読み出しながら、アセンブラの命令からクロックを手計算して、うまくタイミングをとりながらPSG(Programmable Sound Generator)を叩いてやる必要があるということだ。このデモを見たとき子供心に衝撃が走り、ひたすら逆アセして解析した覚えがある。さすが世界のアルシスソフト*1だと思った。この「リバイバー」のメインプログラマ(当時は、企画からシナリオ、グラフィック、プログラムまですべて一人でこなすのが常識であった。)である吉村氏の名前はこの後、嫌というほど目にすることになる。


いまにして思えば、このころがまさにプロテクト戦争の幕開けであった。私のひとつの重大な転機はまさにこの直後に訪れる。(つづく)

*1:ゲーム中の登場人物のそういう会話がある。もちろん、冗談のつもりだったのだろうけど、私は本気で「アルシスソフト」は世界一だと思った。