MSX Datapack wiki化計画

4.3 MSX-AUDIO 拡張BIOSの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。

{{include unfinished_page}}
,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}← [[4.2 拡張BASIC|4.2 MSX-AUDIO 拡張BASIC]]                                        ,{BSIZE:0|RIGHT} [[4.4 MBIOS|4.4 MSX-AUDIO MBIOS]]                                               →

!!4.3.1 はじめに

MSX-AUDIOでは、アプリケーションソフトウェア用のサービスルーチンとして、拡張BIOSとMBIOS(Music BIOS)コールを用意しています。拡張BIOSコールにより、アプリケーションソフトウェアはそのスロットアドレスやアドレスなどの位置を調べ、インタースロットコールなどを使って、ジャンプテーブルを経由して呼び出します。
高速処理を必要とする場合は、あらかじめスロットをイネーブルしておき、直接コールすることも出来ます。この章では、MSX-AUDIO拡張BIOSを使用するのに必要な、拡張BIOSコールの方法と各BIOSの機能について解説します。

!!4.3.2 拡張BIOSの呼び出し

1.ジャンプテーブルアドレスの取得
アプリケーションは、まず以下の拡張BIOSコールにより、MSX-AUDIO拡張BIOSの存在するスロットとジャンプテーブルの先頭アドレスを調べなければなりません。
拡張BIOSの存在するスロットとジャンプテーブルの先頭アドレスは、以下のようにして求めます。

++ RETURN情報エリア用のワークエリア(64バイト)を取る
++ 以下の設定を行い、FFCAH番地をコールする

, コール手順 
 D  デバイス番号 (10)
    MSX-AUDIO拡張BIOSのデバイス番号は10
 E  機能番号 (0)
 B  RETURN情報エリアのスロットアドレス
    スロットアドレスは、システムワークエリアに保存されている
 HL RETURN情報エリアの先頭アドレス 

RAMのスロットアドレスは以下のワークエリアに保存されています。このワークエリアはディスクが接続されているシステムで有効です。ディスクが接続されていないシステムではRAMのスロットアドレスを探す場合は、サンプルプログラムの「RAMSRCH.MAC」や「AUDIO.MAC」を参照して下さい。

表7.58 RAMスロットアドレス
,ページ,ワークエリアのアドレス
,0,F341H
,1,F342H
,2,F343H
,3,F344H

, 戻り値 
 B    次のRETURN情報エリアのスロットアドレス
 HL   次のRETURN情報エリアの先頭アドレス

, 変更レジスタ 
 F

RETURN情報はアプリケーションが指定した領域に次のように格納されます。

{{svg 図7.33.svg,,size:500x210}}
//,B:HL         --->,ジャンプテーブルのスロットアドレス
//,    ,ジャンプテーブルの先頭アドレス(下位)
//,    ,ジャンプテーブルの先頭アドレス(上位)
//,    ,リザーブ(常に0)
//,B:HL returned -->,
'''図7.33  RETURN情報の形式'''


MSX-AUDIOが無いときは、BレジスタとHLレジスタの内容が変わらずに帰ってきます。
スロットアドレスの表現はMSX共通で以下の通りです。

{{svg 図7.34.svg,,size:570x160}}
// 7,6,5,4,3,2,1,0
// F,0,0,0,S,S,P,P
// |       | | *-*-----基本スロット番号
// |       *-*---------拡張スロット番号 
// *-------------------拡張スロットを指定する場合に1
'''図7.34 スロットアドレスの形式'''

拡張BIOSを使用する場合は、この拡張BIOSコールで得られたジャンプテーブルをインタースロットコールなどにより呼び出し、目的のBIOSを使用します。


!!4.3.3 MSX-AUDIOの数のチャンネル獲得

MSX-AUDIOの仕様では、1つのMSXシステムに同時に2つのMSX-AUDIO LSIが実装されている場合があります。そのため、MSX-AUDIOが幾つあるかを調べます。


