PC9821Xs/C8W 内蔵 CD-ROM ドライブ NEC CD 260 (PC-CD60D) について


お断り

現在の FreeBSD(98)4.6R-Rev01 では、 Xs の FreeBSD(98)の動作報告 (柴田さん) にある通り、acd0 を使うこと (およびそこに書かれているパッチを使うこと) で安定して使えるようになるようです。

音楽 CD の再生時に発生していた 問題 も 現在は acd0 に対するソースで対処がなされていて、 acd0 を使う場合は以下で紹介するパッチは必要ありません。 よって、今後 FreeBSD(98) (4.5R-Rev01 以降) では カーネルの再構築をして acd0 を使うことをおすすめします。

そしてそれにより以下の情報は不要になると思われますので、 今後以下のページの更新、およびパッチの更新はしない予定です。 (最終更新日 08/02 2002)


目次


  1. はじめに (07/22 2002 更新)
  2. 他のマシンについて
  3. 差分ファイル (07/22 2002 更新)
  4. 音楽 CD の演奏について
  5. wcd.c の変更箇所
  6. バグレポート、動作報告
  7. 謝辞
以前の PC-CD60D に関する情報のページへ
FreeBSD のページへ戻る

はじめに


PC9821Xs/C8W 内蔵の CD-ROM ドライブ NEC CD 260 (PC-CD60D) は 、 以前の FreeBSD(98) のカーネルでは認識しないか、認識してもアクセスす ると固まることなどがあり、OS や package のインストールや、音楽 CD の演奏には使えませんでした。

FreeBSD(98)2.1.5R 辺りからそれは改善され、かなり使えるようにはなり ました。古い version の FreeBSD(98) に関する情報については こちら をご覧下さい。

ただ、最近 (12/29 2000) 気がつきましたが、幾つかのバージョンの FreeBSD(98) に対してはその 改善策が抜けているそうです (FreeBSD QandA の査読のものを見て知りました)。

/sys/i386/isa/atapi.c (FreeBSD(98)3.3R 以前 ?) /sys/pc98/pc98/atapi.c (FreeBSD(98)3.4R 以降 ?)
を適当に修正する必要があるそうです。

しかし、相変わらず音楽 CD の演奏はうまくいきません。これはドライブ の仕様がやや特殊であるためです。これについては wcd.c にパッチを当て てカーネルを再構築することで対処できます。パッチについては こちら をご覧下さい。 FreeBSD(98)2.2.X, 3.X, 4.X で使える可能性があります。

なお、NEC CD-260R, NEC CDR-260R という別な名前のドライブがあるよう ですが、それはこの話とは関係ありません。お間違えのないようにお願い 致します。

目次へ

他のマシンについて

マニュアルによると

PC9821Xn/C9W, PC9821Xp/C8W, PC9821Xs/C8W
はいずれも同じ CD-ROM ドライブ (PC-CD60D) を積んでいるよう なので、それらのマシンでもうまくいく可能性があります。

また、他のマシンでも、OS 立ち上げ時に

wdc0: unit 1 (atapi): <NEC CD-ROM DRIVE:260/XXX> ,...
(XXX はドライブのリビジョン番号) と表示される、NEC CD 260 を積んで いるマシンでは同じ現象が起こる可能性があります。

NEC CD 260 で音楽 CD を演奏しようとすると起こる現象に関しては、 こちらをご覧下さい。この現象が起こるならば 同じパッチで対処できる可能性があります。

Xs 以外のマシンでテストして下さった方がいらっしゃいましたら、是非 こちらまでお知らせ下さい。 今の所確認しているのは

PC9821Xs/C8W 内蔵 NEC CD 260/.160
PC9821Xs/C8W 内蔵 NEC CD 260/.250
PC9821Xs/C8W 内蔵 NEC CD 260/.260
PC9821Ap3/C8W 内蔵 NEC CD 260/.250
です (11/22 1999 現在)。

また、以下のマシンに標準で内蔵されている CD-ROM ドライブも NEC CD 260 である可能性があります (確認はとれていません)。

PC9821Xa/C9W, PC9821As3/C8W, PC9821Ap3/C8W/C9W, PC9821Cs2, PC9821Ce2, PC9801BX4

目次へ

