(57)【要約】【課題】  プログラムから禁止処理の部分が削除されてしまった場合でも、機器の処理動作を禁止させることができるようすることにより、プログラムがコピーされることを防止する。【解決手段】  ＡＳＩＣ２３のトラップ制御割込み要求部５１は所定周期で割込み要求を出力する。ＣＰＵ１９はデータテーブル６１から割込要求回数に応じた適切な値をトラップ解除レジスタ５２に書き込む。トラップ解除レジスタ５２に割込要求回数に応じた適切な値が書き込まれない場合と、トラップ解除レジスタ５２に割込要求から設定時間以内に値が書き込まれない場合は、ＡＳＩＣ２３の印刷処理が禁止回路５５を介して強制的に停止される。【選択図】      図１
2005056253.tif 000002
【特許請求の範囲】
【請求項１】
メモリから読み出したプログラムに基づき動作する制御回路が、論理制御回路から受け付けた割込要求に対して、該論理制御回路で管理される割込要求回数に応じた適切な値を該論理制御回路に返さない場合は、前記論理制御回路は処理動作を停止することを特徴とするプログラムコピー防止方法。
【請求項２】
メモリから読み出したプログラムに基づき動作する制御回路と、前記制御回路からの指示に基づき所定の処理を実行する論理制御回路とを備えた回路システムにおけるプログラムコピー防止方法であって、
複数の値を格納するデータテーブル中の値を、前記論理制御回路から前記制御回路への割込要求回数に応じて予め定めた基準値から同期させて変化させるよう前記論理制御回路と前記プログラムとの双方で管理し、
前記論理制御回路が前記制御回路に割込要求を出力する段階と、
前記制御回路が、前記割込要求に対して割込要求回数に応じた前記データテーブル中の値を前記論理制御回路に返す段階と、
前記論理制御回路は前記制御回路から受け取った値が該論理制御回路で管理する割込要求回数に応じた適切な値でない場合は前記所定の処理の実行を禁止することを特徴とするプログラムコピー防止方法。
【請求項３】
前記割込要求から設定時間以内に前記制御回路から前記割込要求回数に応じた適切な値が返されない場合は、前記論理制御回路の処理動作を停止させることを特徴とする請求項１又は２に記載のプログラムコピー防止方法。
【請求項４】
メモリから読み出したプログラムに基づき動作する制御回路と、前記制御回路からの指示に基づき所定の処理を実行する論理制御回路とを備えた回路システムにおけるプログラムコピー防止装置であって、
複数の値を格納するデータテーブル中の値を、前記論理制御回路から前記制御回路への割込要求回数に応じて予め定めた基準値から同期させて変化させるよう前記論理制御回路と前記プログラムとの双方で管理し、
前記論理制御回路が前記制御回路に割込要求を出力し、
前記制御回路が、前記割込要求に対して割込要求回数に応じた前記データテーブル中の値を前記論理制御回路に返し、
前記論理制御回路は前記制御回路から受け取った値が該論理制御回路で管理する割込要求回数に応じた適切な値でない場合は前記所定の処理の実行を禁止することを特徴とするプログラムコピー防止装置。
【請求項５】
プログラムを記憶するメモリと、
前記メモリから読み出した前記プログラムを実行する制御回路と、
前記制御回路に対して割込要求を出力するとともに所定の処理を実行するハードウェアからなる論理制御回路と、
前記制御回路は、前記論理制御回路からの割込要求に対して割込処理を行って、その割込要求回数に応じた適切な値を前記論理制御回路に返すようになっており、
前記制御回路が前記割込要求回数に応じた適切な値を前記論理制御回路に返さない場合は、前記論理制御回路の処理動作を禁止する禁止手段と
を備えたことを特徴とするプログラムコピー防止装置。
【請求項６】
請求項４又は５に記載のプログラムコピー防止装置において、
前記禁止手段は、前記論理制御回路からの前記割込要求から設定時間以内に前記制御回路から値が返されないときにも、前記論理制御回路の処理動作を強制的に停止させることを特徴とするプログラムコピー防止装置。
【請求項７】
請求項４〜６のいずれか一項に記載のプログラムコピー防止装置において、
前記メモリは、前記プログラムを書き込み可能な不揮発性メモリであって、
前記不揮発性メモリへの前記プログラムのロード時に、割込要求回数に応じた値がロードの度に可変となるように複数の値からなるデータ群を前記論理制御回路と前記プログラムとの双方に設定する設定手段を備え、
前記制御回路は、前記論理制御回路からの割込要求を受け付けると、前記データ群から前記割込要求回数に応じた値を選択して前記論理制御回路に返すことを特徴とするプログラムコピー防止装置。
【請求項８】
請求項７に記載のプログラムコピー防止装置において、
前記設定手段は、前記不揮発性メモリへの前記プログラムのロード時に、前記不揮発性メモリのアドレスと対応つけて前記データ群を設定するとともに、該データ群から初回の割込要求に応じた適切な値に対応する先頭アドレスをロードの度に可変に設定するものであり、
前記制御回路は、前記データ群の中から前記先頭アドレスと割込要求回数とから決まるアドレスに対応する値を選択して前記論理制御回路に返すことを特徴とするプログラムコピー防止装置。
【請求項９】
請求項５〜８のいずれか一項に記載のプログラムコピー防止装置において前記設定手段を構成するコンピュータに、ホスト装置から端末装置にファームウェアプログラムをダウンロードして該端末装置内の不揮発性メモリに書き込むダウンロード処理を実行させるＩＰＬプログラムであって、
前記ダウンロードのときに前記データ群を前記論理制御回路及び前記不揮発性メモリに書き込むステップと、
前記データ群から値を読み出す先頭アドレスをダウンロードの度に可変させるよう設定するステップとを備えたことを特徴とするプログラム。
【請求項１０】
請求項５〜８のいずれか一項に記載のプログラムコピー防止装置において前記制御回路を構成するコンピュータが前記論理制御回路からの割込要求に対して値を返す割込処理を実行するプログラムであって、
前記論理制御回路からの割込要求に対して、コンピュータが前記データ群の中から前記先頭アドレスと割込要求回数とから決まるアドレスに対応する値を選択して前記論理制御回路に返すステップと、
割込要求がある度にアドレスを変化させるステップと
を備えたことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＣＰＵに実行させるためにＲＯＭ等のメモリに記憶されたプログラムがコピーされて他の機器で使用されることを防止するプログラムコピー防止方法、プログラムコピー防止装置及びプログラムに関するものである。
【背景技術】
【０００２】
従来、プリンタなどの機器においては、印刷処理動作などの所定処理動作を実行できる論理回路が焼き付けられたＡＳＩＣと、ＲＯＭなどのメモリに記憶されたプログラムを読み込んで所定処理動作を実行するＣＰＵとが設けられている。ＲＯＭなどのメモリからプログラムデータを読み取られてプリンタがコピーされて使用されることがないようにコピー防止の対策をする必要がある。
【０００３】
この種の盗難防止を目的としたプロテクト機能を備えたプログラムとしては、特許文献１に開示されたものが知られている。これは、同一機種の他のハードウェアではプログラムを実行できないように禁止することにより、プログラムプロダクトのコピーを防止する。特許文献１に記載されているものは、プログラム媒体をある指定のハードウェアにセットした時、そのプログラム媒体の固有情報として、ハードウェア内の電池付きバックアップＲＡＭ及びプログラム媒体に書き込むことにより、上記指定以外のハードウェアによるプログラム実行を禁止する方式が採用されている。
【特許文献１】特開昭６３−１３２３３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１の技術では、プログラムの中のバックアップＲＡＭの固有情報とプログラム媒体の固有情報を比較してプログラム実行を禁止している処理を、プログラム内容を調べて削除されてしまった場合、プログラム実行禁止できない点については考慮されていない。
【０００５】
従って、プログラムから禁止処理の部分が削除されてしまった場合、プログラムは処理動作を実行禁止とできないのでコピーされたプログラムでも機器が動作してしまうという問題があった。
【０００６】
本発明の目的は、プログラムから禁止処理の部分が削除されてしまった場合でも、機器の処理動作を禁止させることができるようすることにより、プログラムがコピーされることを防止できるプログラムコピー防止方法、プログラムコピー防止装置及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明では、プログラムコピー防止方法において、メモリから読み出したプログラムに基づき動作する制御回路が、論理制御回路から受け付けた割込要求に対して、該論理制御回路で管理される割込要求回数に応じた適切な値を該論理制御回路に返さない場合は、前記論理制御回路は処理動作を停止することを要旨とする。
【０００８】
これによれば、制御回路が、論理制御回路から受け付けた割込要求に対して、論理制御回路で管理される割込要求回数に応じた適切な値を該論理制御回路に返さない場合は、論理制御回路が処理動作を停止する。例えばメモリが交換されてプログラムが変更された場合、制御回路は割込要求回数に応じた適切な値を論理制御回路へ返すことができなくなるので、論理制御回路の処理動作が停止する。例えばプログラムが交換されても論理制御回路が処理動作を行わないので、プログラム中のコピー防止機能に手が加えられても、論理制御回路が意味のある処理動作を行わない。
【０００９】
本発明は、メモリから読み出したプログラムに基づき動作する制御回路と、前記制御回路からの指示に基づき所定の処理を実行する論理制御回路とを備えた回路システムにおけるプログラムコピー防止方法であって、複数の値を格納するデータテーブル中の値を、前記論理制御回路から前記制御回路への割込要求回数に応じて予め定めた基準値から同期させて変化させるよう前記論理制御回路と前記プログラムとの双方で管理し、前記論理制御回路が前記制御回路に割込要求を出力する段階と、前記制御回路が、前記割込要求に対して割込要求回数に応じた前記データテーブル中の値を前記論理制御回路に返す段階と、前記論理制御回路は前記制御回路から受け取った値が該論理制御回路で管理する割込要求回数に応じた適切な値でない場合は前記所定の処理の実行を禁止することを要旨とする。
【００１０】
これによれば、制御回路により実行されるプログラムと、論理制御回路とが正しい組合せであれば、論理制御回路からの割込要求に対して、制御回路から返る値が適正なものとなる。例えばプログラムと論理制御回路との組合せが変えられた場合、双方のデータテーブルで管理される割込要求回数に応じた値が食い違うことになるので、論理制御回路が所定の処理を実行しない。このため、プログラムを盗んでコピーしたものを論理制御回路と組み合わせて使用しようとしたり、プログラムを他のプログラムとの組合せで使用されていた論理制御回路との組み合わせで使用したり、さらに論理制御回路を他の論理制御回路との組合せで使用されていたプログラムとの組合せで使用したりしても、双方の組合せが正しくないので論理制御回路が処理を実行しなくなる。よって、仮にプログラムがコピーされてもいざ論理制御回路と組み合わせて使用する段になって動作しないので、プログラムがコピーされたとしても何の意味も持たなくなる。
【００１１】
また、本発明では、前記割込要求から設定時間以内に前記制御回路から前記割込要求回数に応じた適切な値が返されない場合は、前記論理制御回路の処理動作を停止させることを要旨とする。
【００１２】
これによれば、割込要求から設定時間以内に制御回路から割込要求回数に応じた適切な値が返されない場合は、論理制御回路の処理動作を停止させる。従って、割込要求があっても値を一切返さないようにプログラムが改ざんされても、論理制御回路の処理動作は停止されるので、プログラムを交換できても何の意味も持たなくなる。
【００１３】
本発明は、メモリから読み出したプログラムに基づき動作する制御回路と、前記制御回路からの指示に基づき所定の処理を実行する論理制御回路とを備えた回路システムにおけるプログラムコピー防止装置であって、複数の値を格納するデータテーブル中の値を、前記論理制御回路から前記制御回路への割込要求回数に応じて予め定めた基準値から同期させて変化させるよう前記論理制御回路と前記プログラムとの双方で管理し、前記論理制御回路が前記制御回路に割込要求を出力し、前記制御回路が、前記割込要求に対して割込要求回数に応じた前記データテーブル中の値を前記論理制御回路に返し、前記論理制御回路は前記制御回路から受け取った値が該論理制御回路で管理する割込要求回数に応じた適切な値でない場合は前記所定の処理の実行を禁止することを要旨とする。
【００１４】
これによれば、メモリが交換されるなどして、プログラムと論理制御回路との組み合わせが変更された場合、制御回路は論理制御回路からの割込要求に対して適切な値を返すことができないので、論理制御回路の所定の処理が禁止される。
【００１５】
また、本発明では、プログラムを記憶するメモリと、前記メモリから読み出した前記プログラムを実行する制御回路と、前記制御回路に対して割込要求を出力するとともに所定の処理を実行するハードウェアからなる論理制御回路と、前記制御回路は、前記論理制御回路からの割込要求に対して割込処理を行って、その割込要求回数に応じた適切な値を前記論理制御回路に返すようになっており、前記制御回路が前記割込要求回数に応じた適切な値を前記論理制御回路に返さない場合は、前記論理制御回路の処理動作を禁止する禁止手段とを備えたことを要旨とする。
【００１６】
これによれば、メモリが交換されるなどして、プログラムと論理制御回路との組み合わせが変更された場合、制御回路は論理制御回路からの割込要求に対して適切な値を返すことができないので、論理制御回路の所定の処理が禁止される。
【００１７】
さらに本発明では、前記禁止手段は、前記論理制御回路からの前記割込要求から設定時間以内に前記制御回路から値が返されないときにも、前記論理制御回路の処理動作を強制的に停止させることを要旨とする。
【００１８】
これによれば、割込要求から設定時間以内に制御回路から割込要求回数に応じた適切な値が返されない場合は、論理制御回路の処理動作を停止させる。従って、割込要求があっても値を一切返さないようにプログラムが改ざんされても、論理制御回路の処理動作は停止されるので、プログラムを交換できても何の意味も持たなくなる。
【００１９】
前記メモリは、前記プログラムを書き込み可能な不揮発性メモリであって、前記不揮発性メモリへの前記プログラムのロード時に、割込要求回数に応じた値がロードの度に可変となるように複数の値からなるデータ群を前記論理制御回路と前記プログラムとの双方に設定する設定手段を備え、前記制御回路は、前記論理制御回路からの割込要求を受け付けると、前記データ群から前記割込要求回数に応じた値を選択して前記論理制御回路に返すことを要旨とする。
【００２０】
これによれば、不揮発性メモリへのプログラムのロード時に、設定手段は、割込要求回数に応じた値がロードの度に可変となるように複数の値からなるデータ群を論理制御回路とプログラムとの双方に設定する。よって、不揮発性メモリに割込要求回数に応じた値が可変となるように個々に異なるデータを書き込む面倒がなくなる。
【００２１】
また、本発明では、前記設定手段は、前記不揮発性メモリへの前記プログラムのロード時に、前記不揮発性メモリのアドレスと対応つけて前記データ群を設定するとともに、該データ群から初回の割込要求に応じた適切な値に対応する先頭アドレスをロードの度に可変に設定するものであり、前記制御回路は、前記データ群の中から前記先頭アドレスと割込要求回数とから決まるアドレスに対応する値を選択して前記論理制御回路に返すことを要旨とする。
【００２２】
これによれば、設定手段は、不揮発性メモリへのプログラムのロード時に、不揮発性メモリのアドレスと対応つけてデータ群を設定するとともに、データ群から初回の割込要求に応じた適切な値に対応する先頭アドレスをロードの度に可変に設定する。このため、先頭アドレスをロードの度に可変に設定しさえすればよく、例えばデータ群を共通とすることが可能となる。データ群を共通とし、少なくとも先頭アドレスのみ可変とすればよい。このため、データ群を可変に設定できるように多数種用意する必要がない。よって、プログラムのロード時における設定手段による設定処理を簡単な処理に済ませられる。
【００２３】
また、本発明は、プログラムコピー防止装置において前記設定手段を構成するコンピュータに、ホスト装置から端末装置にファームウェアプログラムをダウンロードして該端末装置内の不揮発性メモリに書き込むダウンロード処理を実行させるＩＰＬプログラムであって、前記ダウンロードのときに前記データ群を前記論理制御回路及び前記不揮発性メモリに書き込むステップと、前記データ群から値を読み出す先頭アドレスをダウンロードの度に可変させるよう設定するステップとを備えたことを要旨とする。
【００２４】
これによれば、コンピュータは、ダウンロードのときにデータ群を論理制御回路及び不揮発性メモリに書き込むステップと、データ群から値を読み出す先頭アドレスをダウンロードの度に可変させるよう設定するステップとを実行する。
【００２５】
また、本発明は、プログラムコピー防止装置において前記制御回路を構成するコンピュータが前記論理制御回路からの割込要求に対して値を返す割込処理を実行するプログラムであって、前記論理制御回路からの割込要求に対して、コンピュータが前記データ群の中から前記先頭アドレスと割込要求回数とから決まるアドレスに対応する値を選択して前記論理制御回路に返すステップと、割込要求がある度にアドレスを変化させるステップとを備えたことを要旨とする。
【００２６】
これによれば、コンピュータは、論理制御回路からの割込要求に対して、コンピュータがデータ群の中から先頭アドレスと割込要求回数とから決まるアドレスに対応する値を選択して論理制御回路に返すステップと、割込要求がある度にアドレスを変化させるステップとを実行する。
【発明を実施するための最良の形態】
【００２７】
以下、本発明を具体化した一実施形態を、図１〜図５に基づいて説明する。本実施形態では、プログラムコピー防止装置を備える機器はプリンタである。
図５は、プリンタの斜視図である。機器としてのプリンタ１は、本体２の上面右側に操作パネル３を備える。また、本体２の背面側には自動給紙装置４のシートフィーダー５およびロール紙支持部６が設けられている。シートフィーダー５にセットされた単票紙、あるいはロール紙支持部６にセットされたロール紙は、自動給紙装置４の給紙機構（図示せず）の作動により本体２内部に給紙される。本体２の中央部分を覆うカバー７の内側には、インクジェット式ヘッドを有するキャリッジが主走査方向（図５における本体長手方向）に往復移動して印刷を施す印刷機構(図示省略)が搭載されており、印刷機構が作動することにより印刷が施された用紙８が本体２の前側下部の排紙口９から排出される。
【００２８】
操作パネル３は、設定画面１０と複数の操作スイッチ（操作キー）１１とを備える。操作スイッチ１１は、電源スイッチ、印刷開始スイッチ、中止スイッチ、メンテナンススイッチの他、設定画面１０上のメニュー画面の中から所望の項目を選択するときに操作される選択スイッチ１２等からなる。
【００２９】
図４は、プリンタ１の電気的構成を示す。プリンタ１は回路システムを構成する回路基板１５を備える。この基板１５上に、制御回路としてのＣＰＵ１９、メモリとしてのＥＥＰＲＯＭ２０、ＲＯＭ２１、ＲＡＭ２２、論理制御回路（制御ハードウェア）としてのＡＳＩＣ（Application Specific ＩＣ（特定用途向けＩＣ））２３、通信インタフェイス２４、パネル制御回路２５がバス２６を介して互いに接続されている。パネル制御回路２５は操作パネル３と電気的に接続されており、ＣＰＵ１９はパネル制御回路２５を介して操作パネル３からのキー操作信号を入力すると、その操作されたキーに対応した所定の処理を実行する。ＣＰＵ１９はＥＥＰＲＯＭ２０及びＲＯＭ２１に記憶された制御プログラムに従い、ＲＡＭ２２を作業領域として印刷処理をはじめとする各種処理を実行する。また、ＡＳＩＣ２３は、回路基板１５上に取り付けられたヘッド駆動回路２７およびモータ駆動回路２８，２９と電気的に接続されている。ＡＳＩＣ２３は不揮発性メモリ２３ａを内蔵している。
【００３０】
キャリッジ３０の下部に取り付けられた記録ヘッド３１は、インクカートリッジ３２のインク色別に複数本ずつ配列された各ノズル３３を有し、各ノズル３３毎に圧電振動子（ピエゾ）３４を内蔵している。この圧電振動子３４はヘッド駆動回路２７から入力される駆動電圧により電圧制御され、圧電作用により発生した吐出圧によってノズル３３からインクを吐出させる。
【００３１】
ＡＳＩＣ２３はヘッド駆動回路２７を介して圧電振動子３４を駆動制御（インク吐出制御）する。また、ＡＳＩＣ２３は、モータ駆動回路２８を介してキャリッジモータ３５を駆動制御する。また、ＡＳＩＣ２３は、モータ駆動回路２９を介して紙送りモータ３６を駆動制御する。もちろん、例えばモータ３５，３６を、ＣＰＵ１９が各モータ駆動回路２８，２９を介して制御する構成を採用することもできる。
【００３２】
ＡＳＩＣ２３は、各種センサ３７から入力した検出信号（パルス信号）から把握されるキャリッジ位置および用紙位置に応じたキャリッジ制御・紙送り制御が行われるように各モータ３５，３６を駆動制御する。
【００３３】
プリンタ１の通信インタフェイス２４は、例えばパラレルポート（図示せず）に接続された通信ケーブル３９を介してホスト装置としてのホストコンピュータ４０と通信可能に接続されている。ユーザがホストコンピュータ４０のキーボードなどの入力装置４１を操作することで所定の印刷ジョブの実行を指示すると、プリンタドライバ（制御プログラム）４２は印刷データをプリンタ１に送信する。
【００３４】
ホストコンピュータ４０から受信した印刷データは通信インタフェイス２４およびバス２６を通じてＡＳＩＣ２３に入力される。ＡＳＩＣ２３は、ホストコンピュータ４０から受信した印刷データおよびＣＰＵ１９からの制御信号、さらに各種センサ３７からの入力信号に基づき印刷処理を実行し、各駆動回路２７〜２９を介して記録ヘッド３１およびモータ３５，３６を駆動制御する。ＡＳＩＣ２３は印刷処理実行プログラムがハードウェアの形で処理回路（論理回路）として形成されたものである。このため、ＡＳＩＣ２３に回路として形成されたプログラムを読み取ることは事実上不可能である。
【００３５】
図１は、プログラムコピー防止装置の構成を示すブロック図である。
プログラムコピー防止装置は、ＡＳＩＣ２３と、ＣＰＵ１９と、トラップ制御割込処理プログラム（コピー防止用割込処理プログラム）を記憶する不揮発性メモリ２３ａとからなる。
【００３６】
ＡＳＩＣ２３は、トラップ制御割込み要求部５１、トラップ解除レジスタ５２、不揮発性メモリ（フラッシュＲＯＭ）２３ａおよびリードアドレス変換部５３、比較回路５４及び禁止回路５５を備えている。不揮発性メモリ２３ａの所定記憶領域にはトラップ解除データテーブル５７が記憶されている。
【００３７】
トラップ制御割込処理部（以下、割込処理部６０という）は、不揮発性メモリ２３ａから読み出したトラップ制御割込処理プログラムを実行するＣＰＵ１９によって構築され、ＣＰＵ１９はＡＳＩＣ２３のトラップ制御割込み要求部５１から割込要求を受け付けたときにトラップ制御割込処理プログラムを実行する。不揮発性メモリ２３ａからのトラップ制御割込処理プログラムの読み出しは、割込要求から一定時間内だけ行うことができる。
【００３８】
リードアドレス変換部５３では、先頭アドレスが可変だが、電源を切った後も、その値が残るように変更設定した先頭アドレスは不揮発性メモリ２３ａに記憶するようにする。
割込処理部６０は、ＡＳＩＣ２３のトラップ制御割込み要求部５１から割込要求を受け付けると割込処理を実行し、割込処理で得た値をトラップ解除レジスタ５２に書き込む。この割込処理が繰り返し行われ、毎回、設定時間内にトラップ解除レジスタ５２に割込要求回数に応じた適切な値を書き込まないと、ＡＳＩＣ２３は印刷処理（所定の処理）を強制的に停止させる。
【００３９】
トラップ解除レジスタ５２はその書き込まれた値を比較回路５４の第１入力端子に出力する。また、リードアドレス変換部５３に設定された先頭アドレスと割込要求回数に応じてトラップ解除データテーブル５７において現在選択されている値が比較回路５４の第２入力端子に出力される。割込処理を１回する度にカウンタがオフセット値をインクリメントしたら、先頭アドレス（「1000」）＋オフセット値で求まるアドレスにある値をセレクタでセレクトして比較回路５４で比較する。
【００４０】
比較回路５４の出力値は、２つの入力端子からの各入力値が一致のときは「０」、不一致であると「１」になる。比較回路５４の出力値は禁止回路５５に入力される。禁止回路はその入力値が「０」であると許可信号を出力し、入力値が「１」であると禁止信号を出力する。この禁止信号は駆動回路２７，２８，２９に出力される。駆動回路２７，２８，２９は禁止信号を入力すると記録ヘッド３１及びモータ３５，３６を強制的に停止させる。すなわち、比較回路５４は、データテーブル５７で現在選択中の値とトラップ解除レジスタ５２に書かれた値とを比較処理（コンペア）して、不一致であれば記録ヘッド３１およびモータ３５，３６の出力を禁止する。
【００４１】
ＥＥＰＲＯＭ２０には、ファームウェアプログラム、割込要求回数、トラップ解除データテーブル（以下、データテーブルという）５７及び先頭アドレスを記憶するための各記憶領域が予め用意されている。ＣＰＵ１９は、プリンタ１の電源投入時にＥＥＰＲＯＭ２０から割込要求回数を読み出し、これをカウンタ（図示せず）にセットする。そして、ＣＰＵ１９は割込要求を受信する度にカウンタをインクリメントする。こうしてカウンタにはファームウェアプログラムのダウンロード以後累積した割込要求回数に相当する値（オフセット値）が格納されることになる。もちろん、カウンタで計数するのではなくＲＡＭ２２に割込要求回数に相当するオフセット値を割込要求の度に「１」ずつ増やして書き込む構成も可能である。
【００４２】
不揮発性メモリ２３ａには、トラップ制御割込処理プログラム、データテーブル５７と先頭アドレスの記憶領域が予め用意されている。このうちプログラムは、ＣＰＵ１９が読みとれるようにプロテクトは掛けられていないが、データテーブル５７と先頭アドレスにはプロテクトが掛けられており、トラップ解除レジスタ（図示せず）に暗号コードを入力しないことには読みとれないようになっている。
【００４３】
トラップ制御の有効・無効を選択できるようになっている。ある顧客のカスタマイズは秘密にしておきたいときなどにトラップ制御がかかるようにプログラムされている。例えばデータテーブルにデータが何も書かれなければトラップ制御はしない。例えばＡＳＩＣ２３に予め用意されたデータテーブル（所定記憶領域）５７にデータが書き込まれなければ、割込要求しないように作り込まれている。割込要求が出力されなければトラップ解除制御が行われないようになっている。
【００４４】
ＥＥＰＲＯＭ２０には初期のファームウェアプログラム(初期プログラム)が予め記憶されている。このＥＥＰＲＯＭ２０を基板に組付ける。初期のファームウェアプログラムを予めＥＥＰＲＯＭ２０に記憶しておくことで、ＩＰＬプログラムを受け入れることができる。
【００４５】
この初期ファームウェアプログラムは、汎用ファームウェアプログラムであり、そのまま汎用ファームウェアプログラムを使用する場合は、特にダウンロードは行わない。汎用ファームウェアプログラムを特殊仕様のファームウェアプログラムに書き替えるときに、ＩＰＬプログラムを送って、特殊仕様のファームウェアプログラムのダウンロードが行われる。もちろん、汎用ファームウェアプログラムであっても、書き直しをしてトラップ制御を採用するようにすることもできる。このファームウェアプログラムを書替えるときに、不揮発性メモリ２３ａ中のデータテーブル５７にランダムデータを書き込むとともに先頭アドレスを書き込む一方、ＥＥＰＲＯＭ２０にはデータテーブル及び先頭アドレスを書き込む。
【００４６】
ＩＰＬは一旦ロードすればその後のプログラムの書替えの度に使用できる。ＩＰＬはＥＥＰＲＯＭ２０へのプログラムの書替えをするためのプログラムである。ファームウェアプログラム書替えの度に基板にマッチした先頭アドレスを書き込めるので、ＡＳＩＣ２３とＥＥＰＲＯＭ２０との組合せが一致するものとなる。なお、ＩＰＬデータは非公開で他人は取得できないようになっている。
【００４７】
以下、プログラムコピー防止装置の処理を説明する。
(1)ファームウェアプログラムをＥＥＰＲＯＭ２０に書き込み時にトラップ解除データテーブル５７にランダムデータを書き込む。本例では、ランダムデータは１種類であり、プリンタ１が異なってもトラップ解除データテーブル５７には図１における下段のデータテーブル５７に示すような同じランダムデータ（「a,b,c,…x,y」）が書き込まれる。
【００４８】
(2)連動して、書かれた値に応じたトラップ解除データテーブル５７の先頭アドレスが書き替えられる。
(3)その値をプログラムのトラップ制御割込み処理の先頭アドレスとして使用する。
【００４９】
(4)プログラムの書き込みが終了する。
以上の処理でプリンタ毎に異なる先頭アドレスが設定される。次にプリンタの動作時の処理を説明する。ファームウェアプログラムとＡＳＩＣ２３とが正規の組合せであるときはプリンタ１は正常に印刷動作するが、コピーや改ざんされたファームウェアプログラムとＡＳＩＣ２３との不正な組合せであるときはプリンタ１の印刷動作が強制的に停止される。
【００５０】
(5)プリンタ１を電源オンすると、トラップ制御割込み要求部５１が所定の割込み周期で割込要求を出力する。
(6)割込処理部６０は、先頭アドレスを基に割込要求回数から決まるオフセット値からアドレスを求め（例えば図１のデータテーブル６１では「アドレス＝先頭アドレス「1000」＋オフセット値」）、そのアドレス先の値をデータテーブル６１から読み出し、その読み出した値をトラップ解除レジスタ５２に書き込む。図１に示すデータテーブル６１の例では、オフセット値は、初期値が「0」で割込要求がある度に「１」ずつインクリメントされて割込要求回数に応じた「0〜9」のうちいずれかの値をとる。オフセット値は「9」の次に「0」に移るようなリンク処理が行われる。先頭アドレスとオフセット値とを用いて割込要求回数に応じたアドレスを求めるようになっており、データテーブル６１からその求めたアドレスにある値を読み取ってトラップ解除レジスタ５２に書き込む。なお、同図ではオフセット値が「0〜9」で、値が１０個の簡単な例で示しているが、実際には数10〜数100の値を用意する。
【００５１】
(7)ＥＥＰＲＯＭ２０に記憶されたファームウェアプログラム等を削除された場合、ＡＳＩＣ２３はトラップ解除レジスタ５２へ書き込まれた値が不適切であること、トラップ解除レジスタ５２へ設定時間以内に値の書き込みがないことをもってその異常を検知し、記録ヘッド３１への出力を禁止する。
【００５２】
(8)プログラムのアドレスを基にデータテーブルや先頭アドレスを調べようとしても、これらにはマスク処理がされているのでデータは読めない。
以下、ダウンロード時の処理について詳しく説明する。
【００５３】
書き込みモード（非公開）にすると、ＩＰＬプログラム（ＩＰＬローダ）を受信する準備をする。最初にＩＰＬプログラムを受信すると、ＩＰＬプログラムは所定の番地に書き込まれる。書き込まれるとその番地にジャンプして次に送られてきたファームウェアプログラムをＥＥＰＲＯＭ２０に書き込む処理をする。通常は、送られてきたファームウェアプログラムをそのままＥＥＰＲＯＭ２０に書き込む処理をするのだが、これに加えて前記(1)，(2)，(3)の処理をする。
【００５４】
図２はトラップ制御割込処理を行うのに必要なトラップ解除データテーブル及び先頭アドレスを初期設定する処理を示すフローチャート、図３は初期設定後に行われるトラップ制御割込処理ルーチンを示すフローチャートである。以下、これらの処理についてフローチャートに従って説明する。まず初期設定処理について図２のフローチャートに従って説明する。
【００５５】
ステップ（以下、単に「Ｓ」と記す）１０では、ＩＰＬプログラムをダウンロードする。プリンタ１を書き込みモードにしてＩＰＬプログラムをホストコンピュータ（ＰＣ）４０からプリンタ１にロードする。書き込みモードは、ホストコンピュータ４０からプリンタ１にプログラムを書き込むモードであり、所定のスイッチ操作によって設定される。
【００５６】
Ｓ２０では、ファームウェアプログラムをダウンロードする。
Ｓ３０では、トラップ解除データテーブルの作成及び設定をする。すなわちＩＰＬプログラムの実行によりランダムデータを生成して、その生成したランダムデータをデータテーブル５７に書き込むとともに、トラップ解除データテーブル６１としてＥＥＰＲＯＭ２０にも書き込む。本例ではランダムデータは毎回同じとなる。もちろん、ランダムデータはダウンロードの度に毎回ランダムに発生させることもできる。
【００５７】
Ｓ４０では、先頭アドレスを設定する。すなわちＩＰＬプログラムの実行により先頭アドレスをダウンロードの度に毎回異なる値として生成し、不揮発性メモリ２３ａに書き込む。先頭アドレスは、ＡＳＩＣ２３毎に決まる固有値となる。
【００５８】
トラップ解除データテーブル５７にランダムデータが書き込まれると、トラップ制御割込み要求部５１から所定周期で割込要求が出力されるようになり、まず初回の割込要求が出力される。ＣＰＵ１９は不揮発性メモリ２３ａからトラップ制御割込処理プログラムを読み取るとともにこれを実行し、次にＡＳＩＣ２３のリードアドレス変換部５３から先頭アドレスを読み込む。こうしてＥＥＰＲＯＭ２０にはファームウェアプログラムと先頭アドレスとが書き込まれる。
【００５９】
次に図３を用いてトラップ制御割込処理ルーチンについて説明する。
Ｓ１１０では、最初（１回目）の割込要求があると、リードアドレス変換部５３から先頭アドレスを読み取る。この処理は最初の割込要求のときだけ行われる。
【００６０】
Ｓ１２０では、先頭アドレスと割込要求回数を基にデータテーブル６１からエラー解除データを取得する。
Ｓ１３０では、テーブルから先頭アドレスに対応する値を読み出してトラップ解除レジスタ５２に書き込む。例えば先頭アドレスが「1000番地」であればそのアドレスの値をトラップ解除レジスタ５２に書き込む。
【００６１】
このときトラップ解除レジスタ５２に所定時間以内に書き込まれると、ＡＳＩＣはその値を読み込んで、初回の割込要求のときの値、すなわち先頭アドレスの値を読み出して比較回路５４が両者の値を比較する。比較の結果、一致すればＡＳＩＣ２３は印刷処理を実行する。こうして割込要求が繰り返されると、１回の割込要求の度にアドレスが順次移行してゆくことになるが、これはＡＳＩＣ２３とプログラムとで同じように移行するので、組合せが正しければ常に両者の値は一致する。
【００６２】
一方、もしファームウェアプログラムが交換された場合（ファームウェアプログラムをダウンロードするには暗証番号が必要で特定の者しかできないので、プログラムをコピーすることになる）、他からプログラムを持ってきた場合、つまり、ＥＥＰＲＯＭ２０を、他のファームウェアプログラムが記憶されたＥＥＰＲＯＭと交換した場合、そのファームウェアプログラムにはデータテーブルも先頭アドレスも含まれているかもしれないが、データテーブルが一致していても、先頭アドレスはダウンロードの度に発行されてＡＳＩＣ２３（ハードウェア）毎の固有値なので、一致することはまずない。もちろんリング処理で回しているので全く同じものが無い訳ではないが、一致する確率は極めて低い。ＥＥＰＲＯＭ２０の交換後は、プリンタ１が電源投入され、１回目の割込要求が出力されると、このときＡＳＩＣ２３とＥＥＰＲＯＭ２０とで先頭アドレスが異なっているので、たとえデータテーブルが一致していたとしても解除値は一致しない。一致しないときは、ＡＳＩＣ２３が作動しないので、プリンタ１が動作しなくなる。
【００６３】
例えばトラップ制御割込処理部が壊されたとしても、その場合は、解除データを書込みできないので、ＡＳＩＣ２３が作動しなくなる。一方、ＥＥＰＲＯＭ２０を交換した場合は、解除データが間違っているのでＡＳＩＣ２３は動作しない。
【００６４】
例えば１台プリンタを買ってきてファームウェアプログラムをコピーしそれを他のプリンタに使用してプリンタの付加価値を高めて転売するような違法行為を防ぐ。ＲＯＭからファームウェアプログラムをコピーしてそれを記憶するＲＯＭを備えた基板だけを入手し、基板をプリンタに組み込んで付加機能を付けたプリンタを作られることが心配される。この場合、ファームウェアプリンタを記憶するＲＯＭとＡＳＩＣ２３とは不適正な組み合わせとなる。
【００６５】
割込処理部６０からトラップ解除させる適切な値（エラー解除データ）を受け付けないことには印刷処理を禁止させる。また、割込処理を削除してしまわれても、割込要求に対して応答できないので印刷処理されることはない。割込処理を外しても動かないし、基板を交換しても動かない。従って、プログラムコピーされようとも印刷処理が行われないのでファームウェアプログラムをコピーできても意味が無くなる。
【００６６】
以上詳述したようにこの実施形態によれば、以下の効果が得られる。
（１）データテーブルはロードするものすべて同じで初期のアドレスのみ変更すればよいので、ＩＰＬプログラム（ロード手段）がロードする場合でも、ロード用データの容量を少なく済ませられる。例えばテーブルデータを複数種用意するとなると、トラップを破られないためにはかなりの数用意する必要があり、テーブルだけでもかなりのメモリ容量が必要になる。これに対し、先頭アドレスを変更すればよいので、先頭アドレスを複数種用意するか、乱数プログラムを実行して先頭アドレスを発生させればよいので、テーブルデータを変更する構成に比べロード手段に用意する必要があるデータ容量を極めて小さく抑えることができる。
【００６７】
（２）所定時間を経過しても値が返ってこないときは処理を禁止するようにしたので、値が返ってこないときにそのまま処理を実行することがなく、処理動作を禁止させることができる。よって、値を返さないように設定されたとしても動作させないので、プログラムコピー防止を確実なものとすることができる。
【００６８】
（３）これまでのプログラムコピー防止は、プログラムそのもののコピーの防止をするものであったが、本実施形態によれば、プログラムをコピーされてしまっても、ＡＳＩＣによる処理動作が禁止されるので、プログラムのコピーそのものが意味をもたなくなる。特にプログラムだけでなくプログラムとＡＳＩＣとの組み合わせて動作する装置において有効である。
【００６９】
なお、実施の形態は、上記に限定されず以下の態様でも実施できる。
（変形例１）トラップ制御割込処理プログラムの記憶先はＡＳＩＣの外に設けられた不揮発性メモリ(例えばフラッシュＲＯＭ)またはＲＯＭでもよい。不揮発性メモリであればダウンロードしたプログラムを書き込みできる。ＲＯＭであればプログラムの書替えの際はＲＯＭの交換となるが、プログラムのコピーを防止することはできる。
【００７０】
（変形例２）アドレスだけでなくプログラムを変えてもよい。プログラムに割込１回目にデータ「ａ」を書けとする割込要求としてもよい。割込要求１回毎にカウンタがアドレスをインクリメントし、先頭アドレスとカウンタの値とからセレクタにより選択されたアドレスのデータをデータテーブルから読み出してレジスタに設定し、ＣＰＵ１９はこのレジスタから読み出した値をトラップ解除レジスタ５２に書き込みする構成とする。
【００７１】
（変形例３）データテーブルのデータを基板（プリンタ）間で共通なものを使用したが、データテーブルのデータ内容を基板毎に変えることもできる。例えばテーブルデータを書き込む際に基板毎に乱数処理を行って基板ごと別々のデータ内容となるようにデータテーブルを作成する。
【００７２】
（変形例４）前記実施形態では、割込要求の度に１つずつアドレスを変化させる構成を採用したが、これに限定されない。例えば割込要求の毎回毎ではなく２回以上の所定回数毎にアドレスを変更させたり、割込要求の不規則な回数毎にアドレスを変更させてもよい。また、アドレスの変更も順番に１つずつ変更することに限定されず、例えばアドレスを１つおき、又は、複数個おきに変化させたり、不規則にアドレスを変更させてもよい。
【００７３】
（変形例５）トラップ制御割込処理プログラムをＡＳＩＣ２３内の不揮発性メモリ２３ａに記憶する構成を採用したが、ファームウェアプログラムとともにトラップ制御割込処理プログラムをＥＥＰＲＯＭ２０に記憶させることができる。
【００７４】
（変形例６）初期の値は常に一定のアドレス（例えばテーブルの一番目）から始めることとし、その代わりテーブルの値そのものの順序をすべてが同じにならないように変化させた構成で実施することもできる。この構成によっても、ＡＳＩＣとプログラムの組合せが変われば、割込要求に対する応答の値が一致しないので、プログラムコピー防止に有効ではある。
【００７５】
（変形例７）前記実施形態では、適切な値がＡＳＩＣ２３に返されなかった場合、ＡＳＩＣ２３が自身の処理を強制停止する構成であったが、ＡＳＩＣ２３自身の処理ではなく、ＡＳＩＣ２３が直接制御していない処理回路の動作を強制停止させる構成で実施することもできる。例えばキャリッジモータ３５と紙送りモータ３６をＣＰＵ１９が駆動制御している場合、ＡＳＩＣ２３がこれらのモータ３５，３６の駆動回路２８，２９に禁止信号を出力してこれらのモータを強制停止させることもできる。その他、プリンタ以外の機器において同様に、適切な値が返される論理制御回路が自身の処理を含めて他の回路の処理動作を禁止させる構成、論理制御回路が自身の処理は停止させずに他の回路の処理動作を禁止させる構成に、論理制御回路が自身の処理の一部の処理を制限する構成を実施することができる。処理が制限されるだけでも機器として意味をなさなければ十分プログラムコピー防止の効果は期待できる。
【００７６】
（変形例８）乱数のルーチンもＩＰＬプログラムに持たせてテーブルデータにロードの度に異なるランダムデータを作成して書き込む構成でもよい。例えば先頭アドレスは一定値で、データテーブル５７内のランダムデータの値を変更する設定手段を採用することもできる。例えばロード時にランダム計算から得られた値をテーブルデータに設定する。
【００７７】
（変形例９）前記実施形態では、プログラムをロードさせる構成としたが、プログラム、異なるテーブルデータ及び先頭アドレスを手作業の操作で書き込む構成でも構わない。
（変形例１０）テーブルデータを同一とし、先頭アドレスを可変とするのではなく、テーブルデータ内の値を割込回数に応じた順番で読み出す順番データを設けることとし、この順番データを可変とする方法を採用することもできる。
【００７８】
（変形例１１）プリンタ以外の液体噴射装置にも適用できる。例えば液晶ディスプレイ、ＦＥＤ（面発光ディスプレイ）、等の電極形成に用いられる電極材（導電ペースト）噴射ヘッド、バイオchip製造に用いられる生体有機物噴射ヘッド、精密ピペットとしての試料噴射ヘッド等を備えた産業用途の印刷装置（液体噴射装置）に適用することもできる。
【００７９】
（変形例１２）プリンタなどの液体噴射装置にも限定されない。コピー機能などを持つ多機能の複合機にも適用できる。その他、制御ハードウェア（ＡＳＩＣ等）とＣＰＵが使用される装置に広く適用できる。
【００８０】
前記実施形態及び変形例から把握される技術的思想を以下に記載する。
（１）請求項１又は２に記載のプログラムコピー防止方法において、前記プログラムはロード手段から前記メモリにロードされるようになっており、前記ロード手段は前記プログラムをロードする度に前記テーブルデータと前記基準値とのうち少なくとも一方を可変させて、前記論理制御回路と前記メモリとに設定することを特徴とするプログラムコピー防止方法。
【００８１】
（２）請求項１〜３のいずれか一項に記載のプログラムコピー防止方法において、前記ロード手段は、前記プログラムを前記メモリにロードする度に前記テーブルのデータ群と前記基準値とのうち少なくとも前記基準値を可変させて、前記論理制御回路と前記メモリとに設定することを特徴とするプログラムコピー防止方法。
【００８２】
（３）請求項１〜３のいずれか一項に記載のプログラムコピー防止方法において、前記データテーブルは前記メモリの所定記憶領域に記憶されるとともに、該データテーブルの値は前記所定記憶領域におけるアドレスに対応付けて設定されており、前記基準値は、前記先頭アドレスであることを特徴とするプログラムコピー防止方法。
【００８３】
（４）前記論理制御回路は、前記所定の処理として駆動手段を駆動制御する処理を行うことを特徴とするプログラムコピー防止方法。
（５）請求項５〜７のいずれか一項に記載のプログラムコピー防止装置において、前記設定手段は、前記プログラムのロード時に、該プログラムとともに前記論理制御回路にも前記データ群と、該データ群から値を読み出す順番を決める順番データとを設定するものであって、前記禁止手段は、前記制御回路から割込要求に対して返された値と、前記データ群と順番データとにより割込要求回数に応じて決まる値とが一致しないときに前記論理制御回路の処理動作を禁止することを特徴とする。
【００８４】
（６）前記プログラムはプリンタのファームウェアプログラムであるとともに、前記論理制御回路の処理動作はプリンタの印刷処理動作であることを特徴とするプログラムコピー防止装置。
【００８５】
（７）前記論理制御回路と前記不揮発性メモリは同一基板上に同一パッケージ内に封入されていることを特徴とするプログラムコピー防止装置。
【図面の簡単な説明】
【００８６】
【図１】一実施形態におけるトラップ制御装置のブロック図。
【図２】初期設定処理を示すフローチャート。
【図３】トラップ制御割込処理ルーチンを示すフローチャート。
【図４】プリンタの電気的構成を示すブロック図。
【図５】プリンタの斜視図。
【符号の説明】
【００８７】
１…端末装置としてのプリンタ、１９…制御回路及び設定手段としてのＣＰＵ、２０…メモリとしてのＥＥＰＲＯＭ、２３…論理制御回路としてのＡＳＩＣ、２３ａ…メモリとしての不揮発性メモリ、４０…ホスト装置としてのホストコンピュータ、５１…トラップ制御割込み要求部、５２…トラップ解除レジスタ、５３…リードアドレス変換部、５４…禁止手段を構成する比較回路、５５…禁止手段を構成する禁止回路、５７，６１…データテーブル、６０…割込処理部。
【図１】
2005056253.tif 000003
【図２】
2005056253.tif 000004
【図３】
2005056253.tif 000005
【図４】
2005056253.tif 000006
【図５】
2005056253.tif 000007