現在地

表参道アドベンチャー


テーマ:

呟いたら意外に反響があったので資料を残しておきます。

「表参道アドベンチャー」は「ASCII」1982年4月号の綴じ込み付録「AhSKI!」に掲載されたテキストのアドベンチャーゲームです。ソフトウェアに互換性の無いパソコンが乱立していた時代ですが、機種依存部分を分離することにより本体共通で PC-8001, MZ-80K/C, MZ-80B の各シリーズで実行可能となっていました。

この機種依存部分が分離されているということはそこだけ作り直せば他のハードウェアでも実行できる可能性があるということです。

ということで自作のボードで動かすために機種依存部分を解析しました。

ボードは翌年の「南青山アドベンチャー」のために製作したものですが問題なく実行できます。

こんなことをする人は少ないかもしれませんがここに記録しておきます。

まずこのゲームはZ80のバイナリなのでZ80か互換のプロセッサが必要です。あるいはZ80をエミュレーションする方法もあります。

プログラムは9000H~0C387Hを占めていて、9000H~90FFHまでの256バイトが機種依存部分です。ワークエリアは不明ですが、プログラムエリア内を使っているようです。このことからROM上で実行することはできないので、0000H~7FFFHにROMを配置してプログラムを格納し、実行時に8000H~0FFFFHのRAMにコピーするのが現実的です。今なら32kBならSRAM一つで済むので本当に使っているエリアを探し出す必要は無いでしょう。

それでは機種依存部分の内容です。アドレスが決まっているのは以下の通りです。

アドレス 内容 備考
9000H~9002H 必要なら初期化を行いゲーム本体(9100H)へジャンプする
9003H,9004H キー入力を待ってからAレジスタに入れて帰る ゲームでは大文字しか使わないので大文字変換している
PC-8001用はそうなっている
9005H,9006H Aレジスタの内容を表示する BSキー使用時に1DH(カーソル左)が来るので08H(BS)などに変換が必要なことも
9007H,9008H 終了 RET不要
9009H,900AH ゲームの途中保存
完了後はRETではなくJP 92B9H
0A535H~0C35DHまでのメモリを保存すればよい
オリジナルはもちろんテープだが、私のボードではEEPROMに保存している
900BH,900CH 保存したゲームの再開
完了後はRETではなくJP 92B9H
0A535H~0C35DHまでのメモリにロードすればよい

9003H以降のエントリポイントはゲーム本体から適宜呼ばれます。2バイトしかないのでJR命令で実際の処理ルーチンに飛ぶしかありません。

900DH~90FFHまでは自由に使えます。

これだけなので AKI-80 などでも動作させられると思います。シリアル以外のポートは使わないのでEEPROMの24C64かなにかを積めばセーブ・ロードも難しくはないでしょう。

ここに挙げた情報はPC-8001用の機種依存部からの推測でしかありません。またこれで最後までプレイしたわけでもありません。もし間違いなどお気付きの方は「ご意見・ご要望」にてご指摘いただけると助かります。
参考文献・関連図書: 
高橋直穂・秋山秀樹(1982)「表参道アドベンチャー」『ASCII』1982年4月号, アスキー.

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
※ コメントは原則公開です。個別のご相談などは「ご意見・ご要望」からお願いします。