差分ファイル

  1. FreeBSD(98)2.2.X 用の音楽 CD 用の wcd.c への差分 (パッチファイル) です。次の環境で動作することを確認しました。

    FreeBSD(98)2.2.1R-RELEASE
    FreeBSD(98)2.2.8R-Rev01
    それ以前のものについては こちら を ご覧下さい。

    /sys/i386/isa/wcd.c への差分 (wcd-228.diff: 2636 Byte)

    (更新日 06/27 1999)
  2. 水野@秋田大学さんが、 上記のパッチを FreeBSD(98)3.2R-Rev01 用に作成してくださいました。 その atapi-cd.c への差分を、ご本人の許可を頂き、ここに公開します。

    /sys/i386/isa/atapi-cd.c への差分 (atapi-cd.c.diff: 2952 Byte)

    (更新日 11/22 1999)
  3. 上記の水野@秋田大学さんのパッチは、FreeBSD(98)3.5.1R の /sys/i386/isa/atapi-cd.c にも一応当たるようです。ただし、動作確認は していません。もしかすると問題があるかも知れませんが、その場合は 報告して頂けるとありがたいです。

    (更新日 12/29 1999)
  4. FreeBSD(98)4.6R-Rev01 用の音楽 CD 用のパッチです。 なお、これは atapicd ではなくて、wcd の方へのパッチですので、 当てるファイルは /sys/i386/isa/wd_cd.c です。

    /sys/i386/isa/wd_cd.c への差分 (wd_cd-461.diff: 3101 Byte)

    (更新日 07/22 2002)
目次へ

音楽 CD の演奏について

NEC CD 260 では、/usr/sbin/cdcontrol プログラムで演奏しようとする と、msf (Minute,Second,Frame) を指定した場合には不完全ながら演奏 ができ、その他ではあまりうまくいきません。msf を指定した場合も、 例えば

/usr/sbin/cdcontrol -f /dev/wcd0c play 9:0.0 18:0.0
のように、9 分から 18 分までの 9 分間を指定したのに 3 分間位の所で 止まってしまいます。

これは wcd.c へのパッチにより対処できます。また、このパッチにより、 xcdplayer-2.2 なども使えるようになります。xmcd, Workman も使えると の報告もありました。

パッチを当ててカーネルを再構築した後、

/usr/sbin/cdcontrol -f /dev/wcd0c play 9:0.0 16:0.0
とやって 7 分間程演奏され、
/usr/sbin/cdcontrol -f /dev/wcd0c play 1 1
で 1 曲目が演奏されれば O.K. です。

なお、cdcontrol などを実行する場合は、/dev/wcd0c (あるいは /dev/rwcd0c) などに適当なパーミッションが必要です。

目次へ

wcd.c の変更箇所

NEC CD 260 での不具合は、結局、msf のデータを 16 進データではな く、BCD データとして渡すことで対処できそうだということが分かり ました。

よって、元々の wcd.c ではそのまま 16 進データの msf を使って実行し ている所を BCD の msf のデータに変換して実行するようにしています。

また、音楽 CD の演奏は msf の指定によるものと lba (HSG とも呼ばれる) というフォーマットによるものがあるのですが、NEC CD 260 では lba の 方はどうもうまくいきません。よって、それも強制的に msf に変換して実 行するようにしています。

これらは wcd.c の中で行われていますので、通常の CD の player なら多 分使えるようになると思います。

/usr/sbin/cdcontrol で debug オプションを指定すると、cdcontrol が 実行した atapi コマンドが出力されるようになりますが、それを見れば パッチ前とパッチ後の違いが分かると思います。

なお、以前のパッチでは、16 進から BCD への変換のマクロを手で書いて いたのですが、mcd, scd で使われている bin2bcd() という関数を使うよ うに書き直しています。

今回そのために mcd.c, scd.c を読んでみたのですが、mcd, scd では 16 進でもらった msf のデータを BCD にして実行しているようでした。と なると NEC CD 260 はむしろこちらの仕様に近い、といったような感じを うけます。この辺に詳しい方がいたら教えて下さい。

目次へ

バグレポート、動作報告

このパッチは無保証ですが、動作しない、不安定である、といった場合は 報告して下されば対処を検討します。動作した、特に Xs 以外で、という 場合の動作報告も歓迎します。報告は メールでお願い致します。

目次へ

謝辞

以上の皆さん方に、この場を借りて厚くお礼申し上げます。

目次へ
FreeBSD のページへ戻る
作成日: 09/02 2015
竹野茂治@新潟工科大学 (shige@iee.niit.ac.jp)