この記事は25年ほど前にMSXユーザーだった私が、MSX Advent Calendar 2015の15日目の記事として書いたものです。
ほぼ昔話的な内容ですみません。
MSXとの関わり
1990年頃にSONY製のMSX2+、HB-F1XVが家に来たのが始まりです(それまではPC-8801が家にあった)。最初はMSX FANの一画面プログラムを入力する程度でしたが、ほぼDATA文(=マシン語)なプログラムに衝撃を受けたのをきっかけに「Z80マシン語秘伝の書」でアセンブラを学び、バックアップ活用テクニックを愛読するような小学生でした。
近年はほぼMSXとの関わりはありませんでしたが、Yusuke Andoさんの下記のつぶやきを見かけて、いい機会と思い筆をとった次第です。
もっと人が必要な稀有なカレンダー #msxac / “MSX Advent Calendar 2015 - Adventar” https://t.co/deFGbQEYVO
— Yusuke Ando (@yando) 2015, 12月 8
何を作ったの?
感染したフロッピーディスクを起動時にフロッピーディスクドライブに挿入しておくことでシステムに常駐、その後感染していないフロッピーディスクが挿入された時にそこに自己を複製し、特定の日付に起動された場合のみメッセージを表示するというコンピュータウィルスを作成しました。
なんでそんなもの作ったの?
当時購読していたMSXマガジンのコラムに載っていた、世界初のコンピュータウィルスの話に触発されてだった記憶があります。
(MSXマガジンにはよくSFやコンピュータの歴史を語ったコラムが載っていた)
動作原理
(記憶ベースで書いているので、少々アバウトです)
- 本体はフロッピーディスクのブートセクターに存在し、200バイト程度のアセンブラで書かれている。
- 起動されるとRTCにアクセスし、日付を取得する。
- 日付が特定のものだった場合、永久ループでメッセージを表示する。
- 日付が特定のものでなかった場合、常駐するためにHIMEMを一定量(ブートセクター + バッファ)マイナスし、空いた領域に自分をコピーする
- ディスク入力をフックし、ブートセクターをバッファに読み込んで感染していなかった場合のみ自分をブートセクターに書き込むルーチンを仕込む
- 何事もなかったようにMSX-BASICを起動する
欠点
- (当たり前ですが)感染したフロッピーディスクから起動しないといけない
- MSX-BASIC起動時のプロンプトで表示される空きメモリ量が通常と変わるので、勘のいい人には異常を察知できる
オチ
さて、ウィルスを作ったはいいのですが、実は当時僕のまわりにはMSXを持った友人がほぼおらず(泣)、感染を拡大させる経路がありませんでした…。その後、中学でMSXを持った友人と出会うことになるのですが、隙を見て彼のマシンを感染させるべくディスクをガッチャンガッチャンやっていたところ、本人にバレてぶん殴られ、計画は失敗に終わったのでした。