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では動作が保証されていません。十分にご注意下さい。