＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠

　　　　　　Be88-BASIC　　互換モード　　by ＳＨＩＮＴＡ

＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠



★★★　互換モードについて　★★★

　Be88-BASIC は、N88-BASIC の DISK 版（ DISK-BASIC ）と MS-DOS 版（ DOS-BASIC ）の両方をサポートしています。
　DISK-BASIC と DOS-BASIC はほとんど同じですが、若干異なる部分もあります。そこで、この小さな違いに対応するために、Be88-BASIC では互換モードを設定することが可能です。互換モードを DISK-BASIC にすれば、プログラムの実行結果が DISK-BASIC と同じになり、互換モードを DOS-BASIC にすれば実行結果が DOS-BASIC と同じになります。
　以下に、互換モードの設定による具体的な違いを述べます。



★★★　コンパイル時の違い　★★★

　現在のところ、コンパイル時は、互換モードによる違いはありません。DISK-BASIC 互換でも DOS-BASIC のプログラムをコンパイルできますし、逆も可能です。



★★★　実行時の違い　★★★

　プログラムを実行する際には、互換モードによって以下のような違いが生じます。


［　KINPUT 命令　］

　DISK-BASIC モードでは "？" がプロンプトとして表示されますが、DOS-BASIC モードでは表示されません。


［　日本語の文字コード　］

　DISK-BASIC は文字コードとして JIS（ NEC-JIS ）を用いていますが、DOS-BASIC は Shift-JIS です。Be88-BASIC では、互換モードによってこの違いを正しく反映しています。
　実行結果に違いが出るのは、

INSTR, KINSTR, LEN, KLEN
LEFT$, MID$, KMID$, RIGHT$

の 8 つの関数です。
　例えば、

LEN("Aあ")

は、DISK-BASIC モードだと

7　　（アルファベット 1 + KI コード 2 + 日本語 2 + KO コード 2 ）

となりますが、DOS-BASIC モードだと

3　　（アルファベット 1 + 日本語 2 ）

となります。



★★★　自動判別について　★★★

　互換モードの設定を自動判別にすると、入力されたプログラムに応じて互換モードを自動的に切り替えます。
　自動判別にした場合、基本的には DISK-BASIC 互換モードになりますが、以下の場合は DOS-BASIC 互換モードになります。

・CONSOLE 命令に第 5 引数がある。
・MOUSE 関数、MOUSE 命令が使われている。
・ON MOUSE GOSUB 命令が使われている。


