MATCD(4)

名称
matcd - Matsushita (Panasonic) CD-ROM ドライバ

書式

controller matcd[0-4] at isa? port [?| addr]
/dev/[r]matcd[0-15][a|c]
/dev/[r]matcdl[0-15][a|c]

解説
matcd ドライバは、松下寿電子工業製の、または短縮して松下製の、CR-562-x 及び CR-563-x CD-ROM ドライブを制御します。これら CD-ROM ドライブは Panasonic (松下の商標)、Creative Labs (omniCD)、Reveal などのブランドで 販売され、Tandy、AST、Packard Bell など多くのコンピュータに採用されて います。 これらのドライブは、専用のホストインタフェースを通じて PC ISA バスに 接続します。このインタフェースはスタンドアロンの ISA カードとして存在す ることもありますし、サウンドカード上に含まれていることもあります。

ドライバの設定
matcd ドライバは、それぞれが 4 台までのドライブをもつホストインタフェースを 上限 4 つまでサポートします。オーディオ機能は全てのドライブで同時に実行で きるかもしれませんが、データ読み取り操作の対象は、どの瞬間においても 1 つのホストインタフェースに対して 1 つのドライブのみになります。 マルチホストインタフェースをサポートするためには、 カーネルコンフィギュレーションファイルのエントリを修正する必要があります。 通常、このファイルはシステム上の /usr/src/sys/i386/conf/GENERIC に存在します。 これをコピーしてシステムの名前をつけると良いでしょう。この新しいファイル にシステムでサポートしたいデバイスを含め、逆に不要なデバイスのエントリ は削除します。 このファイルには以下のようなエントリが見つかるでしょう: controller matcd0 at isa? port ? bio 2 つのホストインタフェースをサポートするためには、以下のように変更します: controller matcd0 at isa? port ? bio
controller matcd1 at isa? port ? bio
(3 つ、あるいは 4 つまでホストインタフェースをサポートさせたい場合、同様 にエントリを追加してください。)
ホストインタフェースが 1 つのみで 4 台までのドライブをサポートする場合、 カーネルコンフィギュレーションの修正は不要であることに注意してください。 2 つ目のインタフェースを追加するまで、1 つめのインタフェース上で必ずしも 4 台のドライブを持たなくてかまいません。 デフォルトでは、 matcd は Creative ホストアダプタ (options.h 参照) の既知の I/O ポート テーブルを用いて CD-ROM ホストアダプタを探索します。これは非常に柔軟で すが、 matcd がチェックした CD-ROM ホストインタフェースの I/O ポートに、システムの 他のデバイスが存在するときに問題を起こします。さらに、複数の位置を検索 する必要があるため、ブートプロセスに時間がかかる原因となります。

これらの問題は、CD-ROM ホストインタフェースの位置を明示することに よって解決することができます。例えば、デフォルトのほとんどの Sound Blaster カードは I/O ポート 0x230 の位置に松下 CD-ROM ホスト インタフェースを持っています。 (これはカード上のオーディオ機能に 0x10 を加えた I/O ポートの値です。) システムがこのような場合、カーネルブートプロンプトにおいて、 -c オプションを用いることによりカーネルがハードウェアを検出する位置を 変更できます。こうしてカーネルをロードすると、それに含まれる あらゆるデバイスの設定を変更する機会を得ることができます。 例えば、 matcd アダプタ 0 に対する I/O ポートを変更するには以下のように記述すれば良い でしょう。 config> port matcd0c 0x340 カーネルをリコンパイルするなら、カーネルコンフィギュレーションファイル のエントリを以下のように変更して特定のアドレスを指定することができます: controller matcd0 at isa? port 0x230 bio このように変更すると matcd ドライバは最初の CD-ROM ホストインタフェースのために I/O ポート 0x230 のみを探索し、他の I/O ポートは妨げません。 カーネルコンフィギュレーションファイルの調整が完了したら、カーネルを 設定、リコンパイル、及びインストールします。そして変更した個所を 有効にするために再起動する必要があります。