, コール手順 
 D  デバイス番号 (10)
 E  機能番号 (1)
 A  0

, 戻り値 
 A  MSX-AUDIOの数
    0    MSX-AUDIOカートリッジは存在しない
    1    MSX-AUDIOカートリッジは1つ
    2    MSX-AUDIOカートリッジは2つ

, 変更レジスタ 
 BC,DE,HL以外


!!4.3.4 拡張BIOSジャンプテーブルの獲得

MSX-AUDIO拡張BIOSは以下に示すジャンプテーブルを持っています。アプリケーションプログラムはインタースロットコールなどで、各エントリを呼び出すことにより、拡張BIOSの各機能を利用できます。

*表7.59 ジャンプテーブル*
,先頭からのオフセット(バイト),名称,機能
, 0,VERSION  ,ソフトウェアのバージョン番号(現在、3バイトとも0)
, 3,MBIOS    ,MBIOS(Music BIOS)の呼び出し
, 6,AUDIO    ,MSX-AUDIOの初期化
, 9,SYNTHE   ,付属アプリケーションプログラムの呼び出し
,12,PLAYF    ,PLAY文の動作状態の獲得
,15,BGM      ,BGMモードの設定/解除
,18,MKTEMPO  ,MK(Music Keyboard)再生/記録のテンポの設定
,21,PLAYMK   ,MK演奏の再生
,24,RECMK    ,MK演奏の記録
,27,STOPM    ,MKの再生/記録、ADPCM記録/再生、PLAY文の停止
,30,CONTMK   ,MK再生記録の継続
,33,RECMOD   ,MK記録モードの設定
,36,STPPLY   ,PLAY文の停止
,39,SETPCM   ,ADPCM/PCM領域確保
,42,RECPCM   ,ADPCM/PCMの録音
,45,PLAYPCM  ,ADPCM/PCMの再生
,48,PCMFREQ  ,ADPCM/PCM再生周波数の変更
,51,MKPCM    ,MK用ADPCMデータの設定/解除
,54,PCMVOL   ,ADPCM/PCM再生音量の設定
,57,SAVEPCM  ,ADPCM/PCMデータのセーブ
,60,LOADPCM  ,ADPCM/PCMデータのロード
,63,COPYPCM  ,ADPCM/PCMデータの転送
,66,CONVP    ,ADPCMデータをPCMデータに変換
,69,CONVA    ,PCMデータをADPCMデータに変換
,72,VOICE    ,FM音源データの設定
,75,VOICECOPY,FM音源データの移動


!!4.3.5 表記法

::AUDIO         6
            └───────ジャンプテーブル先頭からのオフセット
 └───────拡張BIOSの名称
,機能
 └───────機能の概略です。
,コール手順
 └───────その拡張BISOを使用するに当たって、準備する手順です。。
,戻り値
 └───────拡張BIOSをコールしたことによる結果です。
,解説
 └───────その拡張BIOSの機能を詳しく解説します。
,注意
 └───────注意すべき点を解説します。


MSX-AUDIOの拡張BIOSコールでは、特に断りが無い限り、すべてのレジスタは保存されません。

::AUDIO          6
,機能
MSX-AUDIOを初期化します。

,コール手順
【BUF(F55EH)】に以下のパラメータを設定します。
,BUF,PLAY文で使用するFM音源用文字列の数(0〜9)
,+1 ,モードスイッチ*
,+2 ,インスツルメントに使用するFM音源の数(0〜9)
,+3 ,PLAY文第1文字列で使用するFM音源の数(0〜9)
,+4 ,PLAY文第2文字列で使用するFM音源の数(0〜8)
,+5 ,PLAY文第3文字列で使用するFM音源の数(0〜7)
,+6 ,PLAY文第4文字列で使用するFM音源の数(0〜6)
,+7 ,PLAY文第5文字列で使用するFM音源の数(0〜5)
,+8 ,PLAY文第6文字列で使用するFM音源の数(0〜4)
,+9 ,PLAY文第7文字列で使用するFM音源の数(0〜3)
,+10,PLAY文第8文字列で使用するFM音源の数(0〜2)
,+11,PLAY文第9文字列で使用するFM音源の数(0〜1)

