2006年05月30日

参考文献

どれが公式かわかりませんが、取り合えず列挙しておきます。

MMCの仕様書(pdf形式、英語)
T10 Technical Community
ここで探すのは大変そうなので、直リンク
MMC-1
MMC-2
MMC-3 主にこのバージョンを使用していた
MMC-4
MMC-5 このバージョンに移行してゆく予定
MMC-6 まだ空っぽ

上に無いコマンドは、
ftp://ftp.seagate.com/sff/INF-8070.PDF
を見ると良いかも


JISの規格とか
Y-ADAGIO
内、CD-ROMの規格は、
http://www.y-adagio.com/public/standards/jis_cdrom_yel/cd-rom.htm


雑誌では、
C MAGAZINE 2001年11月号
(まるまるC MAGAZINE 2001年度版)
に、CDリッパーソフトの作成例があります。


しかしながら、一番頼りにしているのは、やはり、
CD Manipulator
のソースコードです。これを元にトライ&エラーを繰り返して得られた結果を書き散らしていきます。ですから、わからないフラグも多く、専門用語も知らず、訳語がわからない、という酷い内容になるでしょう。
posted by 七癖 at 17:39| Comment(0) | TrackBack(0) | Multimedia Commands | このブログの読者になる | 更新情報をチェックする

2006年05月29日

よくわかっていない序論

これから、MMC(Multimedia Commands)を使ったCDドライブの制御プログラムについて書き散らしていこうと思います。いざ文章を書こうとすると、己の理解の足らなさに愕然としますが、まあ恥も外聞も忘れ、間違いを恐れずにいくつもりです。間違いを見つけたら、遠慮なく指摘してください。

昔、Z80(互換)でステッピングモーターを動かすシステムをいじったときは、先輩の作った回路を理解して、余っっている割り込みポートに押しボタンスイッチをはんだ付けして、そしてアセンブラで記述していったものです。今でも専用の装置や全く新しいシステムを作るときには、ハードウェアの構成からプログラムまで全部まとめてつくるのでしょう。だが、それではコストも時間もかかるし、汎用性がなくて他の独自の技術を持つメーカーが協力しづらいでしょう。なので規格とか仕様を作って、楽にしようというわけです。

パソコンと機器間をつなぐ規格には、IDE、ATA、ATAPI、SCSI、USBなどがあって、今も増え続けています。これらはハード側の仕様も全く異なるため、接続する機器のメーカー側がOSと接続方法の約束事に則ってデバイスドライバを提供しています。ソフトウェアを作成する側は、OSと個々のドライバ(機器)の仕様を見ながらプログラミングするのであり、その方がハードウェアの性能を最大限に引き出せたりもします。でもまあ、同じ種類の機器ならばどのメーカーが作った、どのような接続された機器でも同じ方法で操作できるのならば楽でいいでしょう。

で、Adaptec社がSCSI用にASPI(Advanced SCSI Programming Interface)というインタフェイスを作りました。機器メーカー側はASPIが用意してあるコマンドが使えるようなデバイスドライバを用意すれば言い訳です。そして、ATAPIはSCSIの影響を受けたためか、多くのコマンドが共通化されてしまいました。そしてASPI側で規格の差異を吸収するようにしたため、SCSI接続の機器だけでなく、ATAPI接続の機器までASPIで同じように制御できるようになったのです。

他に、SPTI(SCSI Pass-Through Interface)があります。これはMicrosoft社がWindows2000/XP系列用に用意したものです。OSの利点を考えれば、当たり前のような気もしますが。こちらはSCSI、ATAPIだけでなくUSB接続の機器も使えるらしいです。あちこちのソースコードを見る限りだと、ASPIとはコマンドの送信方法が違うけれども、コマンドの内容は同じでいけるようです。(Windows2000/XPをもっていないので、よく分からない。)

ASPI用には、共通(とはいっても、機器の種類によって動作は違う場合もあるが)のコマンド以外に、プリンタやスキャナといった機器別のコマンドセットがあります。その内、CD-ROM/R/RW、DVD-ROM/±R/RW、Blu-ray Disc、等のドライブ用のコマンド一式が、MMC(Multimedia Commands)です。

う〜ん。理解していないなあ。
posted by 七癖 at 19:21| Comment(0) | TrackBack(0) | Multimedia Commands | このブログの読者になる | 更新情報をチェックする