サポートされているハードウェア
現在、 matcd ドライバで動作するドライブは、2 つが知られているだけです:
松下 CR-562-x
松下 CR-563-x
たいていの再販業者はこれらにもともとついていたマーキングをそのままに してあり、ラベルは FCC, VDE, CSA, RU などの認定証がついています。 これらのドライブは両方とも駆動ドレイがついています。オリジナルを カスタマイズされた製品も出回っていて、ボリュームコントロールや ヘッドフォンジャックがついていないもの (Tandy コンピュータにみられるかもしれません) がある かも知れませんが、これも matcd ドライバで動作します。 松下 CR-522-x 及び CR-523-x CD-ROM ドライブは matcd を利用できません。 CR-522 及び CR-523 は CD キャディを必要とするので正面から識別すること もできます。 IDE インタフェースをもつドライブは、IDE ドライバを使わなければなりま せん。 TEAC CD-55 4X CD-ROM ドライブは Creative/Panasonic インタフェースも使っ ていますが、TEAC のドライブは松下 CR-56x ドライブと互換ではありませ ん。 TEAC のドライブは matcd ドライバでは利用できません。
Panasonic ドライブ用のホストインタフェースアダプタの出所で最も一般的なの は、SoundBlaster サウンドカードを含む Creative Labs 製品に見られます。 SoundBlaster サウンドカードには多数のモデルが存在し、ほとんどの最新の カードは適当なインタフェースを提供しますが、"Creative/Panasonic" インタフェースとラベルづけられていることもあります。 以下のホストインタフェースアダプタは matcd ドライバで動作することが知られています:
Creative
    Sound Blaster Pro (SBPRO) (CT1330A)
Creative
    Sound Blaster 16 (CT1730)
Creative
    Sound Blaster 16 - 廉価版 (CT1740)
Creative
    OmniCD アップグレードキットアダプタカード - スタンドアロン CD (CT1810)
Creative
    Sound Blaster 16 - 2 層、廉価版 (CT2230)
Creative
    Sound Blaster 16 (Vibra16) - 2 層、単一チップ (CT2260)
Creative
    Sound Blaster 16 Value (SB16) - 2 層、廉価版 (CT2770)
Creative
    PhoneBlaster SB16 + Sierra 14.4K Voice/FAX/Data/Speakerphone モデム(CT3100)
Reveal
    (SC400)
警告: これらサウンドカードには、敢えて Panasonic/Creative インタフェース を含まないように作られているものがあるので、モデルナンバに基づいて 単独責任で買う前に、ボードをチェックしましょう。 これは完全なリストで決してはありません。 Creative Labs および他のベンダは、 Creative/Panasonic ドライブインタフェースの新しバージョンのサウンドカードを いつもリリースするからです。 Creative Labs アダプタに加えて、Media Vision, IBM, Lasermate アダプタで、互換性があるアダプタもまたサポートされます。しかし、これらの アダプタは広範囲にわたるI/Oポートアドレスを使いますので、 これらのアダプタの位置決めをするためにドライバの再構成が必要です。 異なったホストインタフェースの実装を行っているメーカが存在することを 理解することが重要です。MS-DOSで Creative Labs 純正のドライバを用いても、 どうしても通信できないボードがあるなら、 matcd はそのホストアダプタでは動作しないかもしれません。

サポートされた操作
matcd ドライバは、ブロックアクセス及びキャラクタアクセスをサポートします。 パーティション "a" は、データ CD から 2048 バイトのユーザデータブロックを返し ます。パーティション "c" は、オーディオ CD を含めてあらゆるタイプの CD から全部で 2352 バイトのフレームを返します。(パーティション "c" は cd9660 ファイルシステムや他のファイルシステムエミュレータを用いて "マウント" できません。) 他にサポートされているパーティションはありません。 ドライブ上のデバイスが全てクローズされるまで、ドライブトレイがロックさ れたままになるということを除き、 matcdl デバイスは通常の matcd デバイスと同様に動作します。
matcd は CD-ROM オーディオに関連した機能やトレイ制御の機能を含む多くの ioctl() コマンドを受理します。コマンドは以下の通りです:

DIOCGDINFO
    ディスクラベルを取得します。
DIOCGDPART
    パーティションを取得します。
DIOCWDINFO
    アップデートディスクをセットします。
DIOCSDINFO
    ディスクラベルをセットします。
CDIOCREADSUBCHANNEL
    再生中のディスクの状態におけるサブチャネル情報を取得します。
CDIOCREADTOCHEADER
    コンテンツサマリのテーブルを読み取ります。
CDIOCREADTOCENTRYS
    長さと他のトラック情報を読み取ります。