*モードスイッチ
,bit0,0,リズムを使用しない
,    ,1,リズムを使用する
,bit1,0,PLAY文でADPCMを扱わない
,    ,1,PLAY文でADPCMを扱う
,bit2,0,MSX-AUDIOをCMSモードにしない
,    ,1,MSX-AUDIOをCMSモードにする

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、初期化は行われません。

,解説
MSX-AUDIOシステムを初期化します。「SYNTHE」と「MBIOS」を除く全ての機能はこの初期化をした後、使用できます。

,注意
FM音源の総数はリズムを使用しないときは9まで、使用するときは6までです。

::SYNTHE          9
,機能
付属アプリケーションプログラムを呼び出します。

,コール手順
なし

,戻り値
なし

,解説
付属アプリケーションプログラムに制御を移します。もし、以前にAUDIOが呼ばれていると、なにもせずにリターンします。

,注意
BASICでCLEAR文を実行した後には、付属のアプリケーションプログラムは起動しないでください。最悪の場合、暴走する可能性があります。


::SETPCM          39
,機能
ADPCM/PCMの音声ファイルを初期化します。

,コール手順
【BUF(F55EH)】に以下のパラメータを設定します。
,BUF,音声ファイル番号(0〜15)
,+1 ,デバイス番号(0〜5、ただし4を除く)
,+2 ,モード(0か1)
,+3 ,デバイス番号によって異なる
,+4 ,デバイス番号によって異なる
,+5 ,長さの下位8ビット
,+6 ,長さの上位8ビット
,+7 ,サンプリング周波数の下位8ビット
,+8 ,サンプリング周波数の上位8ビット
,+9 ,チャンネル番号(0か1)

BUF+3とBUF+4のパラメータはデバイス番号によって以下のように異なります。

デバイス番号0か2のとき(外部RAM)
,+3 ,設定する必要はない
,+4 ,設定する必要はない

デバイス番号1か3のとき(外部RAM)
,+3 ,ROM音声ファイル番号
,+4 ,必ず0

デバイス番号5のとき(外部RAM)
,+3 ,VRAMアドレスの下位8ビット
,+4 ,VRAMアドレスの上位8ビット

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、設定は行われません。

,注意
デバイス番号4(CPU)は使用できません。

::RECPCM          42
,機能
音声を音声ファイルに録音します。

,コール手順
【BUF(F55EH)】に以下のパラメータを設定します。
,BUF,音声ファイル番号(0〜15)
,+1 ,SYNC(0か1)
,+2 ,オフセットの下位8ビット
,+3 ,オフセットの上位8ビット
,+4 ,長さの下位8ビット
,+5 ,長さの上位8ビット
,+6 ,サンプリング周波数の下位8ビット
,+7 ,サンプリング周波数の上位8ビット
,+8 ,チャンネル番号(0か1)
長さ、サンプリング周波数にSETPCMで設定した値を使用するときは、各パラメータに0FFFFHを設定してください。
チャンネル番号SETPCMで設定した値を使用するときは、チャンネル番号に0FFHを設定してください。

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、録音は行われません。


::PLAYPCM          45
,機能
音声ファイルを再生します。

,コール手順
【BUF(F55EH)】に以下のパラメータを設定します。
,BUF,音声ファイル番号(0〜15)
,+1 ,REPEAT(0か1)
,+2 ,オフセットの下位8ビット
,+3 ,オフセットの上位8ビット
,+4 ,長さの下位8ビット
,+5 ,長さの上位8ビット
,+6 ,サンプリング周波数の下位8ビット
,+7 ,サンプリング周波数の上位8ビット
,+8 ,チャンネル番号(0か1)
長さ、サンプリング周波数にSETPCMで設定した値を使用するときは、各パラメータに0FFFFHを設定してください。
チャンネル番号SETPCMで設定した値を使用するときは、チャンネル番号に0FFHを設定してください。

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、再生は行われません。


