ワンポイントテクニック No.007

表示エリアを変更する

BFC9Ehを書き換えるとスクロールする範囲を指定(1〜4の範囲)できます。

 POKE &BFC9E,1 [RETURN]

とすると一番上のラインしか使用出来なくなります。
 元に戻すには

 POKE &BFC9E,4 [RETURN]

としてください。簡単に言えばN88BASICのCONSOLE命令の第2パラメータと同じようなもの(ちょっと違うけど)です。つまり、「1」ではなく「3」を書き込んだら上3行をスクロールさせて一番下の行にスコアを表示するという使いかたができる(といっても少し工夫が必要ですが・・・)のです。

 なお、これとNo.006のテクニックと組み合わせることにより、表示に利用できるエリアを変えることができます。これを使って、簡易的に昔のポケコンをエミュレートすることができます。

機種名 BFC9Dh BFC9Eh 注意点
PC-1250シリーズ 24 1 プログラムの最初にWAITをつける
PRINT文やINPUT文の後ろには必ずCLSを付ける
PC-1245シリーズ
PC-1401シリーズ
16 1 同 上
PC-1350シリーズ 24 4 プログラムの最初にWAITをつける
CURSORをLOCATEに変える
 例えば、PC−1250をエミュレーションさせる場合、まず、その機種で動作するプログラムを「注意点」に気を付けて入力してください。BFC9Dhが「24」BFC9Ehが「1」なので、

 POKE &BFC9D,24,1 [RETURN]

とします。なお、簡易的なものなので、POKE、CALL、PEEKを使っているものや論理式を利用しているもの、その他機種依存している処理がある場合に関してはそのままでは正常に動作しません。当然のことながらマシン語プログラムは動作しません。あとゲームなどでは速すぎて困るというものがあるかもしれません(オイオイ)。
 つまり、エミュレータといっても画面表示エリアのみのエミュレータ(?)であって、残りはBASICの文法の互換性により実現しているためなのです(笑)。
 なお、プログラム終了時には

POKE &BFC9D,40,4 [RETURN]

として元の状態に戻してください。
 このエミュレータに何の意味があるのかというと・・・このくらいしかこのテクニックが使えるものが思い浮かばなかったからです(笑)。

(注)POKEやCALLをしているプログラムは絶対にエミュレータで実行しないでください!

 あとこのテクニックは意図的に表示エリアを小さくして表示速度を上げるというという使用方法もあります。これは、OPASと組み合わせることで効果が発揮出来ます。表示に使用できるのが画面左のみという制約がありますが、うまく使えば20%程度の表示の高速化が可能です。


RETURN

inserted by FC2 system