CDIOCPLAYTRACKS
    あるトラック/インデックスから開始してあるトラック/インデックスで終了する オーディオを演奏します。
CDIOCPLAYMSF
    特定の時刻オフセットから開始するオーディオを演奏します。
CDIOCPAUSE
    再生中のディスクを一時停止します。
CDIOCRESUME
    一時停止したディスクの再生をレジュームします。ドライブが既に再生してい る場合には無視されます。
CDIOCSTOP
    再生中のディスクを停止します。
CDIOCEJECT
    ディスクトレイをオープンします。
CDIOCCLOSE
    ディスクトレイをクローズします。
CDIOCPREVENT
    全てのデバイスがクローズされるか CDIOCALLOW ioctl が発行されるまで、 ドライブドアをオープンしようとする操作を阻止します。
CDIOCALLOW
    ドライブドアがロックされていれば解除します。この ioctl は何らかのロック されたデバイスがオープンしていれば拒否されます。
CDIOCGETVOL
    ドライブにセットされたボリュームを返します。
CDIOCSETVOL
    ドライブにセットされたボリュームをセットします。
CDIOCSETSTEREO
    このコマンドにより左チャネルのオーディオを左チャネルの出力に送り、 右チャネルのオーディオを右チャネルの出力に送ります。 これはデフォルトの状態です。
CDIOCSETMUTE
    このコマンドによりオーディオ出力は停止します。 ドライブはディスク上のオーディオを読み続けますが、 オーディオ出力が再会されるまでそのデータは破棄されます。
CDIOCSETLEFT
    このコマンドにより左のチャネルのオーディオは左右のチャネルの出力に送ら れます。
CDIOCSETRIGHT
    このコマンドにより右のチャネルのオーディオは左右のチャネルの出力に送ら れます。
CDIOCSETPATCH
    指定されるビットマップに従い、オーディオをルーティングします。
CDIOCSETPITCH
    このコマンドはオーディオの再生速度を増減します (カラオケのときなど)。
CDIOCCAPABILITY
    ドライブとドライバの性能をレポートします。

matcd ドライバは上述のように定義された ioctl() コマンドのみをサポートします。

関連ファイル
/dev/[r]matcd0a /dev/[r]matcdl0a
    CD-ROM ディスク上の 2048 バイトブロックデータにアクセスするときに使用します。 これは モード 1 フォーム 1 フォーマットで記録されたものです。
/dev/[r]matcd0c /dev/[r]matcdl0c
    CD-ROM ディスク上の 2352 バイトフレームに任意のフォーマットで記録された データにアクセスするときに使用します。
/usr/src/sys/i386/isa/matcd/*
    matcd 用のソースコードとコンパイラオプションです。
options.h ファイルには全てのコンパイルオプションが書かれています。 デフォルトでは ドライバは FreeBSD の current バージョンで動作するよう に設定されています。

注

ドライブが割り込みもしくは DMA を利用することができても、 Creative/Panasonic インタフェース上でこれらを利用することはできません。 1 つ以上のパーティションがオープンしているにも関わらず、 ディスクトレイがオープンしているならば、ドライブ上の全てのパーティションに対す るこれ以上の I/O は全てのパーティションがクローズするまで拒否されます。 物理ドライブ 0 として割り当てられる各々のホストインタフェース上には ドライブが存在していなければなりません。もしそうでない場合、 ドライバはホストインタフェースあるいは接続されたドライブを 1 つも 見つけることができないでしょう。 第 2 のホストインタフェース開始のドライブは、論理ドライブ 4-7 (第 3 のインタフェースの 8-11 と第 4 の 12-15) とみなされます。 最初のホストインタフェースにいくつのドライブが存在しているかに関わりなく、 2 番目のホストインタフェース上の最初のドライブは論理ドライブ 4 になり ます。 ホストインタフェースはカーネルコンフィギュレーションファイルに宣言され た順番か、カーネルコンフィギュレーションファイルでポートアドレスに "?" を用いたならばそれが見つかった順番に番号を割り振られます。 ホストインタフェースの番号は常に切目なく連続しています。

関連項目
/usr/include/sys/cdio.h

作者
ドライバとドキュメントは Frank Durda IV が書きました。
Program and Documentation are Copyright 1994, 1995, All rights reserved.

歴史
matcd ドライバは FreeBSD 2.0.5 において登場しました。