::PCMFREQ          48
,機能
再生周波数を変更します。

,解説
ローカルモード再生中にサンプリング主は数を変えます。再生中でないと効果はありません。

,コール手順
 BC   第1チャンネルのサンプリング周波数
 DE   第2チャンネルのサンプリング周波数
      範囲は1800〜49716で、単位はHzです。
      第2チャンネルがないときは、DEレジスタにBCレジスタと同じ値を設定して下さい。

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、サンプリング周波数の変更は行われません。


::PCMVOL          54
,機能
ADPCM/PCM再生音量を設定します。

,コール手順
 BC   第1チャンネルの再生音量
 DE   第2チャンネルの再生音量
      範囲は0〜63で、63が最大音量です。
      第2チャンネルが存在しないときは、DEレジスタにBCレジスタと同じ値を設定して下さい。初期値はADPCMでは63、PCMでは32です。

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、音量設定は行われません。


::SAVEPCM          57
,機能
ADPCM/PCM音声ファイルをフロッピーディスクへセーブします。

,コール手順
 A    音声ファイル番号
 HL   ファイル名のあるアドレス
      ファイル名はDISK BASICのファイルスペックに適合する文字列の前後にダブルクオート(22H)を置き、最後に0を置きます。

 FILENAME: DB       22H,"A:VOICE.PCM",22H, 0

,戻り値
音声ファイル番号が正しくないときはキャリーフラグを立てて戻り、セーブは行われません。

,注意
ファイル名が正しくなかったり、ディスクが入っていないなどのエラーが起きるとBASICインタープリタのエラー処理ルーチンに制御が移ります。これを避けるためには、【H.ERRO(FFB1H)】というフックを設定して、ユーザープログラム側でエラー処理を行って下さい。
フロッピーディスク以外のデバイス名を指定しても正しい動作は行われません。

■音声ファイルのフォーマット
音声ファイルは3つのブロックからなります。最初は7バイトのヘッダブロックです。
これはBSAVEステートメントでセーブされるでーたの先頭と同じで、音声ファイルをBLOAD文でロードできるようになっています。次は8バイトのインフォーメーションブロックです。ここには、せー宇されているADPCM/PCMデータについての情報が書かれています。最後が実際のADPCM/PCMデータです。
  
{{svg 図7.35.svg,,size:410x560}} 
図7.35 音声ファイルのフォーマット

::LOADPCM          60
,機能
ADPCM/PCM音声ファイルをフロッピーディスクからロードします。

,コール手順
 A    音声ファイル番号
 HL   ファイル名のあるアドレス
      ファイル名はDISK BASICのファイルスペックに適合する文字列の前後にダブルクオート(22H)を置き、最後に0を置きます。

 FILENAME: DB       22H,"A:VOICE.PCM",22H, 0
 
,戻り値
音声ファイル番号が正しくなかったり、SAVEPCMでセーブされたファイルでないファイルをロードしようとしたときは、キャリーフラグを立てて戻り、ロードは行われません。

,注意
ファイル名が正しくなかったり、フロッピーディスクが入っていないなどのエラーが起きるとBASICインタープリタのエラー処理ルーチンに制御が移ります。これを避けるためには、【H.ERRO(FFB1H)】というフックを設定して、ユーザープログラム側でエラー処理を行って下さい。
フロッピーディスク以外のデバイス名を指定しても正しい動作は行われません。


::COPYPCM          63
,機能
ADPCM/PCMのデータを音声ファイル間で転送します。

,コール手順
【BUF(F55EH)】に以下のパラメータを設定します。

