MSX Datapack wiki化計画

8章 アプリケーション作成上の注意

 MSX turbo Rで、アプリケーションプログラムを作成するときは、以下の点に注意して下さい。

 8.1 MAIN ROMのバージョン番号

 MAIN ROMの002DH番地に入っているシステム(BASIC)のバージョン番号は以下のとおりです。

表1.8 MAIN ROMのバージョン番号

機種BASICのバージョン番号002DH番地の内容
MSX BASIC 1.xx 00H
MSX2 BASIC 2.xx 01H
MSX2+ BASIC 3.xx 02H
MSX turbo R BASIC 4.xx 03H

 MSX turbo Rであるかどうかは、MAIN ROMの002DH番地の内容が、03H以上であるかどうか(≧3)で判断してください。決して、3であるかどうか(=3)で調べてはいけません。

 8.2 MSX2+およびMSX turbo Rで動作するソフトウェア

 MSX2+(またはMSX2)とMSX turbo Rとの両方で動作し、MSX turbo RのときはR800モードで動かしたいMSX-DOS1のアプリケーションは、動作しているシステムがMSX turbo Rであることを確認したら、BIOSのCHGCPUをコールし、CPUをR800に切り換えることができます。
 ただし、このアプリケーションがMSX-DOS1のファンクションを呼び出すときには、CPUをZ80に切り換えてから呼び出すようにして下さい。MSX-DOS1はR800のスピードに対応していないので、R800でMSX-DOS1のファンクションを実行すると、ファイルを壊してしまう可能性があります。
 また、基本的にこのようなアプリケーションは、MSX-DOS1やBASICのコマンド待ちの状態に返ってはいけません。R800とMSX-DOS1とを組み合わせたときの動作は、保証されていません。どうしてもアプリケーションを終了したいときには、MAIN ROMの0番地にジャンプして下さい。MSX-DOS1やBASICのコマンド待ちに戻ることが必要なアプリケーションは、戻った時には必ずZ80が選択されているようにして下さい。
 Z80はIX・IYレジスタの8ビットアクセスを保証していませんが、これを使用しているソフトウェアが多くみられます。R800ではこれを保証しているので問題ありませんが、以下のような場合にZ80とは異なった動作をします。
 例えば、

            LD      IXH,IXL

 に対する正しいオブジェクトはDD 65ですが、アセンブラによっては、DD DD 65というオブジェクトを生成するものがあります。
 このオブジェクトはZ80では偶然に正しく動作するようですが、R800では動作が保証されていません。十分にご注意下さい。