MSX Datapack wiki化計画

4章 BASIC

 4.1 追加された命令

 MSX turbo Rでは、PCM命令などの機能が追加されたので、BASICでもそれらの機能が使えるよう、CALL PAUSE、CALL PCMPLAY、CALL PCMREC命令が追加されました。
 以下ではそれぞれの命令について説明します。

CALL PAUSE
機 能

 指定された時間だけポーズします。

書 式
CALL PAUSE(ポーズ時間)

文 例
CALL PAUSE(1000)      1秒間ポーズ
解 説

 指定された時間だけBASICプログラムの実行を停止します。ポーズ時間の単位はミリ秒です。CALL PAUSE実行中は、割り込みは許可されています。CALL PAUSE実行中でも、[CTRL] + [STOP]キーでプログラムを中断することができます。CPUの実行速度の影響を受けないタイミングをとるときに使います。

CALL PCMPLAY
機 能

 PCM音を再生します。

書 式

CALL PCMPLAY(@開始番地, 終了番地, サンプリングレート)    メインRAMからの再生
CALL PCMPLAY(@開始番地, 終了番地, サンプリングレート,S)VRAMからの再生
CALL PCMPLAY(配列変数名, [長さ], サンプリングレート)配列変数からの再生
文 例
CALL PCMPLAY(@&HB000,&HBFFF,1)

メインメモリの&HB000番地から&HBFFF番地をPCMデータとして再生します。サンプリングレートは7.875KHzとします。

解 説
 メインRAMまたはVRAMの内容をPCMデータとして、指定されたサンプリング周波数で再生します。
・サンプリングレート
 サンプリングレートを指定します。
サンプリングレート(KHz)
0 15.75
1 7.875
2 5.25
3 3.9375

・長さ
 省略できます。省略したときは、配列変数の内容すべてを再生します。

 データの形式はアブソリュートバイナリで、1〜255が通常のデータです。0は特殊なデータで、0の後に続く1バイトで指定された回数分、0レベル(127)を出力します。

注 意

 Z80モードのときには、自動的にR800モードに切り換えて実行し、終わるとZ80モードに戻ります。再生中に、STOPキーが押されるとプログラムの実行を中断し、BASICに戻ります。
MSX-BASICでは、&Hで表現できる16進数は&H0000〜&HFFFFの4桁であることと、&H8000〜&HFFFFは負の数であることに注意してください。これは、メインRAMを指定する際には問題にはなりませんが、VRAMを指定するときには注意が必要です。例えば、VRAMの後半の64KBを再生するには、

CALL PCMPLAY(@65536,131071,2,S)

のように指定しなければなりません。(131071=65536×2-1)。これを、

CALL PCMPLAY(@65536,131071,2,S)

のように指定すると、「Overflow」エラーになります。また、

CALL PCMPLAY(@&HFFFF+1,&H1FFFF×2+1,2,S)

は、&HFFFF+1=-1+1=0と&HFFFF×2+1=-1×2+1=-1=&HFFFFとで、CALL PCMPLAY(@0,&HFFFF,2,S)と同じになります。

CALL PCMREC
機 能

音声をPCM録音します。

書 式
CALL PCMREC(@開始番地, 終了番地, サンプリングレート [,[トリガレベル][,圧縮スイッチ]]) メインRAMへの録音
CALL PCMREC(@開始番地, 終了番地, サンプリングレート ,[トリガレベル],[圧縮スイッチ],S) VRAMへの録音
CALL PCMREC(配列変数名, [長さ], サンプリングレート [,[トリガレベル][, 圧縮スイッチ]]) 配列変数への録音

文 例
CLEAR 300,&HB000
CALL PCMREC(@&HB000,&HBFFF,1)

メインメモリの&HB000番地から&HBFFF番地にPCM録音します。サンプリングレートは7.875KHzとします。

解 説
 音声をPCM方式で、指定された周波数でサンプリングし、メインRAM、VRAM、または配列変数に録音します。

・サンプリングレート
 サンプリングレートを指定します。

サンプリングレート(KHz)
0 15.75
1 7.875
2 5.25
3 3.9375

・トリガレベル
 録音開始時の入力レベルを指定します。値の範囲は、0〜127です。省略されたときや0のときは、ただちに録音を開始します。

・圧縮スイッチ
 無音データ圧縮を行うかどうかを指定します。

意味
省略圧縮しない
0 圧縮しない
1 圧縮する

・長さ
 省略できます。省略したときは、配列変数の内容すべてに録音します。
 データの形式はアブソリュートバイナリで、1〜255が通常のデータです。0レベル付近(126〜128)のデータが2つ以上連続したときは、0とその連続した回数を記録することによって、データを圧縮できます。この圧縮を無音データ圧縮といいます。

注 意

 Z80モードのときには、自動的にR800モードに切り換えて実行し、終わるとZ80モードに戻ります。また、Z80モードやR800 ROMモードのときに、サンプリングレートを15.75KHzに指定すると、「Illegal function call」エラーになります。録音中に、[STOP]キーが押されるとプログラムの実行を中断し、BASICに戻ります。
VRAMへ録音するときは、CALL PCMPLAYと同じように、指定する番地に注意して下さい。

 4.2 変更された命令

 MSX turbo Rでは、MSX-DOS2が標準搭載され、カセットインターフェイスが削除されたので、ファイル名をパラメータとする命令の仕様が変わりました。
 以下では、それぞれの命令について説明します。

BLOAD/BSAVE/LOAD/MERGE/OPEN/RUN/SAVE
解説

 これらの命令で、ファイル名に「CAS:」を指定すると、「Bad file name」エラーになります。また、MSX-DOS2で、ディスクファイルを指定するときは、ファイル名をフルパスで指定することができます。

COPY/FILES/KILL/LFILES/NAME
解説

 MSX-DOS2に対応しました。MSX-DOS2を使っているときは、ファイル名をフルパスで指定することができます。

 4.3 削除された命令

 MSX turbo Rでは、カセットインターフェイスが削除されました。それにともなって、カセットテープ関連の命令が削除されました。
 以下では、それぞれの命令について説明します。

CLOAD/CSAVE/MOTOR
解説

 これらの命令を実行すると、「Syntax error」になります。