,BUF,ソース音声ファイル番号
,+1 ,デスティネーション音声ファイル番号(0〜15)
,+2 ,ソースオフセットの下位8ビット
,+3 ,ソースオフセットの上位8ビット
,+4 ,長さの下位8ビット
,+5 ,長さの上位8ビット
,+6 ,デスティネーションオフセットの下位8ビット
,+7 ,デスティネーションオフセットの上位8ビット
,+8 ,ソース指定(0か1)

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、データの転送は行われません。


::CONVP          66
,機能
PCM形式のデータをADPCM形式のデータに変換します。

,コール手順
【BUF(F55EH)】に以下のパラメータを設定します。

,BUF,ソース音声ファイル番号(0〜15)
,+1 ,デスティネーション音声ファイル番号(0〜15)

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、データの転送は行われません。


::CONVA          69
,機能
ADPCM形式のデータをPCM形式のデータに変換します。

,コール手順
【BUF(F55EH)】に以下のパラメータを設定します。

,BUF,ソース音声ファイル番号(0〜15)
,+1 ,デスティネーション音声ファイル番号(0〜15)

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、データの転送は行われません。


::MKTEMPO          18
,機能
ミュージックキーボード演奏記録、再生速度とメトロノーム機能の速度を設定します。

,コール手順
 DE    テンポ
       範囲は25〜360で、単位は1分間あたりの四分音符の数です。

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、設定は行われません。


::MKPCM          51
,機能
ミュージックキーボードで演奏するADPCM音声ファイルを音声ファイル番号で指定します。

,コール手順
 A     音声ファイル番号
       範囲は0〜15です。演奏を止めるには0FFHを指定します。

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、指定は行われません。

,注意
ローカルモード以外の音声ファイルを指定した場合、演奏されません。

■ミュージックキーボード演奏の記録、再生
 ミュージックキーボード(MK)演奏は以下の形式でメモリに記録します。

キーが押されたときのデータ(3バイト)
,オフセット,内容
,0,ディレイバイト(0〜255) *1
,1,ビット7      キーオンID(1)
, ,ビット6〜0   キーコード番号(1〜125) *2
,2,ベロシティ(0〜15) *3

キーが離されたときのデータ(2バイト)
,オフセット,内容
,0,ディレイバイト(0〜255) *1
,1,ビット7      キーオフID(0)
, ,ビット6〜0   キーコード番号(1〜125) *2

ノーオペレーション(2バイト) *4
,オフセット,内容
,0,ディレイバイト(0〜255) *1
,1,ノーオペレーションID(0か127)

終了マーク(2バイト)
,オフセット,内容
,0,ディレイバイト(0〜255) *1
,1,終了ID(126)

*1  ディレイバイト
キーが押されたり離されたりすることをイベントと呼びますが、ディレイバイトとは前のイベントが起きてから今回のイベントが青着るまでの経過時間で、MKTEMPOによりMSX-AUDIO LSIに設定されたタイマ割り込みの回数が書かれています。
*2  キーコード
キーコードは音程を指定するコードで中央Cが60です。
*3  ベロシティ
ベロシティはキーを押した速度を意味します。現在のMSX-AUDIOでは速度検出型の鍵盤をサポートしていないので、あらかじめ設定されたベロシティが書かれます。
これは拡張BASICではCALL MKVELで、MBIOSではSM_MKで設定します。
*4  ノーオペレーション
ディレイバイトにより記憶できるイベントの経過時間はタイマ割り込みの回数で255までです。よって、それ以上の時間イベントがないときに書かれるデータがノーオペレーションデータです。


::PLAYMK          21
,機能
MK記録を再生します。

,コール手順
 BC    MK演奏記録データの開始番地
 DE    MK演奏記録データの最終番地

,戻り値
なし


::RECMK          24
,機能
MK演奏を記録します。

,コール手順
 BC    MK演奏記録データの開始番地
 DE    MK演奏記録データの最終番地

