MSX Datapack wiki化計画

4.1 MSX-AUDIO ハードウェアの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{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構成'''
,{t},{BSIZE:2 0}
,{c},{BSIZE:1 0|SIZE:100},{BSIZE:1 0|SIZE:150},{BSIZE:1 0|SIZE:200}
,{c},{BSIZE:1 0|SIZE:100},{BSIZE:1 0|SIZE:150},{BSIZE:1 0|SIZE:300}
,I/Oアドレス,Read/Write,MSX-AUDIOレジスタ名
,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0}
,C0H        ,W         ,アドレスレジスタ *1
,C1H        ,R/W *3    ,データレジスタ *1
,C2H        ,W         ,アドレスレジスタ *2
,C3H        ,R/W *3    ,データレジスタ *2
,C4H{{br}}:{{br}}C7H,,システム予約{COLS:2}

,{t},{BSIZE:0}
,{c},{BSIZE:1|SIZE:100|CENTER},{BSIZE:0|SIZE:10},{BSIZE:0}
,注意,,*1 マスターチャンネル(必須)
,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0}
,    ,,*2 スレーブチャンネル(オプション)
,    ,,*3 リード可能なレジスタのみ
また、MSX-AUDIOはY8950が持っているI/Oポートも使用します。

'''表7.44 MSX-AUDIOの4ビット汎用入出力ポート'''
,{t},{BSIZE:2 0}
,{c},{BSIZE:1 0|SIZE:100},{BSIZE:1 0|SIZE:50},{BSIZE:1 0|SIZE:300}
,{c},{BSIZE:1 0|SIZE:100},{BSIZE:1 0|SIZE:50},{BSIZE:1 0|SIZE:400}
,ビット,意 味,
,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0}
,3,録音再生時のフィルタ切り換え(出力){COLS:2},
, ,0,ADPCM/PCM音用フィルタ
, ,1,FM音用フィルタ
,2,立ち上がり時のプログラム指定スイッチ(入力){COLS:2},
, ,0,拡張BASIC
, ,1, 内蔵アプリケーション
,1,内蔵アプリケーション使用(出力){COLS:2},
,0,内蔵アプリケーション使用(出力){COLS:2},

!!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
,{t},{BSIZE:2 0}
,{c},{BSIZE:1 0|SIZE:100},{BSIZE:1 0|SIZE:50},{BSIZE:1 0|SIZE:400}
,ビット,意 味,
,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0}
,7〜2,使用していません。{COLS:2}
,1と0,00,バンク0 MBIOS、拡張BASIC
,    ,01,バンク1 内蔵アプリケーション
,    ,10,バンク2 ADPCMデータROM1
,    ,11,バンク3 ADPCMデータROM2

 注意 リセット時は必ず「00」にする。
,{t},{BSIZE:0}
,{c},{BSIZE:1|SIZE:100|CENTER},{BSIZE:0|SIZE:10},{BSIZE:0}
,注意,,リセット時は必ず「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に割り付けられる。
'''表7.46 メモリマップドのI/O構成'''
,{t},{BSIZE:2 0}
,{c},{BSIZE:1 0|SIZE:100},{BSIZE:1 0|SIZE:50},{BSIZE:1 0|SIZE:400}
,ビット,意味,
,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0}
,7〜2,使用していません。{COLS:2}
,1と0,00, Y8950は割り付けられない。
,    ,01, Y8950はC0HからのI/Oアドレスに割り付けられる。
,    ,10, Y8950はC2HからのI/Oアドレスに割り付けられる。
,    ,11, 2つのY8950が1つのカートリッジにあり、それぞれC0HとC2Hに割り付けられる。

 注意 リセット時は必ず「00」にする。
,{t},{BSIZE:0}
,{c},{BSIZE:1|SIZE:100|CENTER},{BSIZE:0|SIZE:10},{BSIZE:0}
,注意, ,リセット時は必ず「00」にする。

 上記2つのI/Oポートは書き込み時においてのみ選択され、読み込み時は通常のメモリがよまれなければなりません。
{{svg 図7.28.svg}}
図7.28 バンク0(MBIOS、拡張BASIC動作時)
'''図7.28 バンク0(MBIOS、拡張BASIC動作時)'''

{{svg 図7.29.svg,,size:300x110}}
図7.29 バンク1(内蔵アプリケーション動作時)
'''図7.29 バンク1(内蔵アプリケーション動作時)'''

{{svg 図7.30.svg,,size:300x110}}
図7.30 バンク2(ADPCMデータROM1読み出し時)
'''図7.30 バンク2(ADPCMデータROM1読み出し時)'''

{{svg 図7.31.svg,,size:300x110}}
図7.31 バンク3(ADPCMデータROM2読み出し時)
'''図7.31 バンク3(ADPCMデータROM2読み出し時)'''

!!4.1.4 ミュージックキーボードスキャンポート

1.キーボードマトリックス
'''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#
'''表7.47 ミュージックキーボードのマトリックス'''
,{t},{BSIZE:2 0}
,{c},{BSIZE:0},{BSIZE:0 1 0 0|CENTER},{BSIZE:0|CENTER},{BSIZE:0|CENTER},{BSIZE:0|CENTER},{BSIZE:0|CENTER},{BSIZE:0|CENTER},{BSIZE:0|CENTER},{BSIZE:0|CENTER},{BSIZE:0|CENTER},{BSIZE:0|CENTER}
, , ,入力ポート ビット番号{COLS:8},,,,,,,,
,{c},{BSIZE:0 0 1 0|CENTER},{BSIZE:0 1 1 0|CENTER},{BSIZE:0 0 1 0|CENTER},{BSIZE:0 0 1 0|CENTER},{BSIZE:0 0 1 0|CENTER},{BSIZE:0 0 1 0|CENTER},{BSIZE:0 0 1 0|CENTER},{BSIZE:0 0 1 0|CENTER},{BSIZE:0 0 1 0|CENTER},{BSIZE:0 0 1 0|CENTER},{BSIZE:0 0 1 0|CENTER},{BSIZE:0 0 1 0|CENTER}
, , ,7,6,5,4,3,2,1,0,
,{c},{BSIZE:0|SIZE:20|CENTER},{BSIZE:0 1 0 0|SIZE:40|CENTER},{BSIZE:0|SIZE:40|CENTER},{BSIZE:0|SIZE:40|CENTER},{BSIZE:0|SIZE:40|CENTER},{BSIZE:0|SIZE:40|CENTER},{BSIZE:0|SIZE:40|CENTER},{BSIZE:0|SIZE:40|CENTER},{BSIZE:0|SIZE:40|CENTER},{BSIZE:0|SIZE:40|CENTER},{BSIZE:0|SIZE:100|CENTER}
,出力ポートビット番号{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を使用するようにしてください。
 この章で公開された内容を利用すれば、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 ウエイト時間
'''表7.48 ウエイト時間'''
,{t},{BSIZE:2 0}
,{c},{BSIZE:1 0|SIZE:120},{BSIZE:1 0|SIZE:300},{BSIZE:1 0|SIZE:200}
,モード,ウエイト時間
,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0}
,アドレス指定,3.36μsec
,データ書き込み,23.52μsec{br}(3.36μsec)
,データ書き込み,23.52μsec
,              ,(3.36μsec)

 注意 データ書き込み時の ( ) の数値は $00 〜 $0A までのレジスタに適用します。
,{t},{BSIZE:0}
,{c},{BSIZE:1|SIZE:100|CENTER},{BSIZE:0|SIZE:10},{BSIZE:0}
,注意,,データ書き込み時の ( ) の数値は $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]]                                       →