(57)【特許請求の範囲】
【請求項１】
リードイン領域と、プログラム記録領域と、リードアウト領域と、を備えたＣＤ−ＲＯＭにおいて、
符号化されたデータを前記プログラム記録領域に記録し、
前記符号化されたデータを復号化する際にもちいる所定のコードを、前記リードイン領域と前記プログラム記録領域との間に存在する空白領域に記録し、
前記符号化されたデータは、元のデータの全部または一部であって、連続するディジタルデータを順次読み込み、読み込まれたディジタルデータが所定の連続パターンの配列であるか否かを判定し、判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する所定数のバイトデータの全部または一部に対して、所定の値を加算または減算することによって、符号化されたものであることを特徴とするＣＤ−ＲＯＭ。
【請求項２】
さらに、前記符号化されたデータを読み込む際に、前記空白領域に記録された所定のコードを読み出させ、読み出された所定のコードをもちいて前記データを復号化させる復号化プログラムを、前記プログラム記録領域内の、前記データが記録されたセクタと同一のセクタに記録したことを特徴とする請求項１に記載のＣＤ−ＲＯＭ。
【請求項３】
リードイン領域と、プログラム記録領域と、リードアウト領域と、を備えたＣＤ−ＲＯＭにおいて、
符号化されたデータを前記プログラム記録領域に記録し、
前記符号化されたデータを復号化する際にもちいる所定のコードを、前記リードイン領域と前記プログラム記録領域との間に存在する空白領域に記録し、
さらに、前記符号化されたデータを読み込む際に、前記空白領域に記録された所定のコードを読み出させ、読み出された所定のコードをもちいて前記データを復号化させる復号化プログラムを、前記プログラム記録領域内の、前記データが記録されたセクタと同一のセクタに記録したことを特徴とするＣＤ−ＲＯＭ。
【請求項４】
前記復号化プログラムは、前記符号化されたデータの全部または一部であって、前記連続するディジタルデータを順次読み込こませ、読み込まれたディジタルデータが前記所定の連続パターンの配列であるか否かを判定させ、判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する前記所定数のバイトデータの全部または一部に対して、前記所定の値を減算または加算させることによって、前記符号化されたデータを復号化させることを特徴とする請求項３に記載のＣＤ−ＲＯＭ。
【請求項５】
前記所定の値は、連続パターンの配列となる値であることを特徴とする請求項１〜４のいずれか一つに記載のＣＤ−ＲＯＭ。
【請求項６】
前記所定の連続パターンの配列、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続するディジタルデータの所定数および前記所定の値のうちの少なくともいずれか一つは、前記所定のコードに基づいて決定されることを特徴とする請求項１〜５のいずれか一つに記載のＣＤ−ＲＯＭ。
【請求項７】
リードイン領域と、プログラム記録領域と、リードアウト領域と、を備えたＣＤ−ＲＯＭに記録されたデータを読み出すＣＤ−ＲＯＭドライブ装置において、
前記リードイン領域と前記プログラム記録領域との間に存在する空白領域に記録された、前記符号化されたデータを復号化する際にもちいる所定のコードを読み出す所定コード読出手段と、
前記所定コード読出手段によって読み出された所定のコードをもちいて、前記プログラム記録領域に記録された符号化されたデータを復号化する復号化処理手段と、
を備え、
前記符号化されたデータは、元のデータの全部または一部であって、連続するディジタルデータを順次読み込み、読み込まれたディジタルデータが所定の連続パターンの配列であるか否かを判定し、判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する所定数のバイトデータの全部または一部に対して、所定の値を加算または減算することによって、符号化されたものであり、
前記復号化手段は、
前記符号化されたデータの全部または一部であって、前記連続するディジタルデータを順次読み込こむ読み込み手段と、
前記読み込み手段によって読み込まれたディジタルデータが前記所定の連続パターンの配列であるか否かを判定する判定手段と、
前記判定手段によって判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する前記所定数のバイトデータの全部または一部に対して、前記所定の値を減算または加算する演算処理手段と、
を備えたことを特徴とするＣＤ−ＲＯＭドライブ装置。
【請求項８】
リードイン領域と、プログラム記録領域と、リードアウト領域と、を備えたＣＤ−ＲＯＭに記録されたデータを読み出す情報処理装置において、
前記リードイン領域と前記プログラム記録領域との間に存在する空白領域に記録された、前記符号化されたデータを復号化する際にもちいる所定のコードを読み出す所定コード読出手段と、
前記所定コード読出手段によって読み出された所定のコードをもちいて、前記プログラム記録領域に記録された符号化されたデータを復号化する復号化処理手段と、
を備え、
前記符号化されたデータは、元のデータの全部または一部であって、連続するディジタルデータを順次読み込み、読み込まれたディジタルデータが所定の連続パターンの配列であるか否かを判定し、判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する所定数のバイトデータの全部または一部に対して、所定の値を加算または減算することによって、符号化されたものであり、
前記復号化手段は、
前記符号化されたデータの全部または一部であって、前記連続するディジタルデータを順次読み込こむ読み込み手段と、
前記読み込み手段によって読み込まれたディジタルデータが前記所定の連続パターンの配列であるか否かを判定する判定手段と、
前記判定手段によって判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する前記所定数のバイトデータの全部または一部に対して、前記所定の値を減算または加算する演算処理手段と、
を備えたことを特徴とする情報処理装置。
【請求項９】
リードイン領域と、プログラム記録領域と、リードアウト領域と、を備えたＣＤ−ＲＯＭを作成するＣＤ−ＲＯＭ作成方法において、
符号化されたデータを前記プログラム記録領域に記録するとともに、前記符号化されたデータを復号化する際にもちいる所定のコードを、前記リードイン領域と前記プログラム記録領域との間に存在する空白領域に記録し、
さらに、前記符号化されたデータを読み込む際に、前記空白領域に記録された所定のコードを読み出させ、読み出された所定のコードをもちいて前記データを復号化させる復号化プログラムを、前記プログラム記録領域内の、前記データが記録されたセクタと同一のセクタに記録することを特徴とするＣＤ−ＲＯＭ作成方法。
【請求項１０】
リードイン領域と、プログラム記録領域と、リードアウト領域と、を備えたＣＤ−ＲＯＭのデータを読み出すＣＤ−ＲＯＭ読出方法において、
前記リードイン領域と前記プログラム記録領域との間に存在する空白領域に記録された、前記符号化されたデータを復号化する際にもちいる所定のコードを読み出す所定コード読出工程と、
前記所定コード読出工程によって読み出された所定のコードをもちいて、前記プログラム記録領域に記録された符号化されたデータを復号化する復号化工程と、
を含み、
前記符号化されたデータは、元のデータの全部または一部であって、連続するディジタルデータを順次読み込み、読み込まれたディジタルデータが所定の連続パターンの配列であるか否かを判定し、判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する所定数のバイトデータの全部または一部に対して、所定の値を加算または減算することによって、符号化されたものであり、
前記復号化工程は、
前記符号化されたデータの全部または一部であって、前記連続するディジタルデータを順次読み込こむ読み込み工程と、
前記読み込み工程によって読み込まれたディジタルデータが前記所定の連続パターンの配列であるか否かを判定する判定工程と、
前記判定工程によって判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する前記所定数のバイトデータの全部または一部に対して、前記所定の値を減算または加算する演算工程と、
を含んだことを特徴とするＣＤ−ＲＯＭ読出方法。
【請求項１１】
前記所定の値は、連続パターンの配列となる値であることを特徴とする請求項１０に記載のＣＤ−ＲＯＭ読出方法。
【請求項１２】
前記所定の連続パターンの配列、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続するディジタルデータの所定数および前記所定の値のうちの少なくともいずれか一つは、前記所定のコードに基づいて決定されることを特徴とする請求項１０または１１に記載のＣＤ−ＲＯＭ読出方法。
【請求項１３】
前記請求項９〜１２のいずれか一つに記載された方法をコンピュータに実行させるプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＣＤ−ＲＯＭ、ＣＤ−ＲＯＭドライブ装置、ＣＤ−ＲＯＭの読み出し機能を備えた情報処理装置、ＣＤ−ＲＯＭ作成方法、ＣＤ−ＲＯＭ読出方法およびそれらの方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【０００２】
【従来の技術】
従来から、プログラムやデータの流通、販売には、それらのプログラムやデータを記録したＣＤ−ＲＯＭをもちいるのが一般的であった。ＣＤ−ＲＯＭは、記録容量が約６４０ＭＢあるため、特に大容量のプログラムやデータの流通、販売には適していた。
【０００３】
【発明が解決しようとする課題】
しかしながら、近年のＣＤ−ＲやＣＤ−ＲＷなどの書き込み可能な記録媒体に関する技術の発達によって、ＣＤ−ＲやＣＤ−ＲＷをもちいることで、ＣＤ−ＲＯＭに記録されたプログラムやデータを不法にフルコピーし、いわゆる海賊版として販売するなどの不法行為が増加しているという問題点があった。
【０００４】
この問題点については、ＣＤ−ＲやＣＤ−ＲＷなどの書き込み可能な記録媒体をもちいることによってフルコピーが容易におこなうことができる故に、それらの不法行為を確実に防止することはきわめてが困難であった。
【０００５】
この発明は、上記に鑑みてなされたものであって、ＣＤ−ＲＯＭに記録されたデータをフルコピーした場合には、オリジナルのＣＤ−ＲＯＭと同様にはプログラムまたはデータを使用することができないようにすることが可能なＣＤ−ＲＯＭ、ＣＤ−ＲＯＭドライブ装置、情報処理装置、ＣＤ−ＲＯＭ作成方法、ＣＤ−ＲＯＭ読出方法およびそれらの方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記の目的を達成するために、請求項１に記載の発明にかかるＣＤ−ＲＯＭは、リードイン領域と、プログラム記録領域と、リードアウト領域と、を備えたＣＤ−ＲＯＭにおいて、符号化されたデータを前記プログラム記録領域に記録し、前記符号化されたデータを復号化する際にもちいる所定のコードを、前記リードイン領域と前記プログラム記録領域との間に存在する空白領域に記録し、前記符号化されたデータは、元のデータの全部または一部であって、連続するディジタルデータを順次読み込み、読み込まれたディジタルデータが所定の連続パターンの配列であるか否かを判定し、判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する所定数のバイトデータの全部または一部に対して、所定の値を加算または減算することによって、符号化されたものであることを特徴とする。
【０００７】
また、請求項２に記載の発明にかかるＣＤ−ＲＯＭは、請求項１に記載の発明において、さらに、前記符号化されたデータを読み込む際に、前記空白領域に記録された所定のコードを読み出させ、読み出された所定のコードをもちいて前記データを復号化させる復号化プログラムを、前記プログラム記録領域内の、前記データが記録されたセクタと同一のセクタに記録したことを特徴とする。
【０００８】
また、請求項３に記載の発明にかかるＣＤ−ＲＯＭは、リードイン領域と、プログラム記録領域と、リードアウト領域と、を備えたＣＤ−ＲＯＭにおいて、符号化されたデータを前記プログラム記録領域に記録し、前記符号化されたデータを復号化する際にもちいる所定のコードを、前記リードイン領域と前記プログラム記録領域との間に存在する空白領域に記録し、さらに、前記符号化されたデータを読み込む際に、前記空白領域に記録された所定のコードを読み出させ、読み出された所定のコードをもちいて前記データを復号化させる復号化プログラムを、前記プログラム記録領域内の、前記データが記録されたセクタと同一のセクタに記録したことを特徴とする。
【０００９】
また、請求項４に記載の発明にかかるＣＤ−ＲＯＭは、請求項３に記載の発明において、前記復号化プログラムが、前記符号化されたデータの全部または一部であって、前記連続するディジタルデータを順次読み込こませ、読み込まれたディジタルデータが前記所定の連続パターンの配列であるか否かを判定させ、判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する前記所定数のバイトデータの全部または一部に対して、前記所定の値を減算または加算させることによって、前記符号化されたデータを復号化させることを特徴とする。
【００１０】
また、請求項５に記載の発明にかかるＣＤ−ＲＯＭは、請求項１〜４のいずれか一つに記載の発明において、前記所定の値が、連続パターンの配列となる値であることを特徴とする。
【００１１】
また、請求項６に記載の発明にかかるＣＤ−ＲＯＭは、請求項１〜５に記載の発明において、前記所定の連続パターンの配列、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続するディジタルデータの所定数および前記所定の値の少なくともいずれか一つが、前記所定のコードに基づいて決定されることを特徴とする。
【００１２】
また、請求項７に記載の発明にかかるＣＤ−ＲＯＭドライブ装置は、リードイン領域と、プログラム記録領域と、リードアウト領域と、を備えたＣＤ−ＲＯＭに記録されたデータを読み出すＣＤ−ＲＯＭドライブ装置において、前記リードイン領域と前記プログラム記録領域との間に存在する空白領域に記録された、前記符号化されたデータを復号化する際にもちいる所定のコードを読み出す所定コード読出手段と、前記所定コード読出手段によって読み出された所定のコードをもちいて、前記プログラム記録領域に記録された符号化されたデータを復号化する復号化処理手段と、を備え、前記符号化されたデータが、元のデータの全部または一部であって、連続するディジタルデータを順次読み込み、読み込まれたディジタルデータが所定の連続パターンの配列であるか否かを判定し、判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する所定数のバイトデータの全部または一部に対して、所定の値を加算または減算することによって、符号化されたものであり、前記復号化手段が、前記符号化されたデータの全部または一部であって、前記連続するディジタルデータを順次読み込こむ読み込み手段と、前記読み込み手段によって読み込まれたディジタルデータが前記所定の連続パターンの配列であるか否かを判定する判定手段と、前記判定手段によって判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する前記所定数のバイトデータの全部または一部に対して、前記所定の値を減算または加算する演算処理手段と、を備えたことを特徴とする。
【００１４】
また、請求項８に記載の発明にかかる情報処理装置は、リードイン領域と、プログラム記録領域と、リードアウト領域と、を備えたＣＤ−ＲＯＭに記録されたデータを読み出す情報処理装置において、前記リードイン領域と前記プログラム記録領域との間に存在する空白領域に記録された、前記符号化されたデータを復号化する際にもちいる所定のコードを読み出す所定コード読出手段と、前記所定コード読出手段によって読み出された所定のコードをもちいて、前記プログラム記録領域に記録された符号化されたデータを復号化する復号化処理手段と、を備え、前記符号化されたデータが、元のデータの全部または一部であって、連続するディジタルデータを順次読み込み、読み込まれたディジタルデータが所定の連続パターンの配列であるか否かを判定し、判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する所定数のバイトデータの全部または一部に対して、所定の値を加算または減算することによって、符号化されたものであり、前記復号化手段が、前記符号化されたデータの全部または一部であって、前記連続するディジタルデータを順次読み込こむ読み込み手段と、前記読み込み手段によって読み込まれたディジタルデータが前記所定の連続パターンの配列であるか否かを判定する判定手段と、前記判定手段によって判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する前記所定数のバイトデータの全部または一部に対して、前記所定の値を減算または加算する演算処理手段と、を備えたことを特徴とする。
【００１６】
また、請求項９に記載の発明にかかるＣＤ−ＲＯＭ作成方法は、リードイン領域と、プログラム記録領域と、リードアウト領域と、を備えたＣＤ−ＲＯＭを作成するＣＤ−ＲＯＭ作成方法において、符号化されたデータを前記プログラム記録領域に記録するとともに、前記符号化されたデータを復号化する際にもちいる所定のコードを、前記リードイン領域と前記プログラム記録領域との間に存在する空白領域に記録し、さらに、前記符号化されたデータを読み込む際に、前記空白領域に記録された所定のコードを読み出させ、読み出された所定のコードをもちいて前記データを復号化させる復号化プログラムを、前記プログラム記録領域内の、前記データが記録されたセクタと同一のセクタに記録することを特徴とする。
【００１８】
また、請求項１０に記載の発明にかかるＣＤ−ＲＯＭ読出方法は、リードイン領域と、プログラム記録領域と、リードアウト領域と、を備えたＣＤ−ＲＯＭのデータを読み出すＣＤ−ＲＯＭ読出方法において、前記リードイン領域と前記プログラム記録領域との間に存在する空白領域に記録された、前記符号化されたデータを復号化する際にもちいる所定のコードを読み出す所定コード読出工程と、前記所定コード読出工程によって読み出された所定のコードをもちいて、前記プログラム記録領域に記録された符号化されたデータを復号化する復号化工程と、を含み、前記符号化されたデータが、元のデータの全部または一部であって、連続するディジタルデータを順次読み込み、読み込まれたディジタルデータが所定の連続パターンの配列であるか否かを判定し、判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する所定数のバイトデータの全部または一部に対して、所定の値を加算または減算することによって、符号化されたものであり、前記復号化工程が、前記符号化されたデータの全部または一部であって、前記連続するディジタルデータを順次読み込こむ読み込み工程と、前記読み込み工程によって読み込まれたディジタルデータが前記所定の連続パターンの配列であるか否かを判定する判定工程と、前記判定工程によって判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する前記所定数のバイトデータの全部または一部に対して、前記所定の値を減算または加算する演算工程と、を含んだことを特徴とする。
【００２０】
また、請求項１１に記載の発明にかかるＣＤ−ＲＯＭ読出方法は、請求項１０に記載の発明において、前記所定の値が、所定の連続パターンの配列となる値であることを特徴とする。
【００２１】
また、請求項１２に記載の発明にかかるＣＤ−ＲＯＭ読出方法は、請求項１０または１１に記載の発明において、前記所定の連続パターンの配列、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続するディジタルデータの所定数および前記所定の値の少なくともいずれか一つが、前記所定のコードに基づいて決定されることを特徴とする。
【００２２】
また、請求項１３に記載の発明にかかる記録媒体は、前記請求項９〜１２のいずれか一つに記載された方法をコンピュータに実行させるプログラムを記録したことを特徴とする。これによって、当該プログラムをコンピュータによって読み取ることが可能となり、これによって、請求項９〜１２の動作をコンピュータによって実現することが可能である。
【００２３】
【発明の実施の形態】
以下、この発明にかかるＣＤ−ＲＯＭ、ＣＤ−ＲＯＭドライブ装置、情報処理装置、ＣＤ−ＲＯＭ作成方法、ＣＤ−ＲＯＭ読出方法およびそれらの方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体の好適な実施の形態について添付図面を参照し、詳細に説明する。なお、この実施の形態によってこの発明が限定されるものではない。
【００２４】
〔実施の形態〕
（所定コードと復号化プログラムの概要）
まず、ＣＤ−ＲＯＭに記録する所定のコードと復号化プログラムの概要について説明する。図１は、コンパクトディスクの規格を示す説明図である。図１において、ＣＤ−ＲＯＭを含むコンパクトディスク１００は、リードイン領域１０１と、プログラム記録領域１０２と、リードアウト領域１０３とから構成される。リードイン領域１０１がディスクの内周側であり、リードアウト領域１０３がディスクの外周側であり、リードイン領域１０１とリードアウト領域１０３の両者の間にプログラム記録領域１０２が存在する。
【００２５】
また、図２は、ＩＳＯ９６６０を採用したコンパクトディスクのディスク構造を示す説明図である。図２において、読み出す順番に左から、リードイン領域１０１、プログラム記録領域１０２、リードアウト領域１０３が連続するように構成されている。したがって、リードイン領域１０１のすぐ後ろからプログラム記録領域１０２のＬＢＮ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ｎｕｍｂｅｒ）が０から割り振られる。
【００２６】
しかし、ＬＢＮが０の位置は、オーディオでいうと「００ｍｉｎ，０２ｓｅｃ，００ｆｒａｍｅ」の位置に該当する。すなわち、リードイン領域１０１とプログラム記録領域１０２との間には、２秒分（約３５０ｋバイト）の空白領域２００が存在することになる。この空白領域２００に所定のコードを記録しておく。この所定のコードは、あらかじめ符号化して記録したデータ（プログラム）を読み出す際に、復号化するためにもちいるためのものである。
【００２７】
そして、この空白領域２００に記録されたデータについては、ＣＤ−ＲＯＭ１００のデータをフルコピー（フルダビング）した場合であっても、コピー先の記録媒体（ＣＤ−Ｒ、ＣＤ−ＲＷなど）にはコピーされることはない。その理由は以下のとおりである。
【００２８】
すなわち、通常、ＣＤ−Ｒ、ＣＤ−ＲＷなどは、フルコピーをする場合は、プログラム記録領域１０２に記録されたデータを最初にコピーする。すなわち、最初は、ＬＢＮの位置から記録を開始し、プログラム記録領域１０２のデータをすべてコピーした後、最初に戻って、リードイン領域１０１の先頭から引き続き記録を開始する。
【００２９】
図３は、ＣＤ−ＲＯＭのリードイン領域１０１のフォーマットを示す説明図である。図３において、リードイン領域１０１のデータのコピーは、「Ｓ０．Ｓ１」から開始され、最後に「ＣＲＣ」３０１のコピー（書き込み）が終了すると、すべてのコピー処理を終了する。したがって、空白領域２００に記録されたデータはコピー先の記録媒体には全く記録されないことになる。このように、復号化処理にもちいる所定のコードを空白領域２００に記録することによって、単に、ＣＤ−ＲやＣＤ−ＲＷなどの記録媒体にコピーしただけでは、符号化されたデータの復号化処理ができないようにすることに特徴がある。
【００３０】
また、図４は、ＣＤ−ＲＯＭの各セクタのフォーマットを示す説明図である。図４において、各セクタ４００は、２３５２バイトから構成され、先頭に、同期信号（１２バイト）とヘッダ（４バイト）が記録され、その後にユーザデータ（２０４８バイト）が記録され、つぎに、ＥＤＣ（４バイト）、Ｐパリティ（１７２バイト）、Ｑパリティ（１０４バイト）から構成されている。
【００３１】
このうち、ユーザデータ領域（１６番地から２０６３番地）の先頭の領域４０１に、復号化プログラムを記録するとともに、復号化プログラムに引き続き、あらかじめ符号化されたデータを記録する。したがって、このセクタ４００のユーザデータを読み出す場合は、まず、復号化プログラムを読み出し、その復号化プログラムの命令にしたがって、空白領域２００の所定コードを読み出し、そのコードをもちいて、復号化プログラムに引き続いて記録された、あらかじめ符号化されたデータの復号化処理をおこなう。
【００３２】
したがって、コピーされた記録媒体では、そこに記録されたデータを読み出す際、符号化されたデータについては、所定のコードが記録されていないため、上記符号化されたデータの復号化を適切に実行することができず、上記データを適切に読み込むことができないことになる。
【００３３】
（情報処理装置のハードウエア構成）
図５は、この発明の実施の形態にかかる情報処理装置のハードウエア構成を示すブロック図である。図５のブロック図において、情報処理装置は、ＣＰＵ５０１と、ＲＯＭ５０２と、ＲＡＭ５０３と、ＨＤＤ（ハードディスクドライブ）５０４と、ＨＤ（ハードディスク）５０５と、ＦＤＤ（フロッピーディスクドライブ）５０６と、着脱可能な記録媒体の一例としてのＦＤ（フロッピーディスク）５０７と、ディスプレイ５０８と、Ｉ／Ｆ（インタフェース）５０９と、キーボード５１１と、マウス５１２と、スキャナ５１３と、プリンタ５１４と、ＣＤ−ＲＯＭドライブ５１５と、を備えている。また、各構成部はバス５００によってそれぞれ接続されている。
【００３４】
ここで、ＣＰＵ５０１は、情報処理装置全体の制御を司る。ＲＯＭ５０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ５０３は、ＣＰＵ５０１のワークエリアとして使用される。ＨＤＤ５０４は、ＣＰＵ５０１の制御にしたがってＨＤ５０５に対するデータのリード／ライトを制御する。ＨＤ５０５は、ＨＤＤ５０４の制御で書き込まれたデータを記憶する。
【００３５】
ＦＤＤ５０６は、ＣＰＵ５０１の制御にしたがってＦＤ５０７に対するデータのリード／ライトを制御する。ＦＤ５０７は、ＦＤＤ５０６の制御で書き込まれたデータを記憶する。ディスプレイ５０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータに関するウインドウ（ブラウザ）を表示する。たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどである。
【００３６】
Ｉ／Ｆ（インタフェース）５０９は、通信回線５１０を通じてＬＡＮやインターネットなどのネットワークに接続され、ネットワークを介して、他のサーバや情報処理装置に接続される。そして、Ｉ／Ｆ５０９は、ネットワークと内部とのインタフェースを司り、他のサーバや端末装置からのデータの入出力を制御する。たとえば、モデムなどである。
【００３７】
キーボード５１１は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。タッチパネル式の入力パッドなどであってもよい。マウス５１２は、カーソルの移動や範囲選択、あるいはウインドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様の機能を備えるものであれば、トラックボール、ジョイスティックなどであってもよい。
【００３８】
スキャナ５１３は、画像を光学的に読み取り、情報処理装置内に画像データを取りこむ。また、プリンタ５１４は、画像データや文書データを印刷する。たとえば、レーザプリンタ、インクジェットプリンタなどである。
【００３９】
また、ＣＤ−ＲＯＭドライブ５１５は、ＣＤ−ＲＯＭ１００に記録されているデータの読み出しをおこなう。
【００４０】
（データの読み出し方法の手順）
図６は、この発明の実施の形態にかかるＣＤ−ＲＯＭに記録されたデータの読み出し方法の手順を示すフローチャートである。図６のフローチャートにおいて、まず、各セクタごとにデータの読み出しをおこなう（ステップＳ６０１）。
【００４１】
そして、所定コードの読み出し命令があったか否かを判断する（ステップＳ６０２）。ここで、読み出し命令がない場合（ステップＳ６０２：Ｎｏ）は、なにもせずに、ステップＳ６０９へ移行し、読み出したデータをそのまま出力する（ステップＳ６０９）。
【００４２】
一方、ステップＳ６０２において、所定コードの読み出し命令があった場合（ステップＳ６０２：Ｙｅｓ）は、所定コードを、空白領域２００から読み出す（ステップＳ６０３）。そして、読み出してきた所定コードを、所定領域のデータに保存する（ステップＳ６０４）。ここで、所定コードは４ビットのデータであるとする。
【００４３】
つぎに、上記所定領域のデータが「００００」であるか否かを判断する（ステップＳ６０５）。ここで、上記ステップＳ６０３において、正常に所定コードを読み出すことができた場合は、所定コードは通常「００００」ではないので、その場合（ステップＳ６０５：Ｎｏ）は、つぎに、ステップＳ６０８へ移行して、復号化処理をおこなう（ステップＳ６０８）。ここでの復号化処理は、適切な所定コードの基づいておこなわれるので、正常な復号化処理となる。そして、復号化処理されたデータを出力する（ステップＳ６０９）。
【００４４】
一方、ステップＳ６０５において、上記所定領域のデータが「００００」である場合（すなわち、所定コードが上記空白領域２００に記録されておらず、その場合、通常、ＣＤ−Ｒなどの書き込み可能な記録媒体の空白領域２００のデータは「０」となっているため、所定コードとして「００００」を読み出してきた場合である）は、ステップＳ６０６において、所定領域のデータが「００００」と判断され、（ステップＳ６０５：Ｙｅｓ）は、つぎに、図示を省略するプログラムカウンタが所定値になっているか否かを判断する（ステップＳ６０６）。
【００４５】
ここで、所定値は、たとえば「２」または「３」を設定する。上記プログラムカウンタは初期値が「０」となっているため、最初にこのステップに移行した場合には、プログラムカウンタの値は「０」である。したがって、最初にこのステップに移行した場合は、所定値に達していないと判断され（ステップＳ６０６：Ｎｏ）、ステップＳ６０７へ移行する。
【００４６】
ステップＳ６０７では、プログラムカウンタを＋１だけアップして、その後、ステップＳ６０３へ移行する。そして、ステップＳ６０３〜ステップＳ６０７の処理を繰り返しおこない、ステップＳ６０６において、プログラムカウンタが所定値に達した場合（ステップＳ６０６：Ｙｅｓ）は、ステップＳ６０８へ移行する。
【００４７】
ステップＳ６０３〜ステップＳ６０７において、複数回（２、３回）、所定コード読み出しをおこなわせた理由は、空白領域２００に正常な所定コードが記録されている場合であっても、読み出しに失敗する場合があり、複数回だけリトライさせることで、読み出し失敗によって不適切な復号化処理がおこなわれるのを防止するためである。
【００４８】
ステップＳ６０６でプログラムカウンタが所定値に達した場合（ステップＳ６０６：Ｙｅｓ）は、空白領域２００に適切な所定コードが記録されていないと判断することができる。そして、適切な所定コードを有さない状態で復号化処理を開始する（ステップＳ６０８）。復号化処理は、上記所定コードに基づいておこなわれるため、適切な所定コードを有さない状態で復号化処理を開始すると、不適切な復号化処理が実行される。
【００４９】
復号化処理の具体的な内容については後述するが、場合によっては、プログラムが途中で停止することによってデータの出力がされなかったり、不適切な復号化処理によって出力されたデータが、誤動作の原因になったりする。このようにして、ＣＤ−ＲＯＭをＣＤ−Ｒなどにコピーして使用しようとする場合には、データ（プログラム）が適切に動作しないようにすることができる。
【００５０】
（符号化処理の内容）
つぎに、データを符号化する符号化処理の内容について説明する。図７に示した符号化処理部７００は、シリアル入力されるビットデータ列に対してバイト変換をおこなうことでバイト列を取得する。そして、取得したバイト列に含まれる所定のバイトデータの存在を条件として、バイトコードから所定範囲にわたるバイトデータに対して所定の防護キー値を加算（減算）することで符号化をおこなうことを特徴としている。また、図１１に示すように、逆の手順（復号化処理）によって復号化をおこなうことを特徴とする。
【００５１】
図７は、この発明の本実施の形態にかかる符号化処理部７００の構成を示すブロック図である。図７において、符号化処理部７００は第１バッファ７０１と、防護キー付加位置判定部７０２と、防護キー付加処理部７０３と、第２バッファ７０４と、付加条件／付加範囲／防護キー記憶部７０５と、を備える構成となっている。
【００５２】
ここで、付加条件／付加範囲／防護キー記憶部７０５は、付加条件、付加範囲および防護キー値を記憶するものである。ここで、付加条件とは、バイトデータが、どのバイトコードを示した場合にそのバイトデータからいくつ後のバイトデータに対して防護キー値の加算をおこなうかを示すものである。したがって、この付加条件は、所定のバイトコードと加算開始位置を示す数値とから構成される。
【００５３】
また、付加範囲とは、付加条件によって示される加算開始位置から、いくつのバイトデータにわたって防護キー値を加算するかを示すものであり、その範囲を示す数値によって表わされる。防護キー値とは、上記したように、バイトデータに加算する数値を表わすものである。これらの付加条件、付加範囲、防護キー値の少なくとも一つは、空白領域２００に記録されている所定コードに基づいて決定される。
【００５４】
第１バッファ７０１は、データ記憶部７５０から受け取った（プログラム）データ、特にシリアルビットデータを、少なくとも複数のバイトが構成できる容量分のデータを蓄積する記憶部である。また、この第１バッファ７０１は、ディジタルデータのシリアル−パラレル変換を可能としたＦＩＦＯ（Ｆｉｒｓｔ  ＩｎＦｉｒｓｔ  Ｏｕｔ）メモリとしての機能を果たす。第１バッファ７０１は、たとえば、図５に示したＲＡＭ５０３などによってその機能を実現する。
【００５５】
防護キー付加位置判定部７０２は、第１バッファ７０１に蓄積されたバイトデータをその蓄積順に取り出し、取り出したバイトデータが、上記した付加条件によって示されるバイトコードに一致するか否かを判定するものである。防護キー付加位置判定部７０２は、第１バッファ７０１から取り出したバイトデータが上記付加条件を満たす場合には、たとえば、その旨を示す付加フラグをＯＮ状態にしたり、後述するように付加カウンタをカウントアップする。防護キー付加位置判定部７０２は、たとえば、ＲＯＭ５０２、ＲＡＭ５０３、ＨＤ５０５、ＦＤ５０７などにあらかじめ記憶されたプログラムをＣＰＵ５０１が実行することによって上記機能を実現する。
【００５６】
防護キー付加処理部７０３は、第１バッファ７０１から取り出されたバイトデータを、防護キー付加位置判定部７０２を介して受け取り、受け取ったバイトデータが上記付加条件を満たす場合に、そのバイトデータに上記防護キー値を加算する。具体的には、防護キー付加処理部７０３は、上記付加フラグや付加カウンタの状態に応じて、バイトデータに対して防護キー値を加算するか否かを判定する。防護キー付加処理部７０３は、たとえば、ＲＯＭ５０２、ＲＡＭ５０３、ＨＤ５０５、ＦＤ５０７などにあらかじめ記憶されたプログラムをＣＰＵ５０１が実行することによって上記機能を実現する。
【００５７】
第２バッファ７０４は、防護キー付加処理部７０３において付加処理が施されたバイトデータおよび付加処理が施されなかったバイトデータを蓄積する記憶部である。また、この第２バッファ７０４は、ディジタルデータのパラレル−シリアル変換を可能としたＦＩＦＯメモリとしての機能を果たす。したがって、符号化処理部７００は、第１バッファ７０１が受け取ったデータに対し、所定の条件を満たすデータ部のみを変容させることになる。特に、その変容前後において、データサイズに変化がないことを特徴としている。第２バッファ７０４は、たとえば、図５に示したＲＡＭ５０３などによってその機能を実現する。
【００５８】
つぎに、この符号化処理部７００の動作について説明する。ここでは、説明を簡単にするために、上記した付加条件のうち加算開始位置を１とする。これは、付加条件によって示されるバイトコード、すなわち付加処理を実行するきっかけとなるバイトデータのつぎに位置するバイトデータから防護キー値の加算または減算をおこなうことを意味する。
【００５９】
図８は、この発明の本実施の形態にかかる符号化処理部７００の符号化処理を示すフローチャートである。符号化処理部７００は、符号化処理を開始するにあたって、まず、符号化の対象となるデータ記憶部７５０に記憶された（プログラム）データを第１バッファ７０１に取りこむ（ステップＳ８０１）。そして、防護キー付加位置判定部７０２が、第１バッファ７０１から１バイト分のデータを読み出す（ステップＳ８０２）。また、防護キー付加位置判定部７０２は、自身が管理する付加カウンタが０より大きい値を示しているか否かを判定する（ステップＳ８０３）。
【００６０】
ステップＳ８０３において付加カウンタが０である場合（ステップＳ８０３：Ｎｏ）には、防護キー付加位置判定部７０２は、第１バッファ７０１から読み出したバイトデータに対して付加処理を施す必要はないと判断し、現在読み出しているバイトデータが防護キー付加条件、すなわち上記したバイトコードと一致するか否かを判定する（ステップＳ８０８）。
【００６１】
ステップＳ８０８において、バイトデータが防護キー付加条件と一致しない場合（ステップＳ８０８：Ｎｏ）には、防護キー付加位置判定部７０２は、現在読み出しているバイトデータをそのまま次段の防護キー付加処理部７０３に渡し、防護キー付加処理部７０３は付加処理を実行することなく、そのバイトデータを第２バッファ７０４に書き込む（ステップＳ８１０）。
【００６２】
ステップＳ８０８において、バイトデータが防護キー付加条件と一致する場合（ステップＳ８０８：Ｙｅｓ）には、防護キー付加位置判定部７０２は、上記した付加カウンタを１にセットし（ステップＳ８０９）、その後、ステップＳ８１０の処理をおこなう。
【００６３】
一方、ステップＳ８０３において、付加カウンタが０より大きい場合（ステップＳ８０３：Ｙｅｓ）には、防護キー付加位置判定部７０２は、第１バッファ７０１から読み出したバイトデータに対して付加処理を施す必要があると判断し、次段の防護キー付加処理部７０３に、現在読み出しているバイトデータを渡すとともに、付加処理を依頼する。これによって、防護キー付加処理部７０３は、受け取ったバイトデータに、付加条件／付加範囲／防護キー記憶部７０５に記憶されている防護キー値を加算する（ステップＳ８０４）。
【００６４】
図９は、この発明の実施の形態にかかる符号化処理部（復号化処理部）において、防護キー値の加算（減算）処理を説明するための説明図であり、防護キー値の加算処理（付加処理）を説明するためのものである。ステップＳ８０４における加算処理は、たとえば、図９に示すように、防護キー値がヘキサコード“１Ｅ”で表わされ、第１バッファ７０１から読み出したデータがバイナリコードで“１０１１００１０”と表わされたバイトデータ、すなわちヘキサコード“Ｂ２”で表わされる場合、バイトデータ“Ｂ２”に防護キー値“１Ｅ”を加算することによりおこなう。したがって、この場合、加算結果として、バイナリコード“１１０１００００”と表わされたバイトデータ、すなわちヘキサコード“Ｄ０”を得ることができる。
【００６５】
防護キー付加位置判定部７０２は、防護キー付加処理部７０３による加算処理が終わると、または防護キー付加処理部７０３に対して加算処理を依頼すると、付加カウンタが付加条件／付加範囲／防護キー記憶部７０５に記憶されている付加範囲を超えているか否かを判定する（ステップＳ８０５）。
【００６６】
ステップＳ８０５において、付加カウンタが付加範囲を超えていない場合（ステップＳ８０５：Ｎｏ）は、防護キー付加位置判定部７０２は、付加カウンタの値をインクリメントし（ステップＳ８０７）、その後、ステップＳ８１０の処理をおこなう。一方、ステップＳ８０５において付加カウンタが付加範囲を超えている場合（ステップＳ８０５：Ｙｅｓ）は、防護キー付加位置判定部７０２は、付加カウンタの値をリセットし（ステップＳ８０６）、その後、ステップＳ８１０の処理をおこなう。
【００６７】
ステップＳ８１０の処理後、第２バッファ７０４のデータを順次、データ記憶部７５０へ送出する（ステップＳ８１１）。そして、送出されたデータがデータ記憶部７５０に書き込まれる（上書きされる）。
【００６８】
以上の処理によって、符号化処理部７００は、第１バッファ７０１に蓄積されたバイトデータに対し、付加条件／付加範囲／防護キー記憶部７０５に記憶された諸条件にしたがってった符号化を実現する。図１０は、この発明の実施の形態にかかる符号化処理部（復号化処理部）の符号化処理（復号化処理）によって得られるバイトデータ列の一例を示す説明図である。
【００６９】
図１０に示すように、付加条件がバイトコード“５Ｄ”のつぎからとし、防護キー値を“１Ｅ”、付加範囲を３とした場合には、符号化処理部７００の符号化処理によって、“５Ｄ  ９Ｂ  １１  ４０  Ａ９”の部分は、“５Ｄ  Ｂ９  ２Ｆ  ５Ｅ  Ａ９”に変容され、“５Ｄ  ８８  ＦＡ  １Ｂ  ３３”の部分は、“５Ｄ  Ａ６  １９  ３９  ３３”に変容される。ここで、“ＦＡ”から“１９”に変容されているように、防護キー値を加算した結果が、１バイトで表わされる数値範囲を超える場合には、その超えた部分の数値を加算結果とする。
【００７０】
また、上記の例においては、防護キー値を一種類のみ設定していたが、防護キー値を複数の値から構成されるデータパターンとして用意しておき、付加範囲の先頭から順に、そのデータパターンが順次示す値を、加算または減算するようにしてもよい。たとえば、図１０に示した例で、付加条件および付加範囲は同じで、防護キー値を“１Ｅ，ＡＢ，７Ｆ”とすると、“５Ｄ”のつぎの“９Ｂ”に対して、“１Ｅ”を加算され、つぎの“１１”に対して“ＡＢ”を加算し、つぎの“４０”に対して“７Ｆ”を加算する。
【００７１】
また、付加条件、付加範囲の設定方法については、以下のような方法であってもよい。たとえば、付加条件を“５Ｄ”のつぎとそのつぎをとばして３つ先からとし、付加範囲を一つおきに３バイトとする。それによって、図１０に示した例をもちいると、加算の対象となるのは、（“９Ｂ”と“１１”をとばした３つ先の）“４０”と“ＤＤ”と“３８”ということになる。いずれにせよ、所定の数値のバイトデータの後に連続する所定数のバイトデータの全部または一部であれば、その内容についてはどのようなものであってもよい。
【００７２】
プログラムは、基本的には８ビットコードの配列として表現されており、そのソースでコマンド等を構成するアルファベットや数値を表わすのに、８ビットコードのうち７ビットしかもちいておらず、最上位ビットである８ビット目を“１”に置換すると、コンピュータ上で認識できないコードになる。したがって、対象のデータがプログラムである場合は、防護キー値として、８ビット目を“１”に置換するようなヘキサコードとして、“８０”〜”ＦＦ”のいずれかをもちいるとより有効である。
【００７３】
（復号化処理の内容）
図１１は、この発明の本実施の形態にかかる復号化処理部１１００の構成を示すブロック図である。図１１において、復号化処理部１１００は、第３バッファ１１０１と、防護キー除去位置判定部１１０２と、防護キー除去処理部１１０３と、第４バッファ１１０４と、付加条件／付加範囲／防護キー記憶部１１０５と、を備える構成となっており、上述した符号化処理部７００と逆の処理をおこなう。なお、付加条件／付加範囲／防護キー記憶部１１０５は、付加条件／付加範囲／防護キー記憶部７０５と別個に設ける必要はなく、兼用してもよい。
【００７４】
第３バッファ１１０１は、上記した第１バッファ７０１と同様の機能を果たす記憶部である。防護キー除去位置判定部１１０２は、第３バッファ１１０１に蓄積されたバイトデータをその蓄積順に取り出し、取り出したバイトデータが、上記した付加条件によって示されるバイトコードに一致するか否かを判定するものである。
【００７５】
防護キー除去位置判定部１１０２は、第３バッファ１１０１から取り出したバイトデータが上記付加条件を満たす場合には、たとえば、その旨を示す付加フラグをＯＮ状態にしたり、後述するように付加カウンタをカウントアップする。したがって、この防護キー除去位置判定部１１０２は、機能としては上記した防護キー付加位置判定部７０２と同じであり、復号化処理部において防護キー除去位置判定部１１０２を設けずに、防護キー付加位置判定部７０２を兼用してもよい。
【００７６】
防護キー除去処理部１１０３は、第３バッファ１１０１から取り出されたバイトデータを、防護キー除去位置判定部１１０２を介して受け取り、受け取ったバイトデータが上記付加条件を満たす場合に、そのバイトデータから上記防護キー値を差し引く。具体的には、防護キー除去処理部１１０３は、上記付加フラグや付加カウンタの状態に応じて、バイトデータに対して防護キー値を差し引くか否かを判定する。
【００７７】
第４バッファ１１０４は、防護キー除去処理部１１０３において除去処理が施されたバイトデータおよび除去処理が施されなかったバイトデータを蓄積する記憶部である。また、この第４バッファ１１０４は、ディジタルデータのパラレル−シリアル変換を可能としたＦＩＦＯメモリとしての機能を果たす。したがって、復号化処理部１１００は、第３バッファ１１０１が受け取ったデータに対し、所定の条件を満たすデータ部のみを変容させることになる。すなわち、上記した防護キー付加処理によって符号化され変容されたデータに対しては復号化処理を施すことになる。
【００７８】
したがって、符号化処理部７００によって防護キーが付加されたプログラムデータは、復号化処理部１１００をもちいて防護キーの除去をおこなわなければ、その内容を正しく取得することはできない。すなわち、符号化処理部７００・復号化処理部１１００は、符号化／復号化処理を、付加条件／付加範囲／防護キー記憶部７０５，１１０５に記憶された内容にしたがってデータサイズを増減させることなく実行することができる。
【００７９】
つぎに、復号化処理部１１００の復号化処理について説明する。図１２は、この発明の本実施の形態にかかる復号化処理部１１００の復号化処理を示すフローチャートである。図１２において、復号化処理部１１００が、復号化処理を開始するにあたって、まず、復号化の対象となる、符号化されたプログラムデータを第３バッファ１１０１に取りこむ（ステップＳ１２０１）。
【００８０】
そして、防護キー除去位置判定部１１０２が、第３バッファ１１０１から１バイト分のデータを読み出す（ステップＳ１２０２）。また、防護キー除去位置判定部１１０２は、自身が管理する付加カウンタが０より大きい値を示しているか否かを判定する（ステップＳ１２０３）。
【００８１】
ステップＳ１２０３において、付加カウンタが０である場合（ステップＳ１２０３：Ｎｏ）には、防護キー除去位置判定部１１０２は、第３バッファ１１０１から読み出したバイトデータに対して除去処理を施す必要はないと判断し、現在読み出しているバイトデータが防護キー付加条件、すなわち上記したバイトコードと一致するか否かを判定する（ステップＳ１２０８）。
【００８２】
ステップＳ１２０８において、バイトデータが防護キー付加条件と一致しない場合（ステップＳ１２０８：Ｎｏ）には、防護キー除去位置判定部１１０２は、現在読み出しているバイトデータをそのまま次段の防護キー除去処理部１１０３に渡す。そして、防護キー除去処理部１１０３は除去処理を実行することなく、そのバイトデータを第４バッファ１１０４に書き込む（ステップＳ１２１０）。
【００８３】
ステップＳ１２０８において、バイトデータが防護キー付加条件と一致する場合（ステップＳ１２０８：Ｙｅｓ）には、防護キー除去位置判定部１１０２は、上記した付加カウンタを１にセットし（ステップＳ１２０９）、ステップＳ１２１０の処理をおこなう。
【００８４】
一方、ステップＳ１２０３において、付加カウンタが０より大きい場合（ステップＳ１２０３：Ｙｅｓ）には、防護キー除去位置判定部１１０２は、第３バッファ１１０１から読み出したバイトデータに対して減算処理を施す必要があると判断し、次段の防護キー除去処理部１１０３に、現在読み出しているバイトデータを渡すとともに、減算処理を依頼する。
【００８５】
これによって、防護キー除去処理部１１０３は、受け取ったバイトデータから、付加条件／付加範囲／防護キー記憶部１１０５に記憶されている防護キー値を差し引く（ステップＳ１２０４）。なお、この減算処理は、図９に示した加算処理と逆の処理であるので、ここではその説明を省略する。
【００８６】
防護キー除去位置判定部１１０２は、防護キー除去処理部１１０３による減算処理が終わると、または防護キー除去処理部１１０３に対して減算処理を依頼すると、付加カウンタが付加条件／付加範囲／防護キー記憶部１１０５に記憶されている付加範囲を超えているか否かを判定する（ステップＳ１２０５）。
【００８７】
ステップＳ１２０５において、付加カウンタが付加範囲を超えていない場合（ステップＳ１２０５：Ｎｏ）は、防護キー除去位置判定部１１０２は、付加カウンタの値をインクリメントし（ステップＳ１２０７）、その後、ステップＳ１２１０の処理をおこなう。一方、ステップＳ１２０５において、付加カウンタが付加範囲を超えている場合（ステップＳ１２０５：Ｙｅｓ）は、防護キー除去位置判定部１１０２は、付加カウンタの値をリセットし（ステップＳ１２０６）、その後、ステップＳ１２１０の処理をおこなう。
【００８８】
ステップＳ１２１０の処理後、第４バッファ１１０４のデータが、補助記憶装置からの読み出しデータとして順次出力される（ステップＳ１２１１）。以上の処理によって、復号化処理部１１００は、第３バッファ１１０１に蓄積されたバイトデータに対し、付加条件／付加範囲／防護キー記憶部１１０５に記憶された諸条件にしたがった復号化を実現する。
【００８９】
また、上記付加条件／付加範囲／防護キーを、入力された解除コードの全部または一部に基づいて設定するようにしてもよい。すなわち、上記付加条件／付加範囲／防護キーと上記解除コードの全部または一部を対応させておく。具体的には、解除コードのｎ番目およびｎ＋１番目の英数文字を付加条件とし、解除コードのｍ番目およびｍ＋１番目の英数文字を防護キー値とし、さらに、解除コードのｐ番目の数字を付加範囲とする。
【００９０】
これらの復号化処理は、復号化プログラムとして、各セクタのプログラム記憶領域１０２に記録することができ、当該セクタのプログラム記録領域１０２に記録されたデータを読み出す際は、まず、この復号化プログラムを読み出して処理を実行させることができる。
【００９１】
以上に説明したように、本実施の形態にかかるＣＤ−ＲＯＭによれば、符号化されたデータをプログラム記録領域１０２に記録し、符号化されたデータを復号化する際にもちいる所定のコードを、リードイン領域１０１とプログラム記録領域１０２との間に存在する空白領域２００に記録したため、ＣＤ−ＲやＣＤ−ＲＷでは、空白領域２００に記録された所定のコードまでコピーすることができず、所定のコードを取得することができない。したがって、上記符号化されたデータの復号化処理をすることができない。
【００９２】
また、本実施の形態にかかるＣＤ−ＲＯＭによれば、符号化されたデータが、元のデータの全部または一部であって、連続するディジタルデータを順次読み込み、読み込まれたディジタルデータが所定の連続パターンの配列であるか否かを判定し、判定された結果、前記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する所定数のディジタルデータの全部または一部に対して、所定の値を加算／減算することによって、符号化されたものであるため、上記所定の連続パターンの配列、所定の連続パターンの配列であると判定されたディジタルデータの後に連続するディジタルデータの連続数、加算／減算する所定の値を知らなければ、符号化されたデータを容易に復号化することができない。
【００９３】
また、本実施の形態にかかるＣＤ−ＲＯＭによれば、さらに、符号化されたデータを読み込む際に、空白領域２００に記録された所定のコードを読み出させ、読み出された所定のコードをもちいて前記データを復号化させる復号化プログラムを、プログラム記録領域１０２内の、前記データが記録されたセクタと同一のセクタに記録したため、セクタごとにデータの符号化をおこなうことができ、かつ、セクタごとにデータの復号化もおこなうことができる。
【００９４】
また、本実施の形態にかかるＣＤ−ＲＯＭによれば、上記復号化プログラムが、上記符号化されたデータの全部または一部であって、前記連続するディジタルデータを順次読み込こませ、読み込まれたディジタルデータが上記所定の連続パターンの配列であるか否かを判定させ、判定された結果、前記上記所定の連続パターンの配列であると判定されたディジタルデータの後に連続する上記所定数のディジタルデータの全部または一部に対して、上記所定の値を減算／加算させることによって、上記符号化されたデータを復号化させることができる。
【００９５】
その際、上記所定の連続パターンの配列、上記連続パターンの配列であると判定されたディジタルデータの後に連続するディジタルデータの所定数、または上記所定の値の少なくとも一つが、前記所定のコードに基づいて決定されるため、空白領域２００に所定のコードが記録されていなければ、符号化されたデータを復号化することができない。すなわち、コピーしたＣＤ−ＲやＣＤ−ＲＷからは、符号化されたデータを復号化することはできない。
【００９６】
また、本実施の形態にかかるＣＤ−ＲＯＭドライブ装置または情報処理装置は、対象となるデータのすべてをまとめて受け取らずとも、実際に受け取った部分から順に符号化／復号化処理を実行することが可能になるので、バッファとして大容量のものを必要とすることなく、装置構成を安価にすることができる。
【００９７】
なお、以上に説明した本実施の形態では、符号化処理において防護キー値を加算し、復号化処理において防護キー値を減算するとしたが、逆に、符号化処理において防護キー値を減算し、復号化処理において防護キー値を加算するようにしてもよい。
【００９８】
また、本実施の形態で説明したＣＤ−ＲＯＭ作成方法、ＣＤ−ＲＯＭ読出方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーション等の情報処理装置（コンピュータ）で実行することにより実現するようにしてもよい。このプログラムは、ハードディスク、フロッピーディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、伝送媒体として、または上記記録媒体を介して、インターネット等のネットワークを介して配布することができる。
【００９９】
【発明の効果】
以上説明したように、この発明にかかるＣＤ−ＲＯＭ、ＣＤ−ＲＯＭドライブ装置、情報処理装置、ＣＤ−ＲＯＭ作成方法、ＣＤ−ＲＯＭ読出方法およびそれらの方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体によれば、ＣＤ−ＲＯＭに記録されたデータをフルコピーした場合には、オリジナルのＣＤ−ＲＯＭと同様にはプログラムまたはデータを使用することができないようにすることができる。
【図面の簡単な説明】
【図１】コンパクトディスクの規格を示す説明図である。
【図２】ＩＳＯ９６６０を採用したコンパクトディスクのディスク構造を示す説明図である。
【図３】ＣＤ−ＲＯＭのリードイン領域のフォーマットを示す説明図である。
【図４】ＣＤ−ＲＯＭの各セクタのフォーマットを示す説明図である。
【図５】この発明の実施の形態にかかる情報処理装置のハードウエア構成を示すブロック図である。
【図６】この発明の実施の形態にかかるＣＤ−ＲＯＭに記録されたデータの読み出し方法の手順を示すフローチャートである。
【図７】この発明の実施の形態にかかる符号化処理部の構成を示すブロック図である。
【図８】この発明の実施の形態にかかる符号化処理部の符号化処理の内容を示すフローチャートである。
【図９】この発明の実施の形態にかかる符号化処理部（復号化処理部）において、防護キー値の加算（減算）処理を説明するための説明図である。
【図１０】この発明の実施の形態にかかる符号化処理部（復号化処理部）の符号化処理（復号化処理）によって得られるバイトデータ列の一例を示す説明図である。
【図１１】この発明の実施の形態にかかる復号化処理部の構成を示すブロック図である。
【図１２】この発明の実施の形態にかかる復号化処理部の復号化処理の内容を示すフローチャートである。
【符号の説明】
１００  ＣＤ−ＲＯＭ
１０１  リードイン領域
１０２  プログラム記録領域
１０３  リードアウト領域
２００  空白領域
３０１  ＣＲＣ（ＣｙｃＬｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｏｄｅ）
４００  セクタ
５００  バス
５０１  ＣＰＵ
５０２  ＲＯＭ
５０３  ＲＡＭ
５０４  ＨＤＤ
５０５  ＨＤ
５０６  ＦＤＤ
５０７  ＦＤ
５０８  ディスプレイ
５０９  Ｉ／Ｆ
５１０  通信回線
５１１  キーボード
５１２  マウス
５１３  スキャナ
５１４  プリンタ
５１５  ＣＤ−ＲＯＭドライブ
７００  符号化処理部
７０１  第１バッファ
７０２  防護キー付加位置判定部
７０３  防護キー付加処理部
７０４  第２バッファ
７０５，１１０５  付加条件／付加範囲／防護キー記憶部
１１００  復号化処理部
１１０１  第３バッファ
１１０２  防護キー除去位置判定部
１１０３  防護キー除去処理部
１１０４  第４バッファ
【図１】
0003990863.tif 000002
【図２】
0003990863.tif 000003
【図３】
0003990863.tif 000004
【図４】
0003990863.tif 000005
【図５】
0003990863.tif 000006
【図６】
0003990863.tif 000007
【図７】
0003990863.tif 000008
【図８】
0003990863.tif 000009
【図９】
0003990863.tif 000010
【図１０】
0003990863.tif 000011
【図１１】
0003990863.tif 000012
【図１２】
0003990863.tif 000013