,戻り値
なし


::CONTMK          30
,機能
STOPMによって停止していたMK再生/記録を継続します。

,コール手順
なし

,戻り値
なし


::RECMOD          33
,機能

,コール手順
MK記録の記録モードを設定します。

,戻り値
 A     モード
       0       ミューティング(記録しない)
       1       MK演奏を記録
       2       MK再生を記録
       3       MK演奏と再生を両方とも記録

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、設定は行われません。


::MBIOS          3
,機能
MBIOSを呼び出します。

,コール手順
MBIOSのエントリアドレスをHLレジスタに設定します。またほかのレジスタはMBIOSの各ルーチンによって設定が異なります。IXレジスタとIYレジスタはインタースロットコールに使われるため、そのままでは渡すことができません。したがって、【BUF(F55EH)】に以下のように設定します。

,BUF,IXレジスタの下位8ビット
,+1 ,IXレジスタの上位8ビット
,+2 ,IYレジスタの下位8ビット
,+3 ,IYレジスタの上位8ビット

,戻り値
MBIOSの各ルーチンによって異なります。MBIOSについては「4.4 MBIOS」をご覧下さい。


::PLAYF          12
,機能
PLAY文の動作状態を調べます。

,コール手順
A     PLAY文のチャンネル番号
      範囲は1〜PLAY文が現在使用できるチャンネル番号です。ただし0も指定でき、このときは全てのチャンネルの指定となります。

,戻り値
 HL    0       指定されたチャンネルが演奏中ではない
       FFFFH   指定されたチャンネルが現在演奏中
               全てのチャンネルが指定されたときは、どれか1つのチャンネルでも演奏中ならば0FFFFHが、そうでなければ0が返ります。



::BGM          15
,機能
バックグラウンド処理を行うかどうかを指定します。

,コール手順
 A     0      バックグラウンド処理を行わない
       1      バックグラウンド処理を行う
       AUDIOを呼びだすと、バックグラウンド処理を行うモードに初期設定されます。

,戻り値
なし

,注意
次の機能はバックグラウンド処理ができます。

* PLAY文による演奏
* ローカルモードのADPCM録音再生
* アドレス指定によるMKの記録再生


::STOPM          27
,機能
MKの記録再生、ADPCM録音再生、PLAY文の演奏などを中止させます。

,コール手順
なし

,戻り値
なし

,解説
MKの記録再生、ADPCM録音再生、PLAY文の演奏などを停止させます。MKの記録再生はCONTMKで継続することができます。


::STPPLY          36
,機能
PLAY文の演奏だけを停止させます。

,コール手順
なし

,戻り値
なし


::VOICE          72
,機能
FM音源の各チャンネルに音色を設定します。

,コール手順
【BUF(F55EH)】に以下のパラメータを設定します。

,BUF,ボイスパラメータブロック1
,+4 ,ボイスパラメータブロック2
,+8 ,ボイスパラメータブロック3
,   ,         :
,   ,         :
,+(n-2)×4,ボイスパラメータブロックn-1
,+(n-1)×4,ボイスパラメータブロックn
,+n×4    ,エンドマーク(0FFH)

各ボイスパラメータブロックは4バイトで構成されています。このパラメータは2種類の指定方法があります。
1つはシステムに備えられている音色データを指定する場合で、以下のようなパラメータブロックで指定します。

,+0,FM音源のチャンネル番号(0〜8)
,+1,必ず0を設定
,+2,音色ライブラリの音色番号(0〜63)
,+3,必ず0を設定

もう1つはユーザーが用意した音色データを指定する場合で、以下のようなパラメータブロックで指定します。

,+0,FM音源のチャンネル番号(0〜8)
,+1,必ず0FFHを設定
,+2,音色データのあるアドレスの下位8ビット
,+3,音色データのあるアドレスの上位8ビット

,戻り値
入力パラメータに誤りがあるとキャリーフラグを立てて戻り、設定は行われません。

