YMF262  

Sound Blaster Pro II など に搭載されているFM音源ICです。
たぶん互換性があるであろう Sound Blaster 16 やそのエミュレータなどでも使用できると思われます。
DOSや自作系OS用のアプリを作成するための資料として自分用に整理中。

(以下書きかけです。間違っていたり誤記がある可能性があります)

スペック  

I/Oアドレスマップ  

サウンドカードベースポート
Sound Blaster Pro II220h または 240h など(選択可)
AdLib Gold388h

※Sound Blaster Pro I など は YMF262では無く FM1812 が2つ使用されているそうです。
  その場合、ベース+0~+1とベース+2~+3は両方ともFM1812のレジスタマップとなり2オペレータ18チャネルのみ利用可能と思われます。

I/Oポート番号アクセスポートの意味
ベース+0Rステータスレジスタ
Wプライマリ インデックスレジスタ
ベース+1Wプライマリ データレジスタ
ベース+2Wセカンダリ インデックスレジスタ
ベース+3Wセカンダリ データレジスタ


レジスタマップ  

スロットの配置  

アルゴリズムの種類  

テストモードと波形  

WMに1を書き込むと使用可。


w0.png
w1.png
w2.png
w3.png
WS0123

w4.png
w5.png
w6.png
w7.png
WS4567


FM1812の存在チェック方法

AdLib公式のOPL2存在チェック方法:

  1. タイマ1とタイマ2をリセット
    レジスタ4に60hを書き込む
  2. IRQをリセット
    レジスタ4に80hを書き込む
    注: IRQとタイマを同時にリセットすることは出来ない
  3. ステータスレジスタを読む
    ベース+0のポートを読み込んでその値を取っておく
  4. タイマ1をFFhにセット
    レジスタ2にFFhを書き込む
  5. マスクを解除してタイマのカウントをスタート
    レジスタ4に21hを書き込む
  6. ウェイト
    デュレイルーチンなどで最低でも80μ秒の間待機
  7. ステータスレジスタを再度読む
    ベース+0のポートを読み込み、その値を取っておく
  8. タイマ1とタイマ2、そしてIRQを1.や2.と同じようにリセット
  9. 読み込んだ2つのステータスレジスタの値のテスト
    1つ目の値は「0」で2つ目の値は「C0h」で無ければ、OPL2は存在しません。

※1: ステータスレジスタの値をE0hでANDして未使用のビットをマスクした方が良いかも知れません。
※2: いくつかのSound Blaster互換のカードでは動作しないかも知れません。

YMF-262の存在チェック方法

  1. OPL2が存在することを確認
  2. ステータスレジスタを読む
    ベース+0のポートを読み込む。
  3. その値を06hでマスク(AND)する
  4. マスクした値が「0」ならばOPL3、そうでなければOPL2です。

4オペレータモードへの切り替え方法

NEWに1を書き込み4 OPERATER MODEに対応するチャネルのビットを立てて書き込みます。
チャネル1~3,10~12を4オペレータモードにするとチャネル4~6,13~15がチャネル1~3,10~12のオペレータの一部になり、チャネル4~6,13~15は使用できなくなります。


コメント欄  

ご意見やご批判などお待ちしております。
また、スパムなどは無条件で対処させていただきます。



コメントお名前NameLink

[リロード]   [トップ] [一覧] [単語検索] [最終更新]   [最終更新のRSS]