{{include unfinished_page}} ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[2章 MSX MODEM]] ,{BSIZE:0|RIGHT} [[3.2 拡張BASIC|3.2 MSX-MUSIC 拡張BASIC]] → !!3.1 ハードウェア !3.1.1 メモリの構成 {{div_begin style='text-align:center;'}} {{svg 図7.18.svg,,size:220x150}} '''図7.18 MSX-MUSICのメモリ構成''' {{div_end}} !3.1.2 I/Oの構成 '''1.本体内蔵の場合''' 表7.19 MSX-MUSIC I/O構成(本体内蔵) ,I/Oアドレス,Read/Write,OPLLレジスタ名 ,7CH,W,アドレスレジスタ ,7DH,W,データレジスタ '''2.外付けの場合'''  パナアミューズメントカートリッジ2準拠 表7.20 MSX-MUSIC I/O構成(外付け) ,I/Oアドレス,メモリアドレス,Read/Write,OPLLレジスタ名 ,7CH,7FF4H,W,アドレスレジスタ ,7DH,7FF5H,W,データレジスタ !3.1.3 内蔵・外付け判別データ 表7.21 内蔵・外付け判別データ ,アドレス,データ(内蔵),{COLS:2}データ(外付け), ,{SIZE:100}4018H,{SIZE:100}41H'A',{SIZE:100}50H'P',{ROWS:8|TOP}「PAC2」の文字列は、「パナアミューズメントカートリッジ2」の場合。{{br}}この4バイトの文字列は、メーカーごとに異なる任意の文字列でかまわない。 ,4019H,50H'P',41H'A' ,401AH,52H'R',43H'C' ,401BH,4CH'L',32H'2' ,401CH,4FH'O',4FH'O' ,401DH,50H'P',50H'P' ,401EH,4CH'L',4CH'L' ,401FH,4CH'L',4CH'L'  MSX-MUSICはオプション機器ですから、カートリッジを外付けすることにより、後からFM音源を追加することができます。しかし、MSX-MUSICを内蔵したシステムにFM音源カートリッジを外付けすると、ひとつのシステムに同一アドレスのFM音源LSIが2つ存在することになり、音量が通常の2倍の大きさになってしまいます。  これを避けるために、外付けのカートリッジに内蔵されるソフトウェアは、そのカートリッジ内の音源LSIの動作を許可するかどうかを04018Hからの「APRLOPLL」文字列の存在の有無を調べ、文字列がなければカートリッジのFM音源をI/Oポートに接続します。 !3.1.4 OPLLを直接アクセスする場合の注意  この章で公開された内容を利用すれば、I/OポートからOPLLを直接アクセスして音を鳴らすことができます。しかし、OPLLのレジスタへデータを書き込む場合、タイミングによっては、正常に動作しなくなる可能性があります。したがって、商用のアプリケーションソフトウェアは直接OPLLをアクセスしてはいけません。OPLLにアクセスする場合は、必ず、FM BIOSを使用するようにして下さい。 '''1.ウエイト'''  OPLLでは、内部レジスタにアドレスやデータを書き込むと、次の動作に移るまでにはウエイト時間が必要です。このウエイト時間は、レジスタのアドレスの指定とデータの書き込みで異なります。表7.22で指定された時間だけ、CPUはOPLLに対して、次の動作を待たなければなりません。  このウエイト時間を無視した場合は、そのときに設定したデータは保証されません。 表7.22 OPLLのウエイト時間 ,モード,ウエイト時間 ,アドレス指定,3.36μsec ,データ書き込み,23.52μsec '''2.内蔵と外付けの両方の音源に対応する方法'''  現在、市販されている外付けのMSX-MUSICカートリッジとしては、「パナアミューズメントカートリッジ2(以下、FM-PAC)」があります。FM-PACには、MSX-MUSIC内蔵マシンに装着されたときのことを考慮して、FM-PAC内の音源ICをON、OFFできるようになっています(「3.1.3 内蔵・外付け判別データ」参照)。  MSXに電源が入ったときは、FM-PAC内蔵音源ICはOFFになっていて、BASICでCALL MUSIC命令が実行されたり、FM-BIOSの初期化ルーチンが呼ばれたりしたときに、もしMSX本体に音源ICが内蔵されていなければONされます。  したがって、MSX-MUSICが内蔵されていない機種では、ユーザープログラムが直接OPLLをアクセスする場合、以下の方法でFM-PAC内蔵の音源ICをONしなければなりません。   1. 04018H番地から0401FH番地に次の内容を持っているスロットを探します。 DB "APRLOPLL"   2. もしあれば、MSX本体に音源ICが内蔵されているので、そのままで音源ICは操作できます。   3. ない場合には、0401CH番地から0401FH番地に次の内容を持っているスロットを探します。 DB "OPLL"   4. もしなければFM音源IC自体が装着されていませんので、使用出来ません。   5. もしあればそのスロットの07FF6H番地のビット0を「1」にすることにより、FM音源ICをONにできます。このときには、07FF6H番地の内容を一度読み出して、ビット0のみ「1」にして書き込まなければならないことに注意して下さい。 ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[2章 MSX MODEM]] ,{BSIZE:0|RIGHT} [[3.2 拡張BASIC|3.2 MSX-MUSIC 拡張BASIC]] →