4.1.1 基本構成
1.最小構成
■音源 LSI | MSX-AUDIO LSI(Y8950) |
■DAC LSI | YM-3014 |
■ADPCM/PCMデータ用RAM | 256Kビット |
■プログラム用ROM | 128Kバイト |
■プログラム用RAM | 4Kバイト |
■入出力端子 | ミュージックキーボード接続端子 |
音声入力端子(マイクレベル ミニジャック) | |
音声出力端子(ラインレベル RCAジャック) |
2.最大構成
■音源 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バイト |
■入出力端子 | ミュージックキーボード接続端子 |
音声入力端子(マイクレベル ミニジャック) | |
音声出力端子(ラインレベル 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 : C7H | システム予約 |
注意 | *1 マスターチャンネル(必須) | |
*2 スレーブチャンネル(オプション) | ||
*3 リード可能なレジスタのみ |
また、MSX-AUDIOはY8950が持っているI/Oポートも使用します。
表7.44 MSX-AUDIOの4ビット汎用入出力ポート
ビット | 意 味 | |
3 | 録音再生時のフィルタ切り換え(出力) | |
0 | ADPCM/PCM音用フィルタ | |
1 | FM音用フィルタ | |
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と0 | 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 | 00 | Y8950は割り付けられない。 |
01 | Y8950はC0HからのI/Oアドレスに割り付けられる。 | |
10 | Y8950はC2HからのI/Oアドレスに割り付けられる。 | |
11 | 2つのY8950が1つのカートリッジにあり、それぞれC0HとC2Hに割り付けられる。 |
注意 | リセット時は必ず「00」にする。 |
上記2つのI/Oポートは書き込み時においてのみ選択され、読み込み時は通常のメモリがよまれなければなりません。
4.1.4 ミュージックキーボードスキャンポート
1.キーボードマトリックス
表7.47 ミュージックキーボードのマトリックス
入力ポート ビット番号 | ||||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
出力ポートビット番号 | 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 |
(3.36μsec) |
注意 | データ書き込み時の ( ) の数値は $00 〜 $0A までのレジスタに適用します。 |