,解説
FM音源の各チャンネルに音色を設定します。1度に9チャンネルまでの設定が出来ます。


::VOICECOPY          75
,機能
FM音源データを転送します。

,コール手順
【BUF(F55EH)】に以下のパラメータを設定します。
パラメータの指定には以下の方法があります。

1. システム音色ライブラリの0〜63のうちの1つをシステム音色ライブラリの32〜63のどれかに転送するもので、以下のパラメータを指定します。

,BUF,0
,+1 ,ソース音色ライブ雷の音色番号(0〜63)
,+2 ,0
,+3 ,0
,+4 ,0
,+5 ,0
,+6 ,デスティネーション音色ライブ雷の音色番号(32〜63)
,+7 ,0
,+8 ,0
,+9 ,0

2. システム音色ライブラリの0〜63のうちの1つをユーザーのデータ領域に転送するもので、以下のパラメータを指定します。

,BUF,0
,+1 ,ソース音色ライブ雷の音色番号(0〜63)
,+2 ,0
,+3 ,0
,+4 ,0
,+5 ,0FFH
,+6 ,ユーザーデータ領域のアドレスの下位8ビット
,+7 ,ユーザーデータ領域のアドレスの上位8ビット
,+8 ,0
,+9 ,0

3. ユーザーのデータ領域からシステム音色ライブラリの32〜63のどれかに転送するもので、以下のパラメータを指定します。

,BUF,0FFH
,+1 ,ユーザーデータ領域のアドレスの下位8ビット
,+2 ,ユーザーデータ領域のアドレスの上位8ビット0
,+3 ,0
,+4 ,0
,+5 ,0
,+6 ,デスティネーション音色ライブラリの音色番号(32〜63)
,+7 ,
,+8 ,0
,+9 ,0


4. システム音色ライブラリの32〜63のすべてをユーザーのデータ領域に転送するもので、以下のパラメータを指定します。

,BUF,0
,+1 ,0FFH
,+2 ,0
,+3 ,0
,+4 ,0
,+5 ,0FFH
,+6 ,ユーザーデータ領域のアドレスの下位8ビット
,+7 ,ユーザーデータ領域のアドレスの上位8ビット
,+8 ,ユーザーデータ領域の長さの下位8ビット
,+9 ,ユーザーデータ領域の長さの上位8ビット

5. ユーザーのデータ領域からシステム音色ライブラリの32〜63のすべてに転送するもので、以下のパラメータを指定します。

,BUF,0FFH
,+1 ,ユーザーデータ領域のアドレスの下位8ビット
,+2 ,ユーザーデータ領域のアドレスの上位8ビット
,+3 ,ユーザーデータ領域の長さの下位8ビット
,+4 ,ユーザーデータ領域の長さの上位8ビット
,+5 ,0
,+6 ,0FFH
,+7 ,0
,+8 ,0
,+9 ,0

!!4.3.6 サンプルプログラム

添付のフロッピーディスクに「AUDIO.MAC」という拡張BIOSコールの実行プログラムが入っています。このプログラムには、以下のBASICプログラムと同等の働きをします。

 10 PRINT "Go synthesizer (y for yes) ?";
 20 A$=INPUT$(1)
 30 IF A$="y" or A$="Y" THEN CALL SYNTHE
 40 CALL AUDIO(1,3,1,1,1)
 50 END

アセンブルはMSX-DOS上で

 A>M80 =SAMPLE.MAC

リンクは

 A>L80 /P:100,SAMPLE,SAMPLE.BIN /N /E

として下さい。
BASICで

 BLOAD "SAMPLE.BIN".R

とすると、プログラムが実行できます。

,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}← [[4.2 拡張BASIC|4.2 MSX-AUDIO 拡張BASIC]]                                        ,{BSIZE:0|RIGHT} [[4.4 MBIOS|4.4 MSX-AUDIO MBIOS]]                                               →