(57)【要約】【課題】不正複製で侵害されるプログラム部分を選択的に保護するグラムプログラム保護システムを提供する。【解決手段】特殊ＲＯＭ１５はプログラムとキーワードを格納し、汎用ＲＯＭと同様の通常方法でアクセスされるとプログラムを読み出すが、汎用ＲＯＭが応答しないような特殊方法でアクセスされるとキーワードを読み出す。ＣＰＵ１１は、特殊ＲＯＭ１５内のプログラム記憶領域を自由領域と制限領域に分けて認識している。ＣＰＵ１１は、起動時、特殊ＲＯＭ１５からキーワードを読み出し、それが正しくないと、以後、特殊ＲＯＭ１５内の自由領域からは自由にプログラムコードを読み出して実行できるが、制限領域から読み出したプログラムコードはリターンコードに置換して実行する。【選択図】        図１
2004334385.tif 000002
【特許請求の範囲】
【請求項１】
互いに接続されたＣＰＵとプログラムメモリとを備え、
前記プログラムメモリは、
前記ＣＰＵのためのプログラムコード及びキーワードを格納したデータ格納手段と、
汎用メモリに対して行なえばデータが読み出されるような通常のアクセス方法でアクセスされたときには、前記データ格納手段から前記プログラムコードを読み出して出力し、他方、前記汎用メモリに対して行なえばデータが読み出されないような所定の特別のアクセス方法でアクセスされたときには、前記データ格納手段から前記キーワードを読み出して出力するデータ読み出し手段とを有し、
前記ＣＰＵは、
所定の契機で前記特別の制御方法で前記プログラムメモリにアクセスして、前記プログラムメモリから前記キーワードを読み込むキーワード読み込み手段と、前記プログラムメモリに前記通常のアクセス方法でアクセスして前記プログラムコードを読み込み、前記読み込んだプログラムコードを実行するプログラム実行手段と、
前記プログラムメモリから読み込んだキーワードに応じて、前記プログラム実行手段の動作に制限を加えるか否かを選択的に行なう動作制限手段とを有するプログラム保護システム。
【請求項２】
前記ＣＰＵは、前記プログラムメモリ内の記憶領域を自由領域と制限領域に分けて認識しており、
前記ＣＰＵ内の前記動作制御手段が行なう前記制限は、前記プログラム実行手段が前記プログラムメモリ内の前記制限領域からプログラムコードを読み込むとき、前記プログラム実行手段をして前記制限領域からのプログラムコードに代えて所定の代替プログラムコードを実行させることである、請求項１記載のプログラム保護システム。
【請求項３】
前記代替プログラムコードがリターンコードである、請求項２記載のプログラム保護システム。
【請求項４】
前記プログラムメモリの前記自由領域には基本的な機能を実現するための通常プログラムのコードが格納されており、前記制限領域には高級な機能を実現するための拡張プログラムのコードが格納されている、請求項２記載のプログラム保護システム。
【請求項５】
互いに接続されたＣＰＵとプログラムメモリとを備え、
前記プログラムメモリは、前記ＣＰＵのためのプログラムコード及びキーワードを格納しており、
前記ＣＰＵは、前記プログラムメモリの前記プログラムが格納された記憶領域を自由領域と制限領域に分けて認識しており、
前記ＣＰＵは、
所定の契機で前記プログラムメモリから前記キーワードを読み込むキーワード読み込み手段と、
前記プログラムメモリから前記プログラムコードを読み込み、前記読み込んだプログラムコードを実行するプログラム実行手段と、
前記プログラムメモリから読み込んだキーワードに応じて、前記プログラム実行手段が前記プログラムメモリの前記制限領域から前記プログラムコードを読み込み実行する動作に対して、制限を加えるか否かを選択的に行なう動作制限手段とを有するプログラム保護システム。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、メモリに記録されたコンピュータプログラムの複製を困難にするためのプログラム保護システムに関する。
【０００２】
【従来の技術】
ＲＯＭライタなどを用いて、真正なコンピュータマシンのプログラムＲＯＭ内のプログラムを読み出して別のＲＯＭに書き写して、等価な別のコンピュータマシンを簡単に作り出すという不正行為が多発している。例えば、廉価版と高級版の２機種の真正マシンが販売されており、両機種はハードウェア及び基本的機能を実現するための通常プログラムにて共通するが、高級機種の方では、廉価機種には無い高価値の拡張プログラム（例えば、高級な機能を実現するためのサブルーチンなど）が追加搭載されているような場合、高級機種の方のプログラムＲＯＭをＲＯＭライターで複製して、それを廉価機種のプログラムＲＯＭと入れ替えることにより、廉価機種を高級機種に不正にグレードアップするというような不法行為が行なわれている。
【０００３】
このようなプログラムの複製を防止するために、特許文献１に記載されたプログラム保護システムでは、ＣＰＵ及びプログラムメモリの双方に暗号ＲＯＭが設けられ、ＣＰＵは、ＣＰＵ内の暗号ＲＯＭとプログラムメモリ内の暗号ＲＯＭから暗号データを読み出して比較し、もし、その比較結果が不一致であったならば、プログラムを起動しない（つまり、システムを停止する）。そして、暗号データの読み出しアドレスをＣＰＵからプログラムメモリへ指示するために、及び、読み出された暗号データをプログラムメモリからＣＰＵへ返送するために、シリアル転送の方法が使用される。
【特許文献１】特開平５−２４７８号公報
【発明が解決しようとする課題】
上述した従来技術によれば、プログラムメモリのＩＣチップは、暗号データ読み出しアドレスのためのシリアル転送端子と、暗号データのためのシリアル転送端子とを備える必要がある。よって、このメモリチップの外部インタフェースの物理的構成（例えば、端子ピン数など）は、汎用のメモリチップを使った回路のそれとは異なることになる。例えば、上述した廉価機種と高級機種の場合において、高級機種の拡張プログラムを保護するために、高級機種のプログラムＲＯＭに上述した従来技術を適用したとしたならば、上述した外部インタフェースの物理的構成の違いにより、高級機種には廉価機種と同じ回路基板が使えないということになる。これは、コストアップにつながる。
【０００４】
また、従来技術によれば、暗号不一致の場合にはプログラムが全く起動されない。例えば、上述した廉価機種と高級機種の場合において、高級機種のプログラムＲＯＭに上述した従来技術を適用したとしたならば、高級機種のプログラムＲＯＭから複製されたＲＯＭを廉価機種のマシンに取り付けた場合、その廉価機種マシンでは、拡張プログラムだけでなく元来有効であった通常プログラムまで含めてプログラム全部が全く実行できなくなる。しかし、ユーザが不正複製を図ったとはいえ、複製による侵害が実質的に及んでいない元来有効なプログラムまでも全く動作不能にしてしまうことは、メーカの対応として必ずしも適当であるとはいえない。
【０００５】
従って、本発明の目的は、上述した課題に関して改善されたプログラム保護システムを提供することにある。
【０００６】
【課題を解決するための手段】
本発明の一つの観点に従うプログラム保護システムは、互いに接続されたＣＰＵとプログラムメモリとを備え、前記プログラムメモリは、前記ＣＰＵのためのプログラムコード及びキーワードを格納したデータ格納手段と、汎用メモリに対して行なえばデータが読み出されるような通常のアクセス方法でアクセスされたときには、前記データ格納手段から前記プログラムコードを読み出して出力し、他方、前記汎用メモリに対して行なえばデータが読み出されないような所定の特別のアクセス方法でアクセスされたときには、前記データ格納手段から前記キーワードを読み出して出力するデータ読み出し手段とを有する。そして、前記ＣＰＵは、所定の契機で前記特別の制御方法で前記プログラムメモリにアクセスして、前記プログラムメモリから前記キーワードを読み込むキーワード読み込み手段と、前記プログラムメモリに前記通常のアクセス方法でアクセスして前記プログラムコードを読み込み、前記読み込んだプログラムコードを実行するプログラム実行手段と、前記プログラムメモリから読み込んだキーワードに応じて、前記プログラム実行手段の動作に制限を加えるか否かを選択的に行なう動作制限手段とを有する。
【０００７】
このプログラム保護システムの好適な一実施形態では、前記ＣＰＵは、前記プログラムメモリ内の記憶領域を自由領域と制限領域に分けて認識している。そして、前記ＣＰＵ内の前記動作制御手段が行なう前記制限とは、例えば、前記プログラム実行手段が前記プログラムメモリ内の前記制限領域からプログラムコードを読み込むとき、前記プログラム実行手段をして前記制限領域からのプログラムコードに代えて所定の代替プログラムコードを実行させることである。
【０００８】
また、前記代替プログラムコードとして、例えばリターンコードを採用することができる。
【０００９】
また、前記プログラムメモリの前記自由領域には、例えば、基本的な機能を実現するための通常プログラムのコードを格納し、一方、前記制限領域には、例えば、高級な機能を実現するための拡張プログラムのコードを格納することができる。
【００１０】
本発明の別の観点に従うプログラム保護システムは、互いに接続されたＣＰＵとプログラムメモリとを備え、前記プログラムメモリは、前記ＣＰＵのためのプログラムコード及びキーワードを格納している。そして、前記ＣＰＵは、前記プログラムメモリの前記プログラムが格納された記憶領域を自由領域と制限領域に分けて認識している。更に、前記ＣＰＵは、
所定の契機で前記プログラムメモリから前記キーワードを読み込むキーワード読み込み手段と、前記プログラムメモリから前記プログラムコードを読み込み、前記読み込んだプログラムコードを実行するプログラム実行手段と、前記プログラムメモリから読み込んだキーワードに応じて、前記プログラム実行手段が前記プログラムメモリの前記制限領域から前記プログラムコードを読み込み実行する動作に対して、制限を加えるか否かを選択的に行なう動作制限手段とを有する。
【００１１】
【発明の実施の形態】
図１は、本発明に従うプログラム保護システムの一実施形態の全体構成を示す。
【００１２】
このシステムは、ＣＰＵ１１、ＣＰＵ１１に対してリセット信号ＲＳＴを与えるためのリセット検出回路１３、ＣＰＵ１１によって実行されるべきプログラムやＣＰＵ１１のプログラム実行機能を制御するためのキーワードなどのデータを格納した特殊ＲＯＭ１５、及びＣＰＵ１１によってワーク領域その他の諸用途に利用されるＲＡＭ１７などから構成される。ＣＰＵ１１及び特殊ＲＯＭ１５は、後に詳述するように、特殊ＲＯＭ１５内のプログラムを本発明の原理に従って保護するための特別の機能が内蔵されている。
【００１３】
ＣＰＵ１１は、アドレス信号Ａ０−Ａ２１、チップイネーブル信号ＣＥ、出力イネーブル信号ＯＥ、バイト選択信号ＢＹＴＥなどの制御信号を特殊ＲＯＭ１５に与えて、その特殊ＲＯＭ１５に記録されているデータＤ０−Ｄ１５を特殊ＲＯＭ１５から読み込んで実行する。
【００１４】
ここで、特殊ＲＯＭ１５のＩＣチップがもつアドレス信号Ａ０−Ａ２１、チップイネーブル信号ＣＥ、出力イネーブル信号ＯＥ、バイト選択信号ＢＹＴＥ及びデータＤ０−Ｄ１５などの諸信号のための端子ピンの種類と本数とその他の物理的仕様は、通常の汎用のＲＯＭのそれと変わりない。そして、通常の汎用ＲＯＭからデータを読み出す場合と同じ方法で特殊ＲＯＭ１５に上記制御信号を与えれば、特殊ＲＯＭ１５はそこに格納されているプログラムコードを読み出す。この機能において、特殊ＲＯＭ１５は、通常の汎用ＲＯＭと変わりない。しかし、特殊ＲＯＭ１５は、さらに、通常の汎用ＲＯＭであれば何のデータも出力しない（例えば、データ端子が全てハイインピーダンス状態にある）ような所定の特殊な制御信号の与え方をすると、予め記憶しているキーワードを読み出すという機能をもつ。これが、特殊ＲＯＭ１５の「特殊」たる所以である。
【００１５】
上述したように、特殊ＲＯＭ１５の外部インタフェースの物理的構成（つまり、端子ピンの種類と本数とその他の物理的仕様など）は汎用ＲＯＭと同じであるから、図１に示したシステムであっても、図１のシステムの特殊ＲＯＭ１５のみを汎用ＲＯＭに置き換えたシステムであっても、同じ仕様の回路基板を用いて実装することができる。そして、そのような特殊ＲＯＭ１５のみを汎用ＲＯＭに置き換えたシステムでも、ＣＰＵ１１は汎用ＲＯＭからプログラムを読み込んで実行することができる。ただし、以下に述べるように、ＣＰＵ１１のもつ特別なプログラム実行制御機能によって、汎用ＲＯＭを用いた場合の実行可能なプログラムの範囲は制限されることになる。
【００１６】
ＣＰＵ１１は、リセット検出回路１３からリセット信号ＲＳＴを受けてそのリセット信号ＲＳＴが解除された時（つまり、ＣＰＵ１１の起動時）、プログラムＲＯＭ（図１のシステムでは特殊ＲＯＭ１１であるが、不正複製品であれば汎用ＲＯＭであろう）から上述したキーワードを読み込み、そのキーワードが正しか否かチェックする。その結果、キーワードが正しければ（プログラムＲＯＭとして特殊ＲＯＭ１５を用いた場合は、そうなる）、以後、ＣＰＵ１１は、そのプログラムＲＯＭ（特殊ＲＯＭ１５）から格別の制限なしにプログラムコードを読み出して実行する。しかし、そのキーワードが正しくなければ（プログラムＲＯＭとして汎用ＲＯＭを用いた場合は、そうなる）、以後、ＣＰＵ１１は、プログラムＲＯＭ（汎用ＲＯＭ）内の後述する「自由領域」と呼ばれるアドレス範囲（記憶領域）からは自由にプログラムコードを読み込んで実行するが、後述する「制限領域」と呼ばれるアドレス範囲（記憶領域）からプログラムコードを読み込むときは、そのプログラムコードをリターンコードに置き換えて実行する。要するに、プログラムＲＯＭとして特殊ＲＯＭ１５が用いられていない場合（典型的には不正複製品の場合）には、ＣＰＵ１１は、プログラムＲＯＭの自由領域に格納されたプログラムのみが実行でき、制限領域に格納されたプログラムを実行することができない。
【００１７】
以上のような特殊ＲＯＭ１５とＣＰＵ１１がそれぞれ持つ特別な機能が組み合わされることで、例えば、次のようなことが可能になる。ここで、従来技術の説明で引き合いに出した廉価機種と高級機種に、上述した原理を適用した場合を想定する。その場合、例えば、同じ回路基板を用いて、高級機種では図１に示したシステムを実装し、一方、廉価機種では、特殊ＲＯＭ１１のみを、同一プログラム（又は、両機種に共通な通常プログラムのみ）を格納した汎用ＲＯＭ（又は、両機種に共通な通常プログラムのみを格納した特殊ＲＯＭ又は汎用ＲＯＭ）に置き換えたシステムを実装することができる。すると、高級機種も廉価機種も、プログラムＲＯＭ以外は同じ部品を使用して製造することができるから、製造コストを低くすることができる。また、高級機種の特殊ＲＯＭ１５では、廉価機種と共通の通常プログラムは自由領域に、高価値の拡張プログラム（例えば、高級な機能を実現するためのサブルーチン）は制限領域に記録しておくことができる。すると、もし、第三者がＲＯＭライタなどを用いて、高級機種の特殊ＲＯＭ１５内のプログラムを別の汎用ＲＯＭに複製して、その汎用ＲＯＭを廉価機種のマシンのプログラムＲＯＭと入れ替えたとしても、その廉価機種のマシンは、制限領域に格納されている拡張プログラムは実行できないから、高級機種にグレードアップされない。しかも、その廉価機種のマシンは、元来有効であった通常プログラムだけは実行できるから、依然として通常に使用可能である。
【００１８】
以下、特殊ＲＯＭ１５とＣＰＵ１１の特別の機能について詳述する。
【００１９】
図２は、特殊ＲＯＭ１５の内部構成を示す。
【００２０】
図２に示すように、特殊ＲＯＭ１５は、読み出し制御モジュール２１、アドレスセレクトモジュール２３、メモリモジュール２５及びデータ出力バッファ２７を有する。ここで、特殊ＲＯＭ１５が通常の汎用ＲＯＭと相違する点は、主として、読み出し制御モジュール２１及びアドレスセレクトモジュール２３にある。
【００２１】
読み出し制御モジュール２１は、チップイネーブル信号ＣＥ、出力イネーブル信号ＯＥ及びバイト選択信号ＢＹＴＥなどの制御信号をＣＰＵ１１から入力し、そして、入力した制御信号に応じて、アドレス選択信号及びキーワード読み出しアドレス信号ＣＡ０−ＣＡ２１をアドレスセレクトモジュール２３に与え、内部出力イネーブル信号と内部バイト／ワード選択信号をデータ出力バッファ２７に与える。
【００２２】
アドレスセレクトモジュール２３は、読み出し制御モジュール２１からのアドレス選択信号に応じて、読み出し制御モジュール２１からのキーワード読み出しアドレス信号ＣＡ０−ＣＡ２１と、ＣＰＵ１１からのデータ読み出しアドレス信号Ａ０−Ａ２１の内の一方のアドレス信号を選択して入力し、そして、入力したアドレス信号を内部アドレス信号に変換してメモリモジュール２５に与える。
【００２３】
メモリモジュール２５は、内部アドレス信号によって指定可能なアドレス範囲にプログラムコード及びキーワードなどのデータを格納しており、アドレスセレクトモジュール２３から与えられた内部アドレス信号によって指定されたアドレスに記憶しているデータを読み出して、データ出力バッファ２７に出力する。
【００２４】
データ出力バッファ２７は、読み出し制御モジュール２１からの内部出力イネーブル信号に応じて、メモリモジュール２５からのデータをＣＰＵ１１へ出力するか否かを選択し、かつ、読み出し制御モジュール２１からの内部バイト／ワード選択信号に応じて、ＣＰＵ１１へ出力するデータの単位をバイト（８ビット）にするかワード（１６ビット）にするかを選択する。
【００２５】
このような構成をもつ特殊ＲＯＭ１５の動作は以下のとおりである。
【００２６】
ＣＰＵ１１から与えられるチップイネーブル信号ＣＥ、出力イネーブル信号ＯＥ及びバイト選択信号ＢＹＴＥの状態が、もし同じ信号を汎用ＲＯＭに与えたならば汎用ＲＯＭからデータが読み出されるような状態である場合には、読み出し制御モジュール２１は、アドレス選択信号によってアドレスセレクトモジュール２３を、ＣＰＵ１１からの読み出しアドレス信号Ａ０−Ａ２１を選択して入力するように制御し、且つ、内部出力イネーブル信号によってデータ出力バッファ２７を、メモリモジュール２５からのデータをＣＰＵ１１へ出力するように制御する。従って、この場合には、この特殊ＲＯＭ１５は、汎用ＲＯＭと同様に、ＣＰＵ１１からの読み出しアドレス信号Ａ０−Ａ２１によって指定されたメモリモジュール２５内のアドレスに記憶されているデータを読み出してＣＰＵ１１に返すことになる。このときに読み出されるデータは、ＣＰＵ１１によって実行されるべきプログラムコードである。このようにプログラムコードを読み出すことができる特殊ＲＯＭ１５の状態を、以下、「通常モード」という。
【００２７】
一方、ＣＰＵ１１から与えられるチップイネーブル信号ＣＥ、出力イネーブル信号ＯＥ及びバイト選択信号ＢＹＴＥの状態が、もし同じ信号を汎用ＲＯＭに与えたならば汎用ＲＯＭは何も応答しない（例えば、出力データ端子が全てハイインピーダンス状態にある）ような所定の特殊の状態である場合には、読み出し制御モジュール２１は、アドレス選択信号によってアドレスセレクトモジュール２３を、読み出し制御モジュール２１からのキーワード読み出しアドレス信号ＣＡ０−ＣＡ２１を選択して入力するように制御し、且つ、内部出力イネーブル信号によってデータ出力バッファ２７を、メモリモジュール２５からのデータをＣＰＵ１１へ出力するように制御する。従って、この場合には、この特殊ＲＯＭ１５は、汎用ＲＯＭとは違い、キーワード読み出しアドレス信号ＣＡ０−ＣＡ２１によって指定されたアドレスに記憶されているデータを読み出してＣＰＵ１１に返すことになる。このときに読み出されるデータは、ＣＰＵ１１のプログラム実行機能を制御するためのキーワードである。このようにキーワードが読み出される特殊ＲＯＭ１５のモードを、以下、「特殊モード」という。
【００２８】
特殊ＲＯＭ１５を特殊モードで動作させるためのチップイネーブル信号ＣＥ、出力イネーブル信号ＯＥ及びバイト選択信号ＢＹＴＥの状態は、上述したように、もし同じ信号を汎用ＲＯＭに与えたならば汎用ＲＯＭは何も応答しない（例えば、出力データ端子が全てハイインピーダンス状態にある）ような所定の特殊の状態である。このような特殊状態の一つとして、例えば、チップイネーブル信号ＣＥが無効レベルで、且つ、出力イネーブル信号ＯＥとバイト選択信号ＢＹＴＥが所定のレベル又は所定の変化をしたような状態を採用することができる。
【００２９】
なお、特殊モードにおいてキーワード読み出しアドレス信号ＣＡ０−ＣＡ２１によって指定されるメモリモジュール２５内のアドレス（つまり、キーワードが格納されているアドレス）は、上述した通常モードで読み出されるプログラムの格納アドレス範囲とは異なるキーワード専用の特別のアドレスであってもよいし、或いは、プログラムの格納アドレス範囲中から選ばれた所定の一つ又は複数のアドレスであってもよい。前者の場合、キーワードは、キーワード専用に予め用意された特別のデータであるが、後者の場合には、多数のプログラムコードの中から選ばれた特定の一つ又は複数のプログラムコードが、キーワードとして流用されることになる。
【００３０】
図３は、ＣＰＵ１１の機能と動作を示す。図４は、ＣＰＵ１１から特殊ＲＯＭ１５を見た場合の特殊ＲＯＭ１５内のプログラム格納アドレス範囲（プログラム格納領域）の論理的な構成を示す。
【００３１】
図３に示すように、ＣＰＵ１１は、リセット信号ＲＳＴが解除された時（つまり、ＣＰＵ１１の起動時）（ステップＳ１）、まず、プログラムＲＯＭ（図１のシステムでは特殊ＲＯＭ１５であるが、不正複製品などでは汎用ＲＯＭであろう）に対して、上述した「特殊モード」で特殊ＲＯＭ１５を動作させるような状態の制御信号ＣＥ、ＯＥ、ＢＹＴＥを与えて、そのプログラムＲＯＭからキーワードを読み込む（ステップＳ２）。もし、プログラムＲＯＭが特殊ＲＯＭ１５であれば、所定の正しいキーワードが読み込まれる。しかし、もし、プログラムＲＯＭが汎用ＲＯＭであれば、正しいキーワードは読み込まれない。
【００３２】
その後、ＣＰＵ１１は、プログラムＲＯＭから読み込んだキーワードが正しいか否かをチェックする（ステップＳ３）。このチェックの結果、キーワードが正しければ（プログラムＲＯＭが特殊ＲＯＭ１５であれば、そうなる）、ＣＰＵ１１は、プログラムＲＯＭ（特殊ＲＯＭ１５）を「通常モード」で動作させてそこからプログラムを読み込み実行するという、本来の動作を開始する（ステップＳ４）。すなわち、以後、ＣＰＵ１１は、プログラムＲＯＭ（特殊ＲＯＭ１５）から然るべきプログラムコードを読み込み、これを実行し、その実行結果に応じて、次の然るべきプログラムを読み込み、また実行するという動作を繰り返す（ステップＳ５〜Ｓ６）。これにより、ＣＰＵ１１は、プログラムＲＯＭ（特殊ＲＯＭ１５）に格納されたプログラムを全て正常に実行することができる。
【００３３】
一方、上述したステップＳ３のチェックの結果、キーワードが正しくなければ（プログラムＲＯＭが汎用ＲＯＭであれば、そうなる）、ＣＰＵ１１は、プログラムＲＯＭ（汎用ＲＯＭ１５）からプログラムを読み込み実行するという、本来の動作を開始する（ステップＳ７）。ただし、この場合には、ＣＰＵ１１は、プログラムＲＯＭに対して所望のプログラムコードの読み出しアドレスＡ０−Ａ２１を与える都度、そのアドレスＡ０−Ａ２１が、ＣＰＵ１１がプログラムＲＯＭのプログラム格納アドレス範囲内に予め設定している制限領域に含まれているか否かをチェックし（ステップＳ８）、その結果プログラムの読み込み方又は実行の仕方を変える。
【００３４】
すなわち、ＣＰＵ１１は、図４に示すように、プログラムＲＯＭ内のプログラム格納アドレス範囲（つまり、読み出しアドレスＡ０−Ａ２１によって指定可能なアドレス範囲）３０を、自由領域３１と制限領域３３に区別して認識している。例えば、アドレスが所定値未満であれば自由領域３１であり、アドレスが所定値以上であれば制限領域３３というようにである。そして、ＣＰＵ１１は、上述したステップＳ８で、今プログラムＲＯＭに与えた読み出しアドレスＡ０−Ａ２１が自由範囲３１内か制限領域３３内であるか（例えば、上記所定値未満か以上か）を判断する。
【００３５】
このステップＳ８の判断の結果、読み出しアドレスＡ０−Ａ２１が自由領域３１内である場合には、ＣＰＵ１１は、そのアドレスＡ０−Ａ２１から読み込んだプログラムコードを正常に実行する（ステップＳ１０）。そして、その実行結果に応じて、ＣＰＵ１１は、次の然るべきプログラムコードを読み込み（ステップＳ１１）、再びステップＳ８のチェックを行なう。
【００３６】
一方、ステップＳ８の判断の結果、読み出しアドレスＡ０−Ａ２１が制限領域３３内である場合には、ＣＰＵ１１は、そのアドレスＡ０−Ａ２１から読み込んだプログラムコードを、予めＣＰＵ１１内に設定されているリターンコードに置き換えて、そのリターンコードを実行する（ステップＳ９）。要するに、制限範囲３３内のプログラムコードを読み込んだ場合には、ＣＰＵ１１は、そのプログラムコードは実行せずに破棄して、プログラム読み出し制御を前の状態にリターンしてしまうのである。そして、このリターンを行なった後に、ＣＰＵ１１は、次の然るべきプログラムコードを読み込み（ステップＳ１１）、再びステップＳ８のチェックを行なう。
【００３７】
このように、起動時に読み込んだキーワードが正しくなかった場合、ＣＰＵ１１は、プログラムＲＯＭ内の制限領域３３内のプログラムコードを読み出す都度、そのプログラムコードに代えて、リターンコードを実行することになる。従って、例えば、図４に示すように、ＣＰＵ１１が、自由領域３１内の或るプログラムコード４１を読み込み実行した場合、その実行結果により（例えば、サブルーチンの呼び出しなどにより）、次に読み込むべきプログラムコードが制限領域３３内のプログラムコード４５（例えば、そのサブルーチンのプログラムコードなど）になったならば、そのプログラムコード４５に代えてリターンコードを実行することになる。よって、制限領域３３内のプログラムコード４５の実行はスキップつまりキャンセルされ、続いて、自由領域３１内の次のプログラムコード４３が読み込まれ実行されることになる。結局、ＣＰＵ１１は、自由領域３１内のプログラムのみを実行することになり、制限領域３３内のプログラムを実行することはできない。
【００３８】
従って、例えば、上述した廉価機種と高級機種の場合であれば、高級機種の拡張プログラム（例えば、高級な機能を実現するためのサブルーチン）を特殊ＲＯＭ１５の制限領域３３に格納しておき、廉価機種と共通の通常プログラムだけを自由領域３１に格納しておけば、高級機種のプログラムが汎用ＲＯＭに不正に複製されて廉価機種のマシンに組み込まれても、廉価機種のマシンのＣＰＵ１１がもつ上記機能によって、共通の通常プログラムだけが実行され、拡張プログラムは実行されないのである。
【００３９】
なお、図３に示したＣＰＵ１１の機能は、ＣＰＵ１１に内蔵のハードウェアによって実現することも可能であるし、ＣＰＵ１１に内蔵のソフトウェアによって実現することも可能である。
【００４０】
以上の説明から分かるように、上述した本発明の一実施形態によれば、汎用メモリを用いたシステムと同仕様の回路基板を使ってプログラム保護システムが実現でき、また、プログラムが不正に複製された場合、そのプログラム全体の中の複製による侵害が及ぶ一部のプログラムだけを選択的に実行不能とすることができる。
【００４１】
以上、本発明の一実施形態を説明したが、これは本発明の説明のための例示であり、この実施形態のみに本発明の範囲を限定する趣旨ではない。従って、本発明は、その要旨を逸脱することなく、他の様々な形態で実施することが可能である。
【図面の簡単な説明】
【図１】本発明に従うプログラム保護システムの一実施形態の全体構成を示すブロック図。
【図２】特殊ＲＯＭ１５の内部構成を示すブロック図。
【図３】ＣＰＵ１１の機能と動作を示すフローチャート。
【図４】ＣＰＵ１１から特殊ＲＯＭ１５を見た場合の特殊ＲＯＭ１５内のプログラム格納アドレス範囲の論理的な構成を示すブロック図。
【符号の説明】
１１  ＣＰＵ
１３  リセット検出回路
１５  特殊ＲＯＭ
１７  ＲＡＭ
２１  読み出し制御モジュール
２３  アドレスセレクトモジュール
２５  メモリモジュール
２７  データ出力バッファ
３０  プログラム格納アドレス範囲
３１  自由領域
３３  制限領域
４１、４３  自由領域内のプログラムコード
４５  制限領域内のプログラムコード
【図１】
2004334385.tif 000003
【図２】
2004334385.tif 000004
【図３】
2004334385.tif 000005
【図４】
2004334385.tif 000006