MSX Datapack wiki化計画

4.1 MSX-AUDIO ハードウェア

 4.1.1 基本構成

1.最小構成

■音源 LSI MSX-AUDIO LSI(Y8950)
■DAC LSI YM-3014
■ADPCM/PCMデータ用RAM256Kビット
■プログラム用ROM 128Kバイト
■プログラム用RAM 4Kバイト
■入出力端子 ミュージックキーボード接続端子
音声入力端子(マイクレベル ミニジャック)
音声出力端子(ラインレベル RCAジャック)

2.最大構成

■音源 LSI MSX-AUDIO LSI(Y8950)×2
■DAC LSI DAC LSI(YM-3014)×2
■ADPCM/PCMデータ用RAM256K×8ビット
■ADPCM/PCMデータ用ROM256K×8ビット
■プログラム用ROM 128Kバイト
■プログラム用RAM 4Kバイト
■入出力端子 ミュージックキーボード接続端子
音声入力端子(マイクレベル ミニジャック)
音声出力端子(ラインレベル RCAジャック)

 4.1.2 I/Oの構成

表7.43 MSX-AUDIO I/O構成

I/OアドレスRead/WriteMSX-AUDIOレジスタ名
C0H W アドレスレジスタ *1
C1H R/W *3 データレジスタ *1
C2H W アドレスレジスタ *2
C3H R/W *3 データレジスタ *2
C4H
:
C7H
システム予約

注意*1 マスターチャンネル(必須)
*2 スレーブチャンネル(オプション)
*3 リード可能なレジスタのみ

また、MSX-AUDIOはY8950が持っているI/Oポートも使用します。

表7.44 MSX-AUDIOの4ビット汎用入出力ポート

ビット意 味
3録音再生時のフィルタ切り換え(出力)
0ADPCM/PCM音用フィルタ
1FM音用フィルタ
2立ち上がり時のプログラム指定スイッチ(入力)
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と000バンク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と000Y8950は割り付けられない。
01Y8950はC0HからのI/Oアドレスに割り付けられる。
10Y8950はC2HからのI/Oアドレスに割り付けられる。
112つのY8950が1つのカートリッジにあり、それぞれC0HとC2Hに割り付けられる。

注意リセット時は必ず「00」にする。

 上記2つのI/Oポートは書き込み時においてのみ選択され、読み込み時は通常のメモリがよまれなければなりません。

図7.28 バンク0(MBIOS、拡張BASIC動作時)


図7.29 バンク1(内蔵アプリケーション動作時)


図7.30 バンク2(ADPCMデータROM1読み出し時)


図7.31 バンク3(ADPCMデータROM2読み出し時)

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

1.キーボードマトリックス

表7.47 ミュージックキーボードのマトリックス

入力ポート ビット番号
76543210
出力ポートビット番号7-CBA#-AG#G
6-F#FE-D#DC#
5-CBA#-AG#G
4-F#FE-D#DC#
3-CBA#-AG#G
2-F#FE-D#DC#
1-CBA#-AG#G
0CF#FE-D#DC#

 ミュージックキーボードの最も左のキーが出力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
(3.36μsec)

注意データ書き込み時の ( ) の数値は $00 〜 $0A までのレジスタに適用します。