リザーブエリアの調査と活用
リザーブエリアとは メモリの0000~00FFまでの領域で、ユーザーは使用できないことになっているが、電源OFFやNEW,CLEAR文でも0クリアされなかったり、逆に電源ONで自動的にクリアされる領域があったりと、使う側にしてはおいしい仕様になっている。
とくにPC-G801では、少ないメモリを有効活用するために、小さな領域しか占有しないワークエリアは積極的にリザーブエリアに取ることが望ましい。
調査方法
BASICプログラムでリザーブエリアを特定の値で埋める
電源OFF/ONおよびTEXT、CASLモード、BASICプログラムの走行などをテスト
モニタで0000-00FFをダンプして破壊の状態を調べる。
PC-G801
0000H-003FH
電源ON時にベクタが初期化され、ベクタ以外の領域もゼロクリアされる。(0000-003Fをゼロクリアした後にベクタを書き込んでいると言うほうが正しいかも)
ベクターのスキマをワークエリアとして使用することが出来る。
この領域が電源ONでクリアされることを逆手にとってデバッグ用、パラメータの受け渡し用、一時変数領域として使用すると便利。
0番地付近にあるため
マシン語モニタで内容を確認しやすい。
0040H-0065H
この領域は電源ON時にもクリアされないため、ハイスコアなどを記録しておくのに利用できる。
0066H-00FFH
0066HにはNMIのベクタがある。G801では使用していないようで。ED 45(RETN)が書き込まれている。将来NMIを使用するかもしれないので0066Hからの3バイトは避けて。0069Hから使用するのが望ましい。
この領域は電源ON時にもクリアされないのでプログラムやデータの格納に使用できる。
マシン語プログラムを格納すれば、BASICのフリーエリアの圧迫を抑えることも可能。
また完全に00FFHまでに収めることが出来れば、モニタのUSERコマンドで機械語領域を確保する手間も省ける。
※マニュアルがなかったため、CASLを本格的に使用した際にこの領域が使用されることがあるのかを調査することは出来なかった。
PC-G850
未調査
PC-G850S
未調査
最終更新:2013年02月25日 03:34