MSX Datapack wiki化計画

4章 BASICの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}←[[3章 システムの動作モード]]                                                       ,{BSIZE:0|RIGHT}[[5章 BIOS]]                                                                      →


,{c B0},{BSIZE:0}
,{c B1},{BSIZE:1|SIZE:100|CENTER}
!!4.1 追加された命令

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

::CALL PAUSE

,機 能{SIZE:100|CENTER}
 指定された時間だけポーズします。
,書 式{SIZE:100|CENTER}
CALL PAUSE(ポーズ時間)
,文 例{SIZE:100|CENTER}
 CALL PAUSE(1000)      1秒間ポーズ
,解 説{SIZE:100|CENTER}
 指定された時間だけBASICプログラムの実行を停止します。ポーズ時間の単位はミリ秒です。CALL PAUSE実行中は、割り込みは許可されています。CALL PAUSE実行中でも、[CTRL] + [STOP]キーでプログラムを中断することができます。CPUの実行速度の影響を受けないタイミングをとるときに使います。

::CALL PCMPLAY

,機 能{SIZE:100|CENTER}
 PCM音を再生します。
,書 式{SIZE:100|CENTER}

,{t},{BSIZE:0}
,{c},{BSIZE:0},{BSIZE:0}
,"CALL PCMPLAY(@開始番地, 終了番地, サンプリングレート)    ",'''メインRAMからの再生'''
,"CALL PCMPLAY(@開始番地, 終了番地, サンプリングレート,S)",'''VRAMからの再生'''
,"CALL PCMPLAY(配列変数名, [長さ], サンプリングレート)",'''配列変数からの再生'''

,文 例{SIZE:100|CENTER}
 CALL PCMPLAY(@&HB000,&HBFFF,1)
メインメモリの&HB000番地から&HBFFF番地をPCMデータとして再生します。サンプリングレートは7.875KHzとします。
,解 説{SIZE:100|CENTER}
 メインRAMまたはVRAMの内容をPCMデータとして、指定されたサンプリング周波数で再生します。
・サンプリングレート
 サンプリングレートを指定します。
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0 1 0|SIZE:60},{BSIZE:1 0 1 0}
,値 ,サンプリングレート(KHz)
,{c},{BSIZE:0|SIZE:50},{BSIZE:0|SIZE:200}
,0  ,15.75
,1  ,7.875
,2  ,5.25
,3  ,3.9375

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

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

,注 意{SIZE:100|CENTER}
 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
,機 能{SIZE:100|CENTER}
音声をPCM録音します。
,書 式{SIZE:100|CENTER}
CALL PCMREC(@開始番地, 終了番地, サンプリングレート [,[トリガレベル][,圧縮スイッチ]])       '''メインRAMへの録音'''
CALL PCMREC(@開始番地, 終了番地, サンプリングレート ,[トリガレベル],[圧縮スイッチ],S)       '''VRAMへの録音'''
CALL PCMREC(配列変数名, [長さ], サンプリングレート [,[トリガレベル][, 圧縮スイッチ]])       '''配列変数への録音'''
,文 例{SIZE:100|CENTER}
 CLEAR 300,&HB000
 CALL PCMREC(@&HB000,&HBFFF,1)
メインメモリの&HB000番地から&HBFFF番地にPCM録音します。サンプリングレートは7.875KHzとします。
,解 説{SIZE:100|CENTER}
 音声をPCM方式で、指定された周波数でサンプリングし、メインRAM、VRAM、または配列変数に録音します。

・サンプリングレート
 サンプリングレートを指定します。
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0 1 0|SIZE:60},{BSIZE:1 0 1 0|SIZE:200}
,値 ,サンプリングレート(KHz)
,{c},{BSIZE:0},{BSIZE:0}
,0  ,15.75
,1  ,7.875
,2  ,5.25
,3  ,3.9375

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

・圧縮スイッチ
 無音データ圧縮を行うかどうかを指定します。
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0 1 0|SIZE:60},{BSIZE:1 0 1 0|SIZE:200}
,値 ,意味
,{c},{BSIZE:0},{BSIZE:0}
,省略,圧縮しない
,0   ,圧縮しない
,1   ,圧縮する

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

,注 意{SIZE:100|CENTER}
 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
,解説{SIZE:100|CENTER}
 これらの命令で、ファイル名に「CAS:」を指定すると、「Bad file name」エラーになります。また、MSX-DOS2で、ディスクファイルを指定するときは、ファイル名をフルパスで指定することができます。

::COPY/FILES/KILL/LFILES/NAME
,解説{SIZE:100|CENTER}
 MSX-DOS2に対応しました。MSX-DOS2を使っているときは、ファイル名をフルパスで指定することができます。
!!4.3 削除された命令

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

::CLOAD/CSAVE/MOTOR
,解説{SIZE:100|CENTER}
 これらの命令を実行すると、「Syntax error」になります。

,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}←[[3章 システムの動作モード]]                                                       ,{BSIZE:0|RIGHT}[[5章 BIOS]]                                                                      →