{{include unfinished_page}} ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}← [[3.4 YM2413(OPLL)]] ,{BSIZE:0|RIGHT} [[4.2 拡張BASIC|4.2 MSX-AUDIO 拡張BASIC]] → !!4.1.1 基本構成 1.最小構成 ,{t},{BSIZE:0} ,{c},{SIZE:220|BSIZE:0},{BSIZE:0} ,■音源 LSI ,MSX-AUDIO LSI(Y8950) ,■DAC LSI ,YM-3014 ,■ADPCM/PCMデータ用RAM,256Kビット ,■プログラム用ROM ,128Kバイト ,■プログラム用RAM ,4Kバイト ,■入出力端子{ROWS:3} ,ミュージックキーボード接続端子 , ,音声入力端子(マイクレベル ミニジャック) , ,音声出力端子(ラインレベル RCAジャック) 2.最大構成 ,{t},{BSIZE:0} ,{c},{SIZE:220|BSIZE:0},{BSIZE:0} ,■音源 LSI ,MSX-AUDIO LSI(Y8950)×2 ,■DAC LSI ,DAC LSI(YM-3014)×2 ,■ADPCM/PCMデータ用RAM,256K×8ビット ,■ADPCM/PCMデータ用ROM,256K×8ビット ,■プログラム用ROM ,128Kバイト ,■プログラム用RAM ,4Kバイト ,■入出力端子{ROWS:3} ,ミュージックキーボード接続端子 , ,音声入力端子(マイクレベル ミニジャック) , ,音声出力端子(ラインレベル RCAジャック) !!4.1.2 I/Oの構成 表7.43 MSX-AUDIO I/O構成 ,I/Oアドレス,Read/Write,MSX-AUDIOレジスタ名 ,C0H ,W ,アドレスレジスタ *1 ,C1H ,R/W *3 ,データレジスタ *1 ,C2H ,W ,アドレスレジスタ *2 ,C3H ,R/W *3 ,データレジスタ *2 ,C4H{{br}}:{{br}}C7H,システム予約{COLS:2}, 注意 *1 マスターチャンネル(必須) *2 スレーブチャンネル(オプション) *3 リード可能なレジスタのみ また、MSX-AUDIOはY8950が持っているI/Oポートも使用します。 表7.44 MSX-AUDIOの4ビット汎用入出力ポート ,ビット,意味 ,3{ROWS:3},録音再生時のフィルタ切り換え(出力) , ,0 ADPCM/PCM音用フィルタ , ,1 FM音用フィルタ ,2{ROWS:3},立ち上がり時のプログラム指定スイッチ(入力) , ,0 拡張BASIC , ,1 内蔵アプリケーション ,1,内蔵アプリケーション使用(出力) ,0,内蔵アプリケーション使用(出力) !!4.1.3 メモリの構成  MSX-AUDIOではスロットの管理とは別にローカルなバンクを使用しています。バンクは4つあり1つのバンクは32Kバイトです。MBIOSと拡張BASIC動作時、内蔵シンセサイザ動作時およびADPCMデータROM読み出し時にバンクを切り換えます。バンクは3FFEH番地にメモリマップされたI/Oポートに書き込むことで切り替わります。そのビット構成は以下の通りです。このポートはどのバンクが表に出ていても常にアクセスできます。また7FFEH番地からも書き込むことができます。 表7.45 ローカルバンクのI/O番地 ,ビット,意味 ,7〜2,使用していません。 ,1と0{ROWS:4},00 バンク0 MBIOS、拡張BASIC , ,01 バンク1 内蔵アプリケーション , ,10 バンク2 ADPCMデータROM1 , ,11 バンク3 ADPCMデータROM2 注意 リセット時は必ず「00」にする。  また、この他にメモリマップされたI/Oポートがあります。これはY8950をポートに割付るためのポートです。アドレスは3FFFHです。このポートもどのバンクが表に出ていても常にアクセスできます。また、7FFFH番地からも書き込むことができます。拡張BASICはリセット時の初期化で、Y8950をポートに割り当てます。 表7.46 メモリマップドのI/O構成 ,ビット,意味 ,7〜2,使用していません。 ,1と0{ROWS:4},00 Y8950は割り付けられない。 , ,01 Y8950はC0HからのI/Oアドレスに割り付けられる。 , ,10 Y8950はC2HからのI/Oアドレスに割り付けられる。 , ,11 2つのY8950が1つのカートリッジにあり、それぞれC0HとC2Hに割り付けられる。 注意 リセット時は必ず「00」にする。  上記2つのI/Oポートは書き込み時においてのみ選択され、読み込み時は通常のメモリがよまれなければなりません。 {{svg 図7.28.svg}} 図7.28 バンク0(MBIOS、拡張BASIC動作時) {{svg 図7.29.svg,,size:300x110}} 図7.29 バンク1(内蔵アプリケーション動作時) {{svg 図7.30.svg,,size:300x110}} 図7.30 バンク2(ADPCMデータROM1読み出し時) {{svg 図7.31.svg,,size:300x110}} 図7.31 バンク3(ADPCMデータROM2読み出し時) !!4.1.4 ミュージックキーボードスキャンポート 1.キーボードマトリックス 表7.47 ミュージックキーボードのマトリックス ,{ROWS:2}{COLS:2},,入力ポート ビット番号{COLS:8},,,,,,, ,, ,7{SIZE:30},6{SIZE:30},5{SIZE:30},4{SIZE:30},3{SIZE:30},2{SIZE:30},1{SIZE:30},0{SIZE:30} ,出力ポート ビット番号{ROWS:8},7,-,C,B,A#,-,A,G#,G , ,6,-,F#,F,E,-,D#,D,C# , ,5,-,C,B,A#,-,A,G#,G , ,4,-,F#,F,E,-,D#,D,C# , ,3,-,C,B,A#,-,A,G#,G , ,2,-,F#,F,E,-,D#,D,C# , ,1,-,C,B,A#,-,A,G#,G , ,0,C,F#,F,E,-,D#,D,C#  ミュージックキーボードの最も左のキーが出力0番の入力7番でその1つ右側のキーが出力0番の入力0番です。最も右側のキーが出力7番の入力6番です。 !!4.1.5 MSX-AUDIOを直接アクセスする場合の注意  この章で公開された内容を利用すれば、I/OポートからMSX-AUDIOを直接アクセスして音を鳴らすことができます。しかし、MSX-AUDIOのレジスタへデータを書き込む場合、タイミングによっては、正常に動作しなくなる可能性があります。したがって、商用のアプリケーションソフトウェアは直接MSX-AUDIOをアクセスしてはいけません。MSX-AUDIOにアクセスする場合は、必ず、MSX-AUDIO拡張BIOSかMSX-AUDIO MBIOSを使用するようにしてください。 1.ウエイト  MSX-AUDIOでは、内部レジスタにアドレスやデータを書き込むと、次の動作に移るまでにはウエイト時間が必要です。このウエイト時間は、レジスタのアドレスの指定とデータの書き込みで異なります。表7.48で指定された時間だけ、CPUはMSX-AUDIO LSIに対して、次の動作を待たなければなりません。  このウエイト時間を無視した場合は、その時に設定したデータは保証されません。 表7.48 ウエイト時間 ,モード,ウエイト時間 ,アドレス指定,3.36μsec ,データ書き込み,23.52μsec{br}(3.36μsec) 注意 データ書き込み時の ( ) の数値は $00 〜 $0A までのレジスタに適用します。 ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}← [[3.4 YM2413(OPLL)]] ,{BSIZE:0|RIGHT} [[4.2 拡張BASIC|4.2 MSX-AUDIO 拡張BASIC]] →