(57)【特許請求の範囲】
【請求項１】
既存情報及びローダーを含むＩＰＬ部が予め格納された書き替え不可能な第１の記憶領域と、
前記既存情報の差し替えに係る差替情報が格納される書き替え可能な第２の記憶領域と、
指定された既存情報を前記第１の記憶領域から読み出す制御手段とを備え、
前記ＩＰＬ部のうち前記既存情報には前記差替情報が前記第２の記憶領域に記憶される位置を示す位置情報が格納され、
前記差替情報は、前記既存情報のうち差し替えられるべき部分を示す差替位置情報及び差し替えるべき内容を示す差替内容情報を、一つの前記既存情報につき複数の異なる部分に対応して複数指定可能であり、
前記ローダーは、前記既存情報の差し替えが必要になった場合、前記既存情報のうち差し替えるべき少なくとも一の部分について前記差替位置情報及び前記差替内容情報を書き込むことにより、前記差替情報を差し替えなしの旨の内容から差し替えありの旨の内容に変更し、
前記制御手段は、前記既存情報に格納された前記位置情報で指定された前記第２の記憶領域内の位置に記憶された差替情報が差し替えなしの旨の内容であれば、前記第１の記憶領域から前記既存情報を読み出し、一方、前記差替情報が差し替えありの旨の内容であれば、当該差替情報に基づいて、前記既存情報のうち差替位置情報で指定された部分を差替内容情報に差し替え、この場合において、一つの既存情報に差し替えるべき部分が複数指定された差替情報である場合は、当該既存情報のうち各差替位置情報で指定された複数の部分をそれぞれ対応する各差替内容情報に差し替えることで、一つの情報単位として処理される記憶情報を生成することを特徴とする情報処理装置。
【請求項２】
前記差替情報を、前記差替位置情報と前記差替内容情報とを含むテーブルで記憶することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記既存情報は一つの独立した情報単位であり、前記既存情報には当該既存情報の前記第１の記憶領域における位置情報が記憶された構成であって、
前記制御手段は前記位置情報と現在の読込位置情報とを基に前記第１の記憶領域における読み込むべきアドレスを設定し、前記読み込むべきアドレスから所定サイズだけ格納データを読み込み、その部分に前記差替情報を取り込むことにより前記既存情報の一部を前記差替情報に差し替えることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記制御手段はプログラムを機能単位で分割したときの構成単位となるモジュールであり、前記モジュールはアプリケーションからの指令に基づき、前記既存情報と前記差替情報とを用いて一つの情報単位として前記記憶情報を生成し、当該記憶情報を前記アプリケーションに返信することを特徴とする請求項１〜３のうちいずれか一項に記載の情報処理装置。
【請求項５】
前記既存情報は、前記情報処理装置を製品化するときに予め載せられるデフォルト情報であることを特徴とする請求項１〜４のうちいずれか一項に記載の情報処理装置。
【請求項６】
請求項１〜５のうちいずれか一項に記載の前記情報処理装置と、印刷媒体に印刷処理を実行する印刷機構と備えたことを特徴とする印刷装置。
【請求項７】
書き替え不可能な第１の記憶領域には既存情報及びローダーを含むＩＰＬ部が予め格納され、前記既存情報には当該既存情報に対応する差替情報が、書き替え可能な第２の記憶領域に記憶される位置を示す位置情報が格納されており、
前記差替情報は、前記既存情報のうち差し替えられるべき部分を示す差替位置情報及び差し替えるべき内容を示す差替内容情報を、一つの前記既存情報につき複数の異なる部分に対応して複数指定可能であり、
前記ローダーは、前記既存情報の差し替えが必要になった場合、前記既存情報のうち差し替えるべき少なくとも一の部分について前記差替位置情報及び前記差替内容情報を書き込むことにより、前記差替情報を差し替えなしの旨の内容から差し替えありの旨の内容に変更し、
制御手段は、前記第１の記憶領域から既存情報を読み出すに当たり、該既存情報に格納された前記位置情報で指定された前記第２の記憶領域内の位置に記憶された差替情報が差し替えなしの旨の内容であれば、前記第１の記憶領域から前記既存情報を読み出し、一方、前記差替情報が差し替えありの旨の内容であれば、当該差替情報に基づいて、前記既存情報のうち差替位置情報で指定された部分を差替内容情報に差し替え、この場合において、一つの既存情報に差し替えるべき部分が複数指定された差替情報である場合は、当該既存情報のうち各差替位置情報で指定された複数の部分をそれぞれ対応する各差替内容情報に差し替えることで、一つの情報単位として処理される記憶情報を生成することを特徴とする記憶情報の修正方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置、印刷装置及び記憶情報の修正方法に関するものである。
【０００２】
【従来の技術】
近年、ソフトウェアはＣＰＵの高性能化、メモリ容量の増大に伴って高度化、大規模化してきており、それに連れてソフトウェアには不具合が生じる可能性が高くなっている。このため、ＣＰＵ、ＲＯＭ、ＲＡＭを持ったシステムにおいて、市場に投入した後でソフトウェアに不具合が発見されたり、これらの不具合が原因でシステム自体を回収するなどの問題が度々生じている。そこで、この問題に対処するためにＲＯＭとして電気的に書き換え可能なもの（フラッシュＲＯＭ）を用い、回収した際にソフトウェアを書き換えて修正したり、ユーザ自身にソフトウェアをバージョンアップさせて対応している。
【０００３】
【発明が解決しようとする課題】
ところで、フラッシュＲＯＭはこれまで使用されてきた電気的に書き換えが不可能なＲＯＭ（マスクＲＯＭ）に比べて高価であるため、フラッシュＲＯＭを用いるにしてもフラッシュＲＯＭに格納するソフトウェア（バイナリデータ）をなるべく小さくして、メモリ容量の小さいものを使いたい現状がある。また、フラッシュＲＯＭを書き換えるとき、書き換えた後のソフトウェアは修正が加わる分だけ書き換え前に比べてデータ量が多くなる傾向があるため、設計時にはフラッシュＲＯＭに格納するソフトウェアを最小化しておきたい要望もある。
【０００４】
これらの対応策としてフラッシュＲＯＭに格納するデータを最小化する方法の一つに、ソフトウェア全体のうち不具合がないであろうと思われる部分をマスクＲＯＭに格納しておく方法がある。この場合、マスクＲＯＭに格納したデータ量だけフラッシュＲＯＭに格納するデータ量が少なくて済み、上記した問題の解決が図れる。しかし、マスクＲＯＭは書き換えが不可能であることから、例えばマスクＲＯＭに格納した部分に不具合が生じて修正を迫られたとしても、その部分は書き換えることができず、修正の対応ができないという問題が生じていた。
【０００５】
本発明は前記の問題点に鑑みてなされたものであって、その目的は、第１の記憶領域に予め格納された既存情報に、後発的に差し替えの必要が生じても、第２の記憶領域に格納する差替情報に基づき、既存情報のうち差し替えが必要になった一部を差し替えることで対応でき、かつ第２の記憶領域において差替情報に必要な格納領域を少なく済ませられる情報処理装置、印刷装置及び記憶情報の修正方法を提供することにある。
【０００６】
【課題を解決するための手段】
上記問題点を解決するために、請求項１に記載の発明では、既存情報及びローダーを含むＩＰＬ部が予め格納された書き替え不可能な第１の記憶領域と、前記既存情報の差し替えに係る差替情報が格納される書き替え可能な第２の記憶領域と、指定された既存情報を前記第１の記憶領域から読み出す制御手段とを備え、前記ＩＰＬ部のうち前記既存情報には前記差替情報が前記第２の記憶領域に記憶される位置を示す位置情報が格納され、前記差替情報は、前記既存情報のうち差し替えられるべき部分を示す差替位置情報及び差し替えるべき内容を示す差替内容情報を、一つの前記既存情報につき複数の異なる部分に対応して複数指定可能であり、前記ローダーは、前記既存情報の差し替えが必要になった場合、前記既存情報のうち差し替えるべき少なくとも一の部分について前記差替位置情報及び前記差替内容情報を書き込むことにより、前記差替情報を差し替えなしの旨の内容から差し替えありの旨の内容に変更し、前記制御手段は、前記既存情報に格納された前記位置情報で指定された前記第２の記憶領域内の位置に記憶された差替情報が差し替えなしの旨の内容であれば、前記第１の記憶領域から前記既存情報を読み出し、一方、前記差替情報が差し替えありの旨の内容であれば、当該差替情報に基づいて、前記既存情報のうち差替位置情報で指定された部分を差替内容情報に差し替え、この場合において、一つの既存情報に差し替えるべき部分が複数指定された差替情報である場合は、当該既存情報のうち各差替位置情報で指定された複数の部分をそれぞれ対応する各差替内容情報に差し替えることで、一つの情報単位として処理される記憶情報を生成することを要旨とする。
【０００７】
この発明によれば、既存情報の差し替えが必要になった場合、ローダーは、前記既存情報のうち差し替えるべき少なくとも一の部分について前記差替位置情報及び前記差替内容情報を書き込むことにより、差替情報を、差し替えなしの旨の内容から差し替えありの旨の内容に変更する。制御手段は、第１の記憶領域から既存情報を読み出すに当たり、既存情報に格納された位置情報により指定された第２の記憶領域内の位置に記憶された差替情報が差し替えなしの旨の内容であれば、前記第１の記憶領域から前記既存情報を読み出す。一方、差替情報が差し替えありの旨の内容であれば、その差替情報に基づいて、既存情報のうち差替位置情報で指定された部分を差替内容情報に差し替え、この場合において、一つの既存情報に差し替えるべき部分が複数指定された差替情報である場合は、当該既存情報のうち各差替位置情報で指定された複数の部分をそれぞれ対応する各差替内容情報に差し替えることで、一つの情報単位として処理される記憶情報を生成する。よって、例えば既存情報に不具合が生じるなど、後発的に既存情報の一部を差し替える必要が生じても、既存情報の一部を差替情報に差し替えることで対応でき、しかも既存情報に複数箇所の不具合が生じた場合でも、既存情報の複数箇所を差替情報において指定された差替内容情報に個別に差し替えることで、既存情報の修正が行える。
【００１０】
請求項２に記載の発明では、請求項１に記載の発明において、前記差替情報を、前記差替位置情報と前記差替内容情報とを含むテーブルで記憶することを要旨とする。
【００１２】
請求項３に記載の発明では、請求項１又は２に記載の発明において、前記既存情報は一つの独立した情報単位であり、前記既存情報には当該既存情報の前記第１の記憶領域における位置情報が記憶された構成であって、前記制御手段は前記位置情報と現在の読込位置情報とを基に前記第１の記憶領域における読み込むべきアドレスを設定し、前記読み込むべきアドレスから所定サイズだけ格納データを読み込み、その部分に前記差替情報を取り込むことにより前記既存情報の一部を前記差替情報に差し替えることを要旨とする。
【００１３】
この発明によれば、請求項１又は２に記載の発明の作用に加え、制御手段によって読み込むべきアドレスから所定サイズだけ格納データが読み込まれ、その部分に差替情報が取り込まれて既存情報の一部が差替情報に差し替えられる。従って、一つの独立した情報単位のうち所定の一部が差替情報に差し替えられ、既存情報の部分的修正が行える。
【００１４】
請求項４に記載の発明では、請求項１〜３のうちいずれか一項に記載の発明において、前記制御手段はプログラムを機能単位で分割したときの構成単位となるモジュールであり、前記モジュールはアプリケーションからの指令に基づき、前記既存情報と前記差替情報とを用いて一つの情報単位として前記記憶情報を生成し、当該記憶情報を前記アプリケーションに返信することを要旨とする。
【００１５】
この発明によれば、請求項１〜３のうちいずれか一項に記載の発明の作用に加え、既存情報と差替情報とを用いて記憶情報を生成する処理は、アプリケーションからの指令に基づきモジュールが行っている。従って、アプリケーションは既存情報と差替情報とに基づき記憶情報を生成する処理を意識せずに済み、このような操作が行われていることを意識することなしに記憶情報の読み込みが行える。
【００１６】
請求項５に記載の発明では、請求項１〜４のうちいずれか一項に記載の発明において、前記既存情報は、前記情報処理装置を製品化するときに予め載せられるデフォルト情報であることを要旨とする。
【００１７】
この発明によれば、請求項１〜４のうちいずれか一項に記載の発明の作用に加え、既存情報はデフォルト情報であるので、例えばデフォルト情報に不具合が生じてもその不具合部分を差替情報に基づき修正が行える。
【００２２】
請求項６に記載の発明では、印刷装置は請求項１〜５のうちいずれか一項に記載の前記情報処理装置と、印刷媒体に印刷処理を実行する印刷機構と備えたことを要旨とする。
【００２３】
この発明によれば、請求項１〜５のうちいずれか一項と同様の作用が得られる。
請求項７に記載の発明では、書き替え不可能な第１の記憶領域には既存情報及びローダーを含むＩＰＬ部が予め格納され、前記既存情報には当該既存情報に対応する差替情報が、書き替え可能な第２の記憶領域に記憶される位置を示す位置情報が格納されており、前記差替情報は、前記既存情報のうち差し替えられるべき部分を示す差替位置情報及び差し替えるべき内容を示す差替内容情報を、一つの前記既存情報につき複数の異なる部分に対応して複数指定可能であり、前記ローダーは、前記既存情報の差し替えが必要になった場合、前記既存情報のうち差し替えるべき少なくとも一の部分について前記差替位置情報及び前記差替内容情報を書き込むことにより、前記差替情報を差し替えなしの旨の内容から差し替えありの旨の内容に変更し、制御手段は、前記第１の記憶領域から既存情報を読み出すに当たり、該既存情報に格納された前記位置情報で指定された前記第２の記憶領域内の位置に記憶された差替情報が差し替えなしの旨の内容であれば、前記第１の記憶領域から前記既存情報を読み出し、一方、前記差替情報が差し替えありの旨の内容であれば、当該差替情報に基づいて、前記既存情報のうち差替位置情報で指定された部分を差替内容情報に差し替え、この場合において、一つの既存情報に差し替えるべき部分が複数指定された差替情報である場合は、当該既存情報のうち各差替位置情報で指定された複数の部分をそれぞれ対応する各差替内容情報に差し替えることで、一つの情報単位として処理される記憶情報を生成することを要旨とする。
【００２４】
この発明によれば、請求項１と同様の作用が得られる。
【００２５】
【発明の実施の形態】
（第１実施形態）
以下、本発明をプリンタに具体化した情報処理装置、印刷装置及び記憶情報の修正方法の第１実施形態を図１〜図１０に従って説明する。
【００２６】
図１は、プリンタ１の斜視図である。印刷装置としてのプリンタ１は圧電素子（ピエゾ）を用いたインクジェット式であり、供給トレイ２にセットされた単票紙や、ロール紙ホルダ３にセットされたロール紙を文字印刷或いはカラー印刷する。プリンタ１のケース４の正面側（図１の手前側）には排紙口５が形成され、印刷処理が済んだ印刷媒体としての用紙６は排紙トレイ７に乗せられた状態で排紙口５から排出される。
【００２７】
プリンタ１のケース４にはその正面右側端部にメモリーカードドライブ８が組み付けられ、メモリーカードドライブ８にはメモリーカード９がアダプタ１０を介して差し込まれる。メモリーカード９はその種類としてコンパクトフラッシュ（Ｒ）、スマートメディア（Ｒ）、メモリースティック（Ｒ）等があり、各々専用のアダプタ１０に装着された状態でメモリーカードドライブ８へ差し込まれる。また、メモリーカード９にはデジタルカメラ（図示省略）で撮影された画像データが記憶されている。
【００２８】
プリンタ１のケース４にはその右側上部に操作パネル１１が配置され、操作パネル１１にはＬＣＤ（液晶画面）１２と複数の操作ボタン１３とが配設されている。そして、ＬＣＤ１２に表示される設定要項を見ながら、操作ボタン１３を操作して所望の印刷条件が設定される。また、ケース４の上部にはモニタ（プレビューモニタ）１４が取り付けられている。モニタ１４の画面１５にはメモリーカード９に記憶された画像データが表示され、ホストコンピュータ１６（図２参照）を用いずともメモリーカード９の画像データやプリントレイアウトの確認作業が行える。
【００２９】
図２は、プリンタ１の電気的構成図である。プリンタ１は装置全体を制御する制御装置１７を内蔵し、制御装置１７はＣＰＵ１８、マスクＲＯＭ１９、フラッシュＲＯＭ２０、ＲＡＭ２１、ＡＳＩＣ２２を備えている。これら部材１８〜２２はバス２３を通じて相互に接続されている。ＣＰＵ１８はマスクＲＯＭ１９やフラッシュＲＯＭ２０に記憶されたプログラムに基づき、ＲＡＭ２１を作業領域としてプリンタ１を駆動させるとともに、メモリーカード９から取り込んだ画像データをモニタ１４に表示させる。また、ＡＳＩＣ２２はＣＰＵ１８からの制御信号に基づき駆動される。
【００３０】
プリンタ１は制御装置１７にＩ／Ｆ２４と駆動回路２５とを備え、Ｉ／Ｆ２４を介してホストコンピュータ１６と接続されている。また、プリンタ１は印刷処理を行う印刷機構としての印刷処理部２６を備え、印刷処理部２６は例えばキャリッジ、記録ヘッド、キャリッジモータ、紙送りモータ等のメカ機構により構成される。ＡＳＩＣ２２はＩ／Ｆ２４を介してホストコンピュータ１６から入力する印刷データや、メモリーカード９に記憶された画像データに基づき、駆動回路２５を介して印刷処理部２６に印刷を実行させる。
【００３１】
図３は、プリンタ１のソフトウェアを概念的に示す構成図である。同図に示すアプリケーション２８、セレクタ２９、複数のモジュール３０〜３３はソフトウェアであるが、図中ではこれらをＣＰＵ１８と協働して生成される部材として図示している。また、メモリーカード９として第１のメモリーカード（例えばコンパクトフラッシュ（Ｒ））３４、第２のメモリーカード（例えばメモリースティック（Ｒ））３５、第３のメモリーカード（例えばスマートメディア）３６の３つが同時に図示されているが、これらを一度にプリンタ１に接続できるわけではなく、実際にはこのうち１つが接続される。
【００３２】
セレクタ２９と複数のモジュール３０〜３３はＯＳとして機能するソフトウェアであり、ファイル構造を管理するファイルシステムを構築している。アプリケーション２８はファイルシステムを使用するソフトウェアであり、チェンジドライブ（Change  Drive ）処理に応じた指令信号をセレクタ２９に出力してセレクタ２９にドライブ切替を実行させる。また、アプリケーション２８はオープン（Open）、リード（Read）、ライト（Write ）、クローズ（Close ）、シーク（Seek）の各処理に応じた指令信号をセレクタ２９を介して各モジュール３０〜３３に出力し、各モジュール３０〜３３に対し指令信号に応じた各種処理を実行させる。
【００３３】
チェンジドライブ処理はセレクタ２９のカレントドライブを切り替える処理であり、セレクタ２９はチェンジドライブ処理として、アプリケーション２８から指令信号としてドライブ名を入力し、そのドライブ名にカレントドライブを切り替える。本例では、Ａドライブ〜Ｄドライブの４種類があり、チェンジドライブによりカレントドライブが切り替えられて４種類の間でドライブ設定が実行される。なお、セレクタ２９はチェンジドライブ処理が成功或いは失敗したかの旨の信号をアプリケーション２８に出力する。
【００３４】
各モジュール３０〜３３はソフトウェア（プログラム）を機能単位で分割した場合の一部分であり、第１のモジュール３０、第２のモジュール３１、第３のモジュール３２、ＲＯＭモジュール３３がある。各モジュール３０〜３２はそれぞれ第１のメモリーカード３４、第２のメモリーカード３５、第３のメモリーカード３６を動作させるモジュールである。また、ＲＯＭモジュール３３はフラッシュＲＯＭ２０のデータ内容を処理してファイルシステムとして動作するモジュールである。
【００３５】
アプリケーション２８はセレクタ２９がＡドライブのとき第１のモジュール３０に、Ｂドライブのとき第２のモジュール３１に、Ｃドライブのとき第３のモジュール３２に、ＤドライブのときＲＯＭモジュール３３に接続される。そして、各モジュール３０〜３３はアプリケーション２８からセレクタ２９を介してオープン処理、リード処理、ライト処理、クローズ処理、シーク処理の各処理に応じた指令信号をそれぞれ入力し、各種処理を実行する。
【００３６】
オープン処理はファイルを開く処理であり、各モジュール３０〜３３はオープン処理として、ファイル名とオープンモードをアプリケーション２８から入力し、それに応じたファイルハンドル３７（図４参照）をアプリケーション２８に出力する。リード処理はファイルを読み込む処理であり、各モジュール３０〜３３はリード処理として、アプリケーション２８から読込データを格納する場所と読込サイズとファイルハンドル３７とを入力し、実際に読み込む読込データをアプリケーション２８に出力する。
【００３７】
また、ライト処理はファイルを書き込む処理であり、各モジュール３０〜３３はライト処理として、アプリケーション２８から書込データの書き込み場所と書込サイズとファイルハンドル３７とを入力し、実際に書き込んだ書込データを出力する。シーク処理はファイルの読込位置と書込位置を移動する処理であり、各モジュール３０〜３３はシーク処理として、移動する位置とファイルハンドル３７と基準点（先頭、終端、任意）とを入力し、実際のファイル位置を出力する。クローズ処理はファイルを閉じる処理であり、各モジュール３０〜３３はクローズ処理として、ファイルハンドル３７を入力している。
【００３８】
ここで、ファイルハンドル３７とはファイルを識別するための内部処理上にのコードであり、ＲＡＭ２１に一旦記憶される。また、ファイルハンドル３７は図４に示すようにその情報として「ファイル名」、「そのファイル名が持つ情報のＩＰＬ部の先頭アドレス」、「そのファイル名が持つ情報の書換可能部の先頭アドレス」、「現在のファイル読込位置」、「ファイルサイズ」、「オープンモード」を記憶している。このうちオープンモードには、「読込専用」、「書込専用」、「読み書き」、「書込追記」がある。
【００３９】
図６は、フラッシュＲＯＭ２０のメモリマップである。フラッシュＲＯＭ２０はアドレス00〜AFがデータ書き換え不可能な第１の記憶領域としてのＩＰＬ部３８、アドレスB0以降がデータ書き換え可能な第２の記憶領域としての書換可能部３９となっている。フラッシュＲＯＭ２０のＩＰＬ部３８のうちアドレス00〜0Fには、プリンタ起動時に動作するブートプログラムや書換可能部３９のデータを書き換えるプログラムとして機能するLoader４０が記憶されている。また、ＩＰＬ部３８のアドレスA0〜AFには各ファイルのデータである既存情報としてのソフトウェア（本例ではファイルデータ４１）が記憶されている。
【００４０】
ファイルデータ４１はデフォルト情報であり、図７に示すようにファイルデータ４１には各ファイルごとに「ファイル名」、「ＩＰＬ部の位置情報」、「書換可能部の位置情報」、「ファイルサイズ」が記憶されている。ファイル名はファイルの名前であり、「ＩＰＬ部の位置情報」はそのファイルのＩＰＬ部３８におけるアドレスである。また、「書換可能部の位置情報」はそのファイルが書換可能部３９のどの部分に対応しているかを示すアドレスであり、ファイルサイズはファイルが有するサイズ（バイト単位）である。
【００４１】
図６に示すように、フラッシュＲＯＭ２０の書換可能部３９のうちアドレスB0〜BFにはアプリケーション２８が、アドレスC0〜CFにはセレクタ２９が、アドレスD0〜DFには各モジュール３０〜３３が記憶されている。また、書換可能部３９のアドレスE0〜EFには差異情報としての差替情報４２が記憶されている。アプリケーション２８、セレクタ２９、各モジュール３０〜３３、差替情報４２はＩＰＬ部３８のLoader４０によって書換え可能となっている。
【００４２】
差替情報４２はプリンタ出荷時（即ち、ＩＰＬ部３８のデータ書込み時）において、「ＩＰＬ部３８のファイルデータ４１と差異なし」という情報が記憶される。一方、プリンタ出荷後においてファイルデータ４１に不具合が生じた場合には、この差替情報４２に「ＩＰＬ部３８のファイルデータ４１のうち所定部分をこの情報に差し替える」という情報が書き込まれる。
【００４３】
図５は、差替情報４２のメモリマップである。差替情報４２は開始点であるアドレスE0から終了マーカーを示すアドレスEFの間をデータ内容としており、構成単位ごとに変更開始位置、変更サイズ、変更内容（全てバイト単位）が記憶されている。差替情報４２は複数の変更情報４３を有する構成であり、アドレスE0〜E1の間に１つ目の変更情報、アドレスE2〜E3の間に２つ目の変更情報が記憶され、アドレスE3以降も同様の形式で変更情報が記憶される。
【００４４】
次に、ＲＯＭモジュール３３が実行するオープン処理を図８に示すフローチャートに従って説明する。なお、オープン処理ではファイル名とオープンモードとを入力している。
【００４５】
まず、ステップ（以下、単にＳと記す）１００では、オープンモードが「読込専用」か否かを判断する。即ち、オープン処理ではファイル名とオープンモードを入力し、このうちオープンモードが「読込専用」であるか否かを判断する。そして、オープンモードが「読込専用」であればＳ１０１に移行し、「読込専用」以外の「書込専用」、「読み書き」、「書込追記」であればこのルーチンを終了する。
【００４６】
Ｓ１０１では、入力したファイル名のファイルが有るか否かを判断する。即ち、ＩＰＬ部３８のファイルデータ４１を参照して、入力したファイル名がファイルデータ４１にあるか否かを判断する。そして、ファイル名がある場合にはＳ１０２に移行し、ファイル名がない場合にはこのルーチンを終了する。
【００４７】
Ｓ１０２では、入力したファイル名において「ＩＰＬ部の位置情報」と「書換可能部の位置情報」とを取り込む。即ち、ファイル名をファイルデータ４１の中から検索して、「ＩＰＬ部の位置情報」と「書換可能部の位置情報」とを取得する。
【００４８】
Ｓ１０３では、「ＩＰＬ部の位置情報」をファイルハンドル３７へ保存する。即ち、Ｓ１０２で取り込んだ「ＩＰＬ部の位置情報」をファイルハンドル３７の「そのファイル名が持つ情報のＩＰＬ部の先頭アドレス」へ保存する。
【００４９】
Ｓ１０４では、「書換可能部の位置情報」をファイルハンドル３７へ保存する。即ち、Ｓ１０２で取り込んだ「書換可能部の位置情報」をファイルハンドル３７の「そのファイル名が持つ情報の書換可能部の先頭アドレス」へ保存する。
【００５０】
Ｓ１０５では、現在の読込位置情報としての「現在のファイル読込位置」を先頭にする。即ち、「そのファイル名が持つ情報のＩＰＬ部の先頭アドレス」と「現在のファイル読込位置」との間におけるアドレスに換算した相対距離が設定される。以上の処理により、オープン処理が実行されてファイルが開かれる。
【００５１】
次に、ＲＯＭモジュール３３が実行するリード処理を図９に示すフローチャートに従って説明する。なお、リード処理では読込データを格納する場所と、読込サイズと、オープン処理で生成されたファイルハンドル３７とを入力している。
【００５２】
Ｓ２００では、ファイルハンドル３７を読み込む。即ち、ファイルハンドル３７から「そのファイル名が持つ情報のＩＰＬ部の先頭アドレス」と、「そのファイル名が持つ情報の書換可能部の先頭アドレス」と、「現在のファイル読込位置」とを読み込む。
【００５３】
Ｓ２０１では、読み込むべきアドレスを設定する。即ち、「そのファイル名が持つ情報のＩＰＬ部の先頭アドレス」と「現在のファイル読込位置」とを加算し、その加算値を「読み込むべきアドレス」として設定する。
【００５４】
Ｓ２０２では、格納データＸを格納する。即ち、リード処理時には読込サイズを入力しており、Ｓ２０１で設定した「読み込むべきアドレス」から「読込サイズ」だけ、格納データＸとして読込バッファ４４（図３参照）へ格納する。
【００５５】
Ｓ２０３では、ファイルハンドル３７の「そのファイル名が持つ情報の書換可能部の先頭アドレス」に基づき、書換可能部３９に記憶された差替情報４２のアドレスを取得する。
【００５６】
Ｓ２０４では、書換可能部３９の内容を反映するためにファイルハンドル３７から反映させるべき該当箇所を検索する。即ち、図５に示す変更開始位置、変更サイズ、変更内容が記憶されたテーブルを参照して、反映させるべき該当箇所を検索していく。
【００５７】
Ｓ２０５では、該当箇所が有るか否かを判断する。該当する箇所があればＳ２０６に進み、該当する箇所がなければこのルーチンを終了する。
Ｓ２０６では、差替情報４２の内容を反映する。即ち、差替情報４２を構成する変更情報４３において「変更内容」の情報を「変更開始位置」から「変更サイズ」の範囲を反映させて、格納データＸを変更内容に差し替える。
【００５８】
ここで、プリンタ出荷時（即ち、ＩＰＬ部３８のデータ書込み時）には、差替情報４２に「ＩＰＬ部３８のファイルデータ４１と差異なし」という情報が記憶される。よって、予めフラッシュＲＯＭ２０に記憶されたファイルデータ４１に不具合が生じていない場合には、「ＩＰＬ部３８のファイルデータ４１と差異なし」という情報が反映されてファイルデータ４１の各ファイルがそのまま使用される。
【００５９】
一方、ＩＰＬ部３８のファイルデータ４１に不具合や、書き換えたいという要望が生じた場合には、Loader４０が起動して差替情報４２に「ＩＰＬ部３８のファイルデータ４１のうち所定部分をこの情報に差し替える」という情報が書き込まれる。図５に示す差替情報４２では複数の変更情報４３が書き込まれており、ファイルデータ４１を差し替える際には変更情報４３の個数分だけ変更が加えられる。
【００６０】
差替情報４２が書き込まれた後にリード処理が実行されると、ＲＯＭモジュール３３はＩＰＬ部３８のファイルデータ４１と、書換可能部３９の差替情報４２（変更情報４３）とを読み込む。そして、ＲＯＭモジュール３３は差替情報４２に書き込まれた操作、つまり「読み込むべきアドレス」から「読込サイズ」だけ読み込まれた格納データＸを変更情報４３の変更内容に各々差し替える。さらに、ＲＯＭモジュール３３はＩＰＬ部３８に記憶されたファイルのうち、不具合部分を差替情報４２に差し替えたファイルＤを取り込み、アプリケーション２８はそのファイルＤを受け取ってファイル読み込みを実行する。
【００６１】
次に、ＲＯＭモジュール３３が実行するシーク処理を図１０に示すフローチャートに従って説明する。なお、シーク処理では移動する位置と、オープン処理時に生成されたファイルハンドル３７と、ファイルの読込位置を移動する際の基準点（先頭、終端、任意（今の位置））とを入力している。
【００６２】
Ｓ３００では、基準点が「先頭」であるか否かを判断する。基準点が「先頭」であればＳ３０１に進み、「先頭」でなければＳ３０２に進む。
Ｓ３０１では、「移動する位置」を「現在のファイル読込位置」として設定する。即ち、基準点が「先頭」である場合には「移動する位置」がそのまま「現在のファイル読込位置」となる。
【００６３】
Ｓ３０２では、基準点が「終端」であるか否かを判断する。基準点が「終端」であればＳ３０３に進み、「終端」でなければＳ３０４に進む。
Ｓ３０３では、ファイルハンドル３７の「ファイルサイズ」から「移動する位置」を減算して、その減算値を「現在のファイル読込位置」として設定する。
【００６４】
Ｓ３０４では、基準点が「今の位置」であるか否かを判断する。基準点が「今の位置」であればＳ３０５に進み、「今の位置」でなければこのルーチンを終了する。
【００６５】
Ｓ３０５では、ファイルハンドル３７の「現在のファイル読込位置」と「移動する位置」とを加算して、その加算値を新たな「現在のファイル読込位置」として設定する。よって、シーク処理が実行されるとファイルハンドル３７の「現在のファイル読込位置」が変化し、ファイル読込位置が移動する。そして、ファイルデータ４１を差し替える場合にシーク処理を実行すれば、移動したファイル読込位置に基づく格納データＸが差替情報４２に差し替えられ、アプリケーション２８は差替情報４２に差し替えられたファイルＤを読み込む。
【００６６】
ここで、ＲＯＭモジュール３３はライト処理を行うべき指令信号を入力したとき、エラー信号をアプリケーション２８に出力してライト処理を実行させない。また、ＲＯＭモジュール３３はクローズ処理を行うべき指令信号を入力したとき、その指令信号に基づきクローズ処理を実行して開状態となったファイルを閉じる。
【００６７】
ところで、本例のフラッシュＲＯＭ２０では書換可能部３９に記憶されるデータ量の最小化を狙って、ＩＰＬ部３８にファイルデータ４１を記憶している。しかし、ファイルデータ４１の各ファイルにデータ内容として「書換可能部の位置情報」を持たせ、ファイルに不具合が生じた場合には、その不具合部分を読込バッファ４４に一旦格納して差替情報４２と差し替える。従って、ＩＰＬ部３８にファイルデータ４１を記憶した構成であっても、不具合部分が差替情報４２に差し替えられ、実質的にファイルデータ４１の修正が行える。
【００６８】
従って、この実施形態では以下の効果を得ることができる。
（１）フラッシュＲＯＭ２０のＩＰＬ部３８にファイルデータ４１を記憶しておき、そのファイルデータ４１（即ち、各ファイル）に不具合が生じた場合には、不具合部分はフラッシュＲＯＭ２０の書換可能部３９に記憶された差替情報４２に差し替えられる。従って、書き換え不可能なＩＰＬ部３８にファイルデータ４１を記憶しても、ファイルデータ４１に不具合が生じたときには差替情報４２によってファイルデータ４１を修正することができる。
【００６９】
（２）ファイルデータ４１をフラッシュＲＯＭ２０のＩＰＬ部３８に記憶しておくので、フラッシュＲＯＭ２０の書換可能部３９に記憶しておくデータ量を最小化することができ、書換可能部３９の格納領域を有効利用することができる。
【００７０】
（３）ファイルデータ４１の不具合部分を差替情報４２に差し替える処理は、アプリケーション２８からの指令に基づきＲＯＭモジュール３３が実行している。従って、アプリケーション２８はＩＰＬ部３８のファイルデータ４１に書換可能部３９の差替情報４２を反映させる操作を意識することなしに、修正後のファイルＤを読み込むことができる。
【００７１】
（４）差替情報４２はフラッシュＲＯＭ２０の書換可能部３９に記憶されているので、ファイルデータ４１に不具合が生じた際には、その都度、新規の差替情報４２でファイルデータ４１を修正することができる。
【００７２】
（第２実施形態）
次に、第２実施形態を図１１に従って説明する。この実施形態ではファイルデータ４１の記憶先がマスクＲＯＭ１９である点が第１実施形態と異なっており、他の基本的な構成は同じであるので、同一部分には同一符号を付して詳しい説明は省略し、異なる部分についてのみ説明する。
【００７３】
図１１は、プリンタ１のソフトウェアを概念的に示す構成図である。ＲＯＭモジュール３３には第１の記憶領域としてのマスクＲＯＭ１９と第２の記憶領域としてのフラッシュＲＯＭ２０が接続され、ＲＯＭモジュール３３はマスクＲＯＭ１９およびフラッシュＲＯＭ２０のデータ内容を処理してファイルシステムとして動作する。マスクＲＯＭ１９にはLoader４０とファイルデータ４１が記憶され、フラッシュＲＯＭ２０にはアプリケーション２８、セレクタ２９、モジュール３０〜３３、差替情報４２（全て図６参照）が記憶されている。
【００７４】
ところで、マスクＲＯＭ１９のファイルデータ４１に不具合や、書き換えたいという要望が生じた場合には、Loader４０が起動してフラッシュＲＯＭ２０の差替情報４２に「マスクＲＯＭ１９のファイルデータ４１のうち所定部分をこの情報に差し替える」という情報が書き込まれる。そして、差替情報４２が書き込まれた後にリード処理が実行されると、ＲＯＭモジュール３３はマスクＲＯＭ１９のファイルデータ４１と、フラッシュＲＯＭ２０の差替情報４２（変更情報４３）とを読み込む。
【００７５】
続いて、ファイルデータ４１と差替情報４２との読み込み後、ＲＯＭモジュール３３はマスクＲＯＭ１９に記憶されたファイルのうち、不具合部分を差替情報４２の変更内容に各々差し替える。そして、ＲＯＭモジュール３３はマスクＲＯＭ１９のファイルのうち不具合部分をフラッシュＲＯＭ２０の差替情報４２に差し替えたファイルＤを取り込み、アプリケーション２８はそのファイルＤを受け取ってファイル読み込みを実行する。
【００７６】
従来技術でも述べたように、フラッシュＲＯＭ２０はマスクＲＯＭ１９に比べて高価であるので、メモリ容量の小さい安価なものを使用したい現状がある。また、ソフトウェアの書換え時には書換え前よりも修正が加わる分だけデータ容量が大きくなるため、フラッシュＲＯＭ２０に記憶しておくソフトウェアは最小化しておきたい現状もある。本例では、これらの要望を満たすためにマスクＲＯＭ１９にファイルデータ４１を記憶する構成としているが、ファイルデータ４１の不具合部分をフラッシュＲＯＭ２０の差替情報４２に差替可能としたので、実質的にファイルデータ４１の修正が行える。
【００７７】
この構成では第１実施形態の（１）〜（４）と同様な効果が得られる他に、次の効果が得られる。
（５）フラッシュＲＯＭ２０はマスクＲＯＭ１９に比べて高価であるため、メモリ容量をなるべく抑えて安価なものを用いたい現状がある。本例では安価に手に入るマスクＲＯＭ１９にファイルデータ４１を記憶しておくので、フラッシュＲＯＭ２０のメモリ容量は比較的小さくて済み、フラッシュＲＯＭ２０にかかるコストを低く抑えることができる。
【００７８】
（第３実施形態）
次に、第３実施形態を図１２に従って説明する。この実施形態では２つのＣＰＵを用いた構成である点が第１及び第２実施形態と異なっており、異なる部分についてのみ説明する。
【００７９】
図１２は、プリンタ１のソフトウェアを概念的に示す構成図である。プリンタ１はＣＰＵ１８（図２参照）の他にもう一つＣＰＵ５１を備え、本例では例えばＣＰＵ１８がモニタ１４を制御し、ＣＰＵ５１が印刷処理部２６を制御している。ＲＯＭモジュール３３とＣＰＵ５１とは通信モジュール５２を介して接続され、ＣＰＵ５１にはマスクＲＯＭ５３が接続されている。マスクＲＯＭにはデータ容量の関係上、フラッシュＲＯＭ２０に記憶できなかったファイルデータ４１が記憶されている。
【００８０】
ＲＯＭモジュール３３はＣＰＵ５１および通信モジュール５２を介して第１の記憶領域としてのマスクＲＯＭ５３のファイルデータ４１を読み込むことが可能であり、フラッシュＲＯＭ２０およびマスクＲＯＭ５３のデータ内容を処理してファイルシステムとして動作する。ＲＯＭモジュール３３とマスクＲＯＭ５３を通信可能としておけば、フラッシュＲＯＭ２０の記憶領域に空きがなくなったとき、マスクＲＯＭ５３にファイルデータ４１を記憶しておくことで、フラッシュＲＯＭ２０をデータ容量の大きいものに変えることなく対応が図れる。
【００８１】
そして、フラッシュＲＯＭ２０のＩＰＬ部３８に記憶されたファイルデータ４１や、マスクＲＯＭ５３に記憶されたファイルデータ４１に不具合が生じた場合、ＲＯＭモジュール３３はその不具合部分をフラッシュＲＯＭの書換可能部３９に書き込まれた差替情報４２に差し替える。そして、ＲＯＭモジュール３３はマスクＲＯＭ１９，５３のファイルのうち、不具合部分をフラッシュＲＯＭ２０の差替情報４２に差し替えたファイルＤを取り込み、アプリケーション２８はそのファイルＤを受け取ってファイル読み込みを実行する。
【００８２】
この構成では前記第１及び第２実施形態の（１）〜（５）と同様な効果が得られる他に、次の効果が得られる。
（６）プリンタ１が２つのＣＰＵ１８，５１を有する構成において、ＣＰＵ１８により生成されるＲＯＭモジュール３３は通信モジュール５２を介してＣＰＵ５１側のマスクＲＯＭ５３と通信可能である。従って、マスクＲＯＭ５３に格納領域が余っていれば、その部分にデータを書き込めばＣＰＵ１８側のフラッシュＲＯＭ２０をメモリ容量の大きいものに変更せずに済む。
【００８３】
なお、実施形態は前記に限定されず、以下の態様に変更してもよい。
（変形例１）前記各実施形態において、ファイルデータ４１に修正を加える場合にファイルの不具合部分を差替情報４２に差し替える構成に限定されない。例えば、ファイルデータ４１のファイルに差替情報として付加情報を付加して一つのファイルＤとしてもよい。
【００８４】
（変形例２）前記各実施形態において、ファイルデータ４１に修正を加える場合、ファイルハンドル３７の「現在のファイル読込位置」から決まる部分を差替情報４２に差し替えて、ファイルの一部を修正する構成に限定されない。即ち、ファイルに不具合が生じたときには、ファイル全体を差替情報４２に差し替えるようにしてもよい。
【００８５】
（変形例３）前記各実施形態において、既存情報（ファイルデータ４１）の不具合部分を差替情報４２に差し替える処理は、ＲＯＭモジュール３３のみが行うことに限定されない。例えば、図３に示す各モジュール３０〜３２がメモリーカード９に記憶された所定データを差替情報４２に差し替える処理を実行してもよい。
【００８６】
（変形例４）前記各実施形態において、フラッシュＲＯＭ２０のＩＰＬ部３８やマスクＲＯＭ１９，５３に予め格納された既存情報はデフォルト情報に限定されず、例えばフラッシュＲＯＭ２０の書換可能部３９に新たに書き加えられた書込情報でもよい。また、デフォルト情報はファイルデータ４１に限定されず、例えば印刷データや画像データのプリントレイアウトに関するレイアウト情報や、プリンタ１を起動した際にモニタ１４に表示されるロゴマークの画像情報でもよい。
【００８７】
（変形例５）前記各実施形態において、既存情報であるファイルデータ４１は書き換え不可能なフラッシュＲＯＭ２０のＩＰＬ部３８やマスクＲＯＭ１９，５３に記憶されることに限定されない。例えば、ファイルデータ４１は書き換え可能なフラッシュＲＯＭの書換可能部３９に記憶されてもよく、書換可能部３９に記憶されたファイルデータ４１の不具合部分を差替情報４２に差し替えてもよい。
【００８８】
（変形例６）前記各実施形態において、差替情報４２はフラッシュＲＯＭ２０の書換可能部３９に記憶されることに限定されない。例えば、予めフラッシュＲＯＭ２０のＩＰＬ部３８に差替情報４２を記憶しておき、ファイルデータ４１に不具合が生じたときには不具合部分を差替情報４２に差し替えるようにしてもよい。
【００８９】
（変形例７）前記各実施形態において、既存情報としてのソフトウェアはファイルデータ４１に限定されず、例えばプログラム等であってもよい。
（変形例８）前記各実施形態において、予め載せられた既存情報（ファイルデータ４１）を差替情報４２に差し替える処理はプリンタ１に採用されることに限定されない。例えば、パソコンや計算機など、ＣＰＵ、ＲＯＭ（フラッシュＲＯＭを含む）、ＲＡＭを備えたシステムであれば、その採用対象は特に限定されない。
【００９０】
前記実施形態及び別例から把握できる技術的思想について、以下にその効果とともに記載する。
（１）請求項１〜８において、前記第１の記憶領域は書き換え不可能な第１の記憶手段（１９，５３）である。
【００９１】
（２）請求項１〜８において、前記第２の記憶領域は書き換え可能な第２の記憶手段（２０）である。
（３）請求項１〜８において、互いに通信可能である２つのＣＰＵ（１８，５１）を備え、前記制御手段は２つの前記ＣＰＵ（１８，５１）のうち第１のＣＰＵ（１８）により作動する構成であって、前記第１の記憶領域は第２のＣＰＵ（５１）のメモリとして機能し、前記制御手段は前記第２のＣＰＵを介して前記第１の記憶手段に格納された前記既存情報を取り込む。
【００９２】
（４）請求項１〜８において、前記既存情報には当該既存情報の前記第１の記憶領域における位置情報が記憶された構成であって、前記制御手段は前記位置情報と現在の読込位置情報とを基に前記第１の記憶領域における読み込むべきアドレスを設定し、前記読み込むべきアドレスから所定サイズだけ格納データを読み込み、その部分に前記差替情報を取り込むことにより前記既存情報を前記差替情報に差し替える。
【００９３】
（５）請求項１０において、前記制御手段は、前記既存情報の少なくとも一部を前記差替情情報に差し替えて、一つの情報単位として前記記憶情報を生成する。
（６）請求項１０、前記技術的思想（５）において、前記既存情報には当該既存情報が前記第２の記憶領域のどの部分に対応しているかを示す位置情報が格納され、前記制御手段は前記第２の記憶領域において前記位置情報により決まる部分を前記差替情報として取り込んで、前記既存情報の少なくとも一部を前記差替情報に差し替える。
【００９４】
（７）請求項１０、前記技術的思想（５），（６）において、前記既存情報は一つの独立した情報単位であり、前記既存情報には当該既存情報の前記第１の記憶領域における位置情報が記憶された構成であって、前記制御手段は前記位置情報と現在の読込位置情報とを基に前記第１の記憶領域における読み込むべきアドレスを設定し、前記読み込むべきアドレスから所定サイズだけ格納データを読み込み、その部分に前記差替情報を取り込むことにより前記既存情報の一部を前記差替情報に差し替える。
【００９５】
（８）請求項１０、前記技術的思想（５）〜（７）において、前記制御手段はプログラムを機能単位で分割したときの構成単位となるモジュールであり、前記モジュールはアプリケーションからの指令に基づき、前記既存情報と前記差替情報とを用いて一つの情報単位として前記記憶情報を生成し、当該記憶情報を前記アプリケーションに返信する。
【００９６】
（９）請求項１０、前記技術的思想（５）〜（８）において、前記既存情報は、前記情報処理装置を製品化するときに予め載せられるデフォルト情報である。（１０）請求項１０、前記技術的思想（５）〜（９）において、前記第１の記憶領域は書き換え不可能な読取専用であり、前記既存情報は読取専用の前記第１の記憶領域に格納されている。
【００９７】
（１１）請求項１０、前記技術的思想（５）〜（１０）において、前記第２の記憶領域は書き換え可能であり、前記差替情報は前記第２の記憶領域を書き換えることで前記第２の記憶領域に格納される。
【００９８】
【発明の効果】
以上詳述したように本発明によれば、第１の記憶領域に予め格納された既存情報に、後発的に差し替えの必要が生じても、第２の記憶領域に格納する差替情報に基づき、既存情報のうち差し替えが必要になった一部を差し替えることで対応でき、かつ第２の記憶領域において差替情報に必要な格納領域を少なく済ませられる。
【図面の簡単な説明】
【図１】第１実施形態におけるプリンタの斜視図。
【図２】プリンタの電気的構成図。
【図３】プリンタのソフトウェアを概念的に示す構成図。
【図４】ファイルハンドルの持つ情報を示す構成図。
【図５】フラッシュＲＯＭに記憶された差替情報のメモリマップ。
【図６】フラッシュＲＯＭのメモリマップ。
【図７】ファイルデータのデータ内容を示す構成図。
【図８】ファイルのオープン（Open）処理時に実行されるフローチャート。
【図９】ファイルのリード（Read）処理時に実行されるフローチャート。
【図１０】ファイルのシーク（Seek）処理時に実行されるフローチャート。
【図１１】第２実施形態におけるプリンタのソフトウェアを概念的に示す構成図。
【図１２】第３実施形態におけるプリンタのソフトウェアを概念的に示す構成図。
【符号の説明】
１  印刷装置としてのプリンタ
６  印刷媒体としての用紙
１９  第１の記憶領域としてのマスクＲＯＭ
２０  第２の記憶領域としてのフラッシュＲＯＭ
２６  印刷機構としての印刷処理部
２８  アプリケーション
３３  制御手段及びモジュールを構成するＲＯＭモジュール
３８  第１の記憶領域としてのＩＰＬ部
３９  第２の記憶領域としての書換可能部
４１  既存情報としてのファイルデータ
４２  差異情報としての差替情報
５３  第１の記憶領域としてのマスクＲＯＭ
Ｄ  記憶情報としてのファイル
Ｘ  格納データ
【図１】
0004032769.tif 000002
【図２】
0004032769.tif 000003
【図３】
0004032769.tif 000004
【図４】
0004032769.tif 000005
【図５】
0004032769.tif 000006
【図６】
0004032769.tif 000007
【図７】
0004032769.tif 000008
【図８】
0004032769.tif 000009
【図９】
0004032769.tif 000010
【図１０】
0004032769.tif 000011
【図１１】
0004032769.tif 000012
【図１２】
0004032769.tif 000013