(57)【特許請求の範囲】
【請求項１】
外部メモリ装置を装着する複数のスロットを有する外部メモリ装置用アドレス制御装置において、
スロット数に等しいかそれ以上の仮想スロット用のアドレス空間を有し、
外部メモリ装置は、アドレスに依存するデータか否かの情報を格納する手段と、仮想スロットの特定のためのアドレス情報を格納する手段と、を有し、
最初に、アドレスに依存するデータが格納された外部メモリ装置が装着されたスロットに対し、該外部メモリ装置内に格納された仮想スロットのアドレス情報に従って、該外部メモリ装置が差されたスロットのアドレスを割り付け、次に、アドレスに依存しないデータが格納された外部メモリ装置が装着されたスロットに対し、任意の空き仮想スロットのアドレスを割り付けることを特徴とする外部メモリ装置用アドレス制御装置。
【請求項２】
外部メモリ装置を装着する複数のスロットを有し、書き込み可能な不揮発性メモリからなる外部メモリ装置に対し読み書きが可能な外部メモリ装置用アドレス制御装置において、
スロット数に等しいかそれ以上の仮想スロット用のアドレス空間を有し、
外部メモリ装置は、初期状態の不揮発性メモリが装着されているか否かを認識する手段と、仮想スロットの特定のためのアドレス情報を格納する手段と、を有し、
最初に、アドレスに依存するデータが格納された外部メモリ装置が装着されたスロットに対し、該外部メモリ装置内に格納された仮想スロットのアドレス情報に従って、該外部メモリ装置が差されたスロットのアドレスを割り付け、次に、初期状態の不揮発性メモリからなる外部メモリ装置が装着されたスロットに対し、任意の空き仮想スロットのアドレスを割り付けるとともに、割り付けたアドレス情報を不揮発性メモリの所定の位置に書き込むことを特徴とする外部メモリ装置用アドレス制御装置。
【請求項３】
外部メモリ装置を装着する複数のスロットを有し、書き込み可能な不揮発性メモリからなる外部メモリ装置に対し読み書きが可能な外部メモリ装置用アドレス制御装置において、
不揮発性メモリにアドレスに依存するプログラムを書き込む際に、該不揮発性メモリが装着されているスロットのアドレス情報と、上記プログラムのアドレスを変更するための情報とを書き込み、
不揮発性メモリに書かれたアドレス情報と、該不揮発性メモリが装着されているスロットのアドレスとが異なる場合、該不揮発性メモリに書かれた、プログラムのアドレスを変更するための情報を用いて、該不揮発性メモリ内のプログラムのアドレスを書き換えるとともに、該不揮発性メモリに書かれたアドレス情報を該不揮発性メモリが装着されているスロットのアドレスに従って書き換えることを特徴とする外部メモリ装置用アドレス制御装置。
【請求項４】
外部メモリ装置を装着する複数のスロットを有する外部メモリ装置用アドレス制御装置において、
スロット数に等しいかそれ以上の仮想スロット用アドレス空間を有し、
外部メモリ装置は、仮想スロットの特定のためのアドレス情報を格納する手段と、外部メモリ装置のバンク番号を格納する手段と、を有し、
外部メモリ装置内に格納された仮想スロットのアドレス情報に従って、該外部メモリ装置が差されたスロットのアドレスを割り付ける際に、複数のスロットから同一の仮想スロット空間アドレスの割り付けを要求された場合、それらの全てのスロットに指定アドレスを割り付け、前記バンク番号を各スロット毎に保持し、本体プログラムによるバンク切り換え命令によって、同一アドレスに割り付けられた複数のスロットの切り換えを行うことを特徴とする外部メモリ装置用アドレス制御装置。
【請求項５】
外部メモリ装置を装着する複数のスロットに対してスロット空間アドレスを割り当てる制御装置であって、
複数のスロットのうちの１つに装着された外部メモリ装置に格納された属性情報を獲得する獲得手段と、
前記属性情報に基づいて、アドレスに依存するデータが格納された外部メモリ装置であるかを判定する判定手段と、
アドレスに依存するデータが格納された外部メモリ装置であれば、該外部メモリ装置によって指定されたスロット空間アドレスを、該外部メモリ装置が装着されたスロットに割り当て、アドレスに依存するデータが格納された外部メモリ装置でなければ、任意のスロット空間アドレスを、該外部メモリ装置が装着されたスロットに割り当てるアドレス割当手段とを有することを特徴とする制御装置。
【請求項６】
外部メモリ装置を装着する複数のスロットを有する外部メモリ装置用アドレス制御装置で行われるアドレス制御方法において、
スロット数に等しいかそれ以上の仮想スロット用のアドレス空間を有し、
外部メモリ装置は、アドレスに依存するデータか否かの情報を格納する手段と、仮想スロットの特定のためのアドレス情報を格納する手段と、を有し、
最初に、アドレスに依存するデータが格納された外部メモリ装置が装着されたスロットに対し、該外部メモリ装置内に格納された仮想スロットのアドレス情報に従って、該外部メモリ装置が差されたスロットのアドレスを割り付け、次に、アドレスに依存しないデータが格納された外部メモリ装置が装着されたスロットに対し、任意の空き仮想スロットのアドレスを割り付けることを特徴とするアドレス制御方法。
【請求項７】
外部メモリ装置を装着する複数のスロットを有し、書き込み可能な不揮発性メモリからなる外部メモリ装置に対し読み書きが可能な外部メモリ装置用アドレス制御装置で行われるアドレス制御方法において、
スロット数に等しいかそれ以上の仮想スロット用のアドレス空間を有し、
外部メモリ装置は、初期状態の不揮発性メモリが装着されているか否かを認識する手段と、仮想スロットの特定のためのアドレス情報を格納する手段と、を有し、
最初に、アドレスに依存するデータが格納された外部メモリ装置が装着されたスロットに対し、該外部メモリ装置内に格納された仮想スロットのアドレス情報に従って、該外部メモリ装置が差されたスロットのアドレスを割り付け、次に、初期状態の不揮発性メモリからなる外部メモリ装置が装着されたスロットに対し、任意の空き仮想スロットのアドレスを割り付けるとともに、割り付けたアドレス情報を不揮発性メモリの所定の位置に書き込むことを特徴とするアドレス制御方法。
【請求項８】
外部メモリ装置を装着する複数のスロットを有し、書き込み可能な不揮発性メモリからなる外部メモリ装置に対し読み書きが可能な外部メモリ装置用アドレス制御装置で行われるアドレス制御方法において、
不揮発性メモリにアドレスに依存するプログラムを書き込む際に、該不揮発性メモリが装着されているスロットのアドレス情報と、上記プログラムのアドレスを変更するための情報とを書き込み、
不揮発性メモリに書かれたアドレス情報と、該不揮発性メモリが装着されているスロットのアドレスとが異なる場合、該不揮発性メモリに書かれた、プログラムのアドレスを変更するための情報を用いて、該不揮発性メモリ内のプログラムのアドレスを書き換えるとともに、該不揮発性メモリに書かれたアドレス情報を該不揮発性メモリが装着されているスロットのアドレスに従って書き換えることを特徴とするアドレス制御方法。
【請求項９】
外部メモリ装置を装着する複数のスロットを有する外部メモリ装置用アドレス制御装置で行われるアドレス制御方法において、
スロット数に等しいかそれ以上の仮想スロット用アドレス空間を有し、
外部メモリ装置は、仮想スロットの特定のためのアドレス情報を格納する手段と、外部メモリ装置のバンク番号を格納する手段と、を有し、
外部メモリ装置内に格納された仮想スロットのアドレス情報に従って、該外部メモリ装置が差されたスロットのアドレスを割り付ける際に、複数のスロットから同一の仮想スロット空間アドレスの割り付けを要求された場合、それらの全てのスロットに指定アドレスを割り付け、前記バンク番号を各スロット毎に保持し、本体プログラムによるバンク切り換え命令によって、同一アドレスに割り付けられた複数のスロットの切り換えを行うことを特徴とするアドレス制御方法。
【請求項１０】
外部メモリ装置を装着する複数のスロットに対してスロット空間アドレスを割り当てる制御装置で行われるアドレス制御方法であって、
複数のスロットのうちの１つに装着された外部メモリ装置に格納された属性情報を獲得する獲得ステップと、
前記属性情報に基づいて、アドレスに依存するデータが格納された外部メモリ装置であるかを判定する判定ステップと、
アドレスに依存するデータが格納された外部メモリ装置であれば、該外部メモリ装置によって指定されたスロット空間アドレスを、該外部メモリ装置が装着されたスロットに割り当て、アドレスに依存するデータが格納された外部メモリ装置でなければ、任意のスロット空間アドレスを、該外部メモリ装置が装着されたスロットに割り当てるアドレス割当ステップとを有することを特徴とするアドレス制御方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、レーザビームプリンタをはじめとする印刷装置等の制御装置に使用される外部メモリのアドレスを制御する外部メモリ用アドレス制御装置およびアドレス制御方法に関する。
【０００２】
【従来の技術】
従来、外部メモリ装置に対するアドレスは固定の絶対アドレスが割り付けられていた。しかしながら、外部メモリ装置のスロットが複数ある場合、個々に絶対アドレスを割り付けると、外部メモリ装置にアドレスに依存するプログラム等を格納する場合、特定のスロットにしか差せなくなるという問題点があった。
【０００３】
【発明が解決しようとする課題】
これを解決する方法として、１）バンク切り換えを行う方法、２）ＰＩＣ（Ｐｏｓｉｔｉｏｎ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｃｏｄｉｎｇ）及びＰＩＤ（Ｐｏｓｉｔｉｏｎ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄａｔａ）を使用する方法、等が提案されている。
【０００４】
まず、１）のバンク切り換えを行う方法は、外部メモリ装置用の複数のスロットに対し、全て同一のアドレスを割り付け、本体プログラムからアクセスする際にバンクを切り換えることによって、所望のスロットを選択する方法である。この方法によれば、どのスロットに差そうと、外部メモリ装置に割り付けられる先頭アドレスは同一であるため、アドレスに依存するプログラム等であってもスロットを選ばないで差すことができる。
【０００５】
しかしながら、この方法では、複数のスロットに差された複数の外部メモリのデータに対して本体プログラムが交互にアクセスする場合など、バンクを頻繁に切り換える必要があるという問題点がある。さらに、片方のスロットに差されたプログラム等がもう一方のスロットに差されたフォント等のデータをアクセスするといった場合、この方法では実現できないという問題点もある。
【０００６】
次に、２）のＰＩＣおよびＰＩＤを用いる方法であるが、ＰＩＣは、プログラムのコンパイル時に、プログラム内でのアドレス指定を絶対アドレス指定ではなく現在のアドレスからの相対アドレス指定にすることにより、絶対アドレスを意識しないプログラムにする方法であり、ＰＩＤは、データとして書かれるアドレスを外部メモリ装置先頭からの相対アドレスで指定し、特定のレジスタに外部メモリ装置先頭アドレスをプログラム実行時に設定することにより、データ内のアドレスの絶対アドレスを獲得する方法である。
【０００７】
これらの方法によれば、プログラム自体は絶対アドレスを意識しないので、外部メモリ装置がどのアドレスのスロットに差されても問題なく動作するし、データについては、本体プログラムから外部メモリ内のプログラムを起動する際に所定のレジスタに外部メモリ装置のスロットの先頭アドレスを設定することで、どのスロットに差されても絶対アドレスを獲得することができる訳である。
【０００８】
しかしながら、これらの方法では本体プログラムから直接外部メモリ内データにアクセスすることが難しいという問題点がある。なぜなら、本体にあるデータ内アドレスは絶対アドレス表記されていないため、本体プログラムはデータアクセス時に、いちいちどのスロットのデータにアクセス中かを意識しながら、相対アドレスとして意識したり、絶対アドレスとして意識したりするようにしなければならないからである。同様に、外部メモリ内のプログラムが本体にあるデータや別のスロットに差されたデータに対してアクセスする際にも、問題が生ずる。さらに、相対アドレス指定では、絶対アドレスを獲得するために必ず１ステップ、余計なコーディングが必要になりパフォーマンス劣化の原因になる。また、ＰＩＣおよびＰＩＤはコンパイラの機能なので、この機能を有さないコンパイラでは、この方法は使用できないという問題点もあった。
【０００９】
【課題を解決するための手段】
本発明は、上記課題を解決するためになされたもので、バンク切り換えやＰＩＣおよびＰＩＤの機能を使用せずに、アドレスに依存するデータが格納された外部メモリ装置が複数スロットのいずれのスロットに差されても正常に動作するようにした外部メモリ装置用アドレス制御装置およびアドレス制御方法を提供することを第一の目的とする。
また、外部メモリ装置毎に仮想スロットを割り付ける場合、十分に仮想スロット数を確保しないと、仮想スロットが足りなくなる危険性がある。ところが、外部メモリ装置に格納されるデータ中にはファントデータ等のようにアドレス情報が入っていないアドレスに依存しない情報も存在する。
そこで、本発明の第２の目的は、アドレスに依存しないデータが格納された外部メモリ装置に対する仮想スロットの無駄使いを防ぐことである。
また、外部メモリ装置が初期状態の書き込み可能な不揮発性メモリ（例えば、フラッシュＰＲＯＭ）の場合も、まだアドレスに依存するデータを書き込む前なので、特定の仮想スロットを割り付ける必要はない。
そこで、本発明の第３の目的は、初期状態の書き込み可能な不揮発性メモリからなる外部メモリ装置に対する仮想スロットの無駄使いを防ぐことにある。
また、外部メモリ装置が書き込み可能な不揮発性メモリである場合、アドレスに依存するプログラム等が格納されていても、プログラムのアドレス書き換え情報等があれば、一旦ＲＡＭ上に読み出してアドレスを書き換え、また不揮発性メモリに書き込むことで、スロットのアドレスの不一致を修復することが可能である。
そこで、本発明の第４の目的は、異なるアドレスのスロットに挿入されたプログラムのアドレスを書き換えて、修復し、新しいスロットアドレスで使用可能とすることである。
さらに、仮想スロット空間の配分がどうしても足りなくなった場合、基本的にはバッティングしない外部メモリ装置同士（例えば、同一プログラムのバージョンアップ版）に同一の仮想スロットを配分することになるが、異なるスロットにこれら同一の仮想スロットを配分された外部メモリ装置が装着される危険性は回避できない。
そこで、本発明の第５の目的は、異なるスロットに同一の仮想スロットを配分された外部メモリ装置が装着された場合、優先度の高い外部メモリ装置が装着されたスロットを有効にし、優先度の低い外部メモリ装置が装着されたスロットを無効にすることである。
また、それでも仮想スロット空間の配分が足りなくなった場合、異なるスロットに同一の仮想スロットを配分された外部メモリ装置が装着されることになり、優先順位ではどちらかが無効になってしまう。
そこで、本発明の第６の目的は、異なるスロットに同一の仮想スロットを配分された外部メモリが装着された場合でも、両方の外部メモリ装置にアクセスすることを可能にすることである。
【００１０】
上記目的を達成するために、本発明は、外部メモリ装置を装着する複数のスロットを有する外部メモリ装置用アドレス制御装置において、スロット数に等しいかそれ以上の仮想スロット用のアドレス空間を有し、外部メモリ装置は、アドレスに依存するデータか否かの情報を格納する手段と、仮想スロットの特定のためのアドレス情報を格納する手段と、を有し、最初に、アドレスに依存するデータが格納された外部メモリ装置が装着されたスロットに対し、該外部メモリ装置内に格納された仮想スロットのアドレス情報に従って、該外部メモリ装置が差されたスロットのアドレスを割り付け、次に、アドレスに依存しないデータが格納された外部メモリ装置が装着されたスロットに対し、任意の空き仮想スロットのアドレスを割り付けることを特徴とする。
本発明は、外部メモリ装置を装着する複数のスロットを有し、書き込み可能な不揮発性メモリからなる外部メモリ装置に対し読み書きが可能な外部メモリ装置用アドレス制御装置において、スロット数に等しいかそれ以上の仮想スロット用のアドレス空間を有し、外部メモリ装置は、初期状態の不揮発性メモリが装着されているか否かを認識する手段と、仮想スロットの特定のためのアドレス情報を格納する手段と、を有し、最初に、アドレスに依存するデータが格納された外部メモリ装置が装着されたスロットに対し、該外部メモリ装置内に格納された仮想スロットのアドレス情報に従って、該外部メモリ装置が差されたスロットのアドレスを割り付け、次に、初期状態の不揮発性メモリからなる外部メモリ装置が装着されたスロットに対し、任意の空き仮想スロットのアドレスを割り付けるとともに、割り付けたアドレス情報を不揮発性メモリの所定の位置に書き込むことを特徴とする。
本発明は、外部メモリ装置を装着する複数のスロットを有し、書き込み可能な不揮発性メモリからなる外部メモリ装置に対し読み書きが可能な外部メモリ装置用アドレス制御装置において、不揮発性メモリにアドレスに依存するプログラムを書き込む際に、該不揮発性メモリが装着されているスロットのアドレス情報と、上記プログラムのアドレスを変更するための情報とを書き込み、不揮発性メモリに書かれたアドレス情報と、該不揮発性メモリが装着されているスロットのアドレスとが異なる場合、該不揮発性メモリに書かれた、プログラムのアドレスを変更するための情報を用いて、該不揮発性メモリ内のプログラムのアドレスを書き換えるとともに、該不揮発性メモリに書かれたアドレス情報を該不揮発性メモリが装着されているスロットのアドレスに従って書き換えることを特徴とする。
本発明は、外部メモリ装置を装着する複数のスロットを有する外部メモリ装置用アドレス制御装置において、スロット数に等しいかそれ以上の仮想スロット用アドレス空間を有し、外部メモリ装置は、仮想スロットの特定のためのアドレス情報を格納する手段と、外部メモリ装置のバンク番号を格納する手段と、を有し、外部メモリ装置内に格納された仮想スロットのアドレス情報に従って、該外部メモリ装置が差されたスロットのアドレスを割り付ける際に、複数のスロットから同一の仮想スロット空間アドレスの割り付けを要求された場合、それらの全てのスロットに指定アドレスを割り付け、前記バンク番号を各スロット毎に保持し、本体プログラムによるバンク切り換え命令によって、同一アドレスに割り付けられた複数のスロットの切り換えを行うことを特徴とする。
本発明は、外部メモリ装置を装着する複数のスロットに対してスロット空間アドレスを割り当てる制御装置であって、複数のスロットのうちの１つに装着された外部メモリ装置に格納された属性情報を獲得する獲得手段と、前記属性情報に基づいて、アドレスに依存するデータが格納された外部メモリ装置であるかを判定する判定手段と、
アドレスに依存するデータが格納された外部メモリ装置であれば、該外部メモリ装置によって指定されたスロット空間アドレスを、該外部メモリ装置が装着されたスロットに割り当て、アドレスに依存するデータが格納された外部メモリ装置でなければ、任意のスロット空間アドレスを、該外部メモリ装置が装着されたスロットに割り当てるアドレス割当手段とを有することを特徴とする。
【００１１】
また、上記目的を達成するために、本発明は、外部メモリ装置を装着する複数のスロットを有する外部メモリ装置用アドレス制御装置で行われるアドレス制御方法において、スロット数に等しいかそれ以上の仮想スロット用のアドレス空間を有し、外部メモリ装置は、アドレスに依存するデータか否かの情報を格納する手段と、仮想スロットの特定のためのアドレス情報を格納する手段と、を有し、最初に、アドレスに依存するデータが格納された外部メモリ装置が装着されたスロットに対し、該外部メモリ装置内に格納された仮想スロットのアドレス情報に従って、該外部メモリ装置が差されたスロットのアドレスを割り付け、次に、アドレスに依存しないデータが格納された外部メモリ装置が装着されたスロットに対し、任意の空き仮想スロットのアドレスを割り付けることを特徴とする。
本発明は、外部メモリ装置を装着する複数のスロットを有し、書き込み可能な不揮発性メモリからなる外部メモリ装置に対し読み書きが可能な外部メモリ装置用アドレス制御装置で行われるアドレス制御方法において、スロット数に等しいかそれ以上の仮想スロット用のアドレス空間を有し、外部メモリ装置は、初期状態の不揮発性メモリが装着されているか否かを認識する手段と、仮想スロットの特定のためのアドレス情報を格納する手段と、を有し、最初に、アドレスに依存するデータが格納された外部メモリ装置が装着されたスロットに対し、該外部メモリ装置内に格納された仮想スロットのアドレス情報に従って、該外部メモリ装置が差されたスロットのアドレスを割り付け、次に、初期状態の不揮発性メモリからなる外部メモリ装置が装着されたスロットに対し、任意の空き仮想スロットのアドレスを割り付けるとともに、割り付けたアドレス情報を不揮発性メモリの所定の位置に書き込むことを特徴とする。
本発明は、外部メモリ装置を装着する複数のスロットを有し、書き込み可能な不揮発性メモリからなる外部メモリ装置に対し読み書きが可能な外部メモリ装置用アドレス制御装置で行われるアドレス制御方法において、不揮発性メモリにアドレスに依存するプログラムを書き込む際に、該不揮発性メモリが装着されているスロットのアドレス情報と、上記プログラムのアドレスを変更するための情報とを書き込み、不揮発性メモリに書かれたアドレス情報と、該不揮発性メモリが装着されているスロットのアドレスとが異なる場合、該不揮発性メモリに書かれた、プログラムのアドレスを変更するための情報を用いて、該不揮発性メモリ内のプログラムのアドレスを書き換えるとともに、該不揮発性メモリに書かれたアドレス情報を該不揮発性メモリが装着されているスロットのアドレスに従って書き換えることを特徴とする。
本発明は、外部メモリ装置を装着する複数のスロットを有する外部メモリ装置用アドレス制御装置で行われるアドレス制御方法において、スロット数に等しいかそれ以上の仮想スロット用アドレス空間を有し、外部メモリ装置は、仮想スロットの特定のためのアドレス情報を格納する手段と、外部メモリ装置のバンク番号を格納する手段と、を有し、外部メモリ装置内に格納された仮想スロットのアドレス情報に従って、該外部メモリ装置が差されたスロットのアドレスを割り付ける際に、複数のスロットから同一の仮想スロット空間アドレスの割り付けを要求された場合、それらの全てのスロットに指定アドレスを割り付け、前記バンク番号を各スロット毎に保持し、本体プログラムによるバンク切り換え命令によって、同一アドレスに割り付けられた複数のスロットの切り換えを行うことを特徴とする。
本発明は、外部メモリ装置を装着する複数のスロットに対してスロット空間アドレスを割り当てる制御装置で行われるアドレス制御方法であって、複数のスロットのうちの１つに装着された外部メモリ装置に格納された属性情報を獲得する獲得ステップと、前記属性情報に基づいて、アドレスに依存するデータが格納された外部メモリ装置であるかを判定する判定ステップと、アドレスに依存するデータが格納された外部メモリ装置であれば、該外部メモリ装置によって指定されたスロット空間アドレスを、該外部メモリ装置が装着されたスロットに割り当て、アドレスに依存するデータが格納された外部メモリ装置でなければ、任意のスロット空間アドレスを、該外部メモリ装置が装着されたスロットに割り当てるアドレス割当ステップとを有することを特徴とする。
【００２１】
【実施例】
次に、図面を参照して、本発明の実施例を説明する。
【００２２】
（実施例１）
図１は、実施例１に適用されるレーザビームプリンタ（以下、ＬＢＰと略す）の内部構造を示す断面図である。このＬＢＰは不図示のデータ源から文字パターンの登録や定型書式（フォームデータ）などの登録が行える。同図において、１０００はＬＢＰ本体であり、外部に接続されているホストコンピュータ（図示せず）から供給される文字情報（文字コード）やフォーム情報あるいはマクロ命令などを入力して記憶するとともに、それらの情報に従って対応する文字パターンやフォームパターンなどを作成し、記録体である記録紙上に像を形成する。
【００２３】
１０１２は操作のためのスイッチおよびＬＥＤ表示器などが配されている操作パネル、１００１はＬＢＰ１０００全体の制御およびホストコンピュータから供給される文字情報などを解析するプリンタ制御ユニットである。この制御ユニット１００１は、主に文字情報を対応する文字パターンのビデオ信号に変換してレーザドライバ１００２に出力する。レーザドライバ１００２は半導体レーザ１００３を駆動するための回路であり、入力されたビデオ信号に応じて半導体レーザ１００３から発射されるレーザ光１００４をオンオフ切り換えする。レーザ１００４は回転多面鏡１００５で左右方向に振られ静電ドラム１００６上を走査する。
【００２４】
これにより、静電ドラム１００６上には文字パターンの静電潜像が形成される。この潜像は、静電ドラム１００６周囲の現像ユニット１００７により現像された後、記録紙に転写される。この記録紙にはカットシートを用い、カットシート記録紙はＬＢＰ１０００に装着した用紙カセット１００８に収納され、給紙ローラ１００９及び搬送ローラ１０１０と１０１１とにより装置内に取り込まれて、静電ドラム１００６に供給される。
【００２５】
図２は図１に示したＬＢＰ１０００のプリンタ制御ユニット１００１の構成を中心に概要構成を示すブロック図である。図２において、２００１は不図示のホストコンピュータからの印字データを受け取り、受信バッファに一時的に蓄えるホストインターフェース、２００２はホストインターフェース２００１、後述するＭＰＵ、ＲＡＭ、ＲＯＭ、メモリスロット、印字機構インターフェース等を繋ぐシステムバス、２００３は後述する制御手段に従ってプリンタ制御ユニット１００１の制御や、レーザプリンタ１０００全体の制御を行うＭＰＵ、２００４は後述する一連の制御手段実行のためのプログラム等が格納されているＲＯＭ、２００５はＭＰＵ２００３がプログラム実行時にワークとして使用するＲＡＭ、２００６は外部メモリを装着するためのメモリスロット１〜ｎ（２００７、２００８、２００９）のアドレスを制御するアドレス制御回路、２０１０は、ＭＰＵ２００３からの画像出力命令に基づいて画像データを印字機構（レーザプリンタ）２０１１に出力する印字機構インターフェースである。
【００２６】
図３は、アドレス制御回路２００６の詳細なブロック図である。ＭＰＵ２００３からアドレス制御回路２００６に繋がるシステムバス２００２は、データバス３０１１、アドレスバス３０１２、およびＲＤ信号やＷＲ信号を始めとする各種の制御信号から構成されている。ＭＰＵがスロット２００７〜２００９に差された外部メモリにアクセスする際には、アドレスバス３０１２に図４の４０００に示すような３２ビットのアドレスが送られる。このアドレス４０００はリージョンビット（４ｂｉｔ）４００１、スロット空間ビット（４ｂｉｔ）４００２、およびスロット先頭からの相対アドレスビット（２４ｂｉｔ）４００３から構成されている。
【００２７】
アドレスデコーダ３００１は、アドレスバスに流されたアドレスがスロットのリージョンであるか否かを判断する。例えは図６のアドレスマップ６０００に示すように、０〜ａｌｌＦｈアドレスバスを流れるアドレスのうち、リージョンビット（４ｂｉｔ）４００１が０１０１ｂである場合すなわちアドレス空間５０００００００ｈ〜５ＦＦＦＦＦＦＦｈに属するアドレスのみ、スロットのアドレスであると判断して３００８〜３０１０のＡＮＤゲートに真の信号を送る。
【００２８】
一方、アドレスバスを流れるアドレスは、３００５〜３００７のコンパレータ１〜ｎにも伝えられ、これらのコンパレータはアドレスのうち、スロット空間ビット（４ｂｉｔ）４００２と、３００２〜３００４のレジスタ１〜ｎに設定されている図５に示すレジスタデータ５０００のうちのスロット空間ビット（４ｂｉｔ）５００２とを比較する。比較の結果、一致したコンパレータは真の信号を３００８〜３０１０のＡＮＤゲートに送る。これによって、アドレスマップ６０００に示す６００１〜６００４のスロット空間のうち、アドレスに対応するスロット空間が割り付けられているスロットのＡＮＤゲートに真の信号が送られることになる。
【００２９】
なお、３００２〜３００４のレジスタへのデータ５０００の書き込みは、以下のようにしてなされる。すなわち、アドレスコーダ３００１によって、アドレスバスを流れるアドレスが各レジスタに対応するものと判断されＷＲ信号が送られた場合、書き込みによって３００２〜３００４の対応するレジスタに伝えられ、データバス３０１１を介して書き込むデータがＭＰＵより供給される。
【００３０】
ここで、レジスタに書き込まれるデータ５０００は、スロット空間ビット（４ｂｉｔ）５００２と、スロットの有効ビット（１ｂｉｔ）５００１から構成されている。スロット空間ビット５００２はアドレスマップ６０００で示すスロット空間６００１〜６００４のいずれかの番号を示しており、これによって、スロット空間アドレスがスロットに割り付けられる。また、スロットの有効ビット５００１の情報は真偽信号として、ＡＮＤゲート３００８〜３０１０に伝えられる。
【００３１】
ＡＮＤゲート３００８から３０１０は、アドレスコーダ３００１からの信号とコンパレータ３００５〜３００７からの信号と、レジスタ３００２〜３００４からの有効ビットの信号を受け取り、全ての信号が真の場合のみ、真の信号を２００７〜２００９のスロット１〜ｎの対応するスロットに送る。
【００３２】
各スロットは、ＡＮＤゲートからの信号が真だった場合、アドレスバスからのアドレスのうちスロット先頭からの相対アドレスビット（２４ｂｉｔ）４００３を受け取り、そのアドレスをスロットに差された外部メモリ先頭からの相対アドレス情報として外部メモリの指定アドレスのデータにアクセスし、ＲＤ信号やＷＲ信号等に基づき、データバス３０１２を介してＭＰＵ２００３とデータのやりとりを行う。
【００３３】
以上のようにして、アドレスに対応するスロット空間アドレスが割り付けられた有効なスロットに対し、データのアクセスが可能になる仕組みになっている。以上の構成のプリンタ制御ユニット１００１を組み込んだレーザビームプリンタ１０００の動作について、図７に示すフローチャートを参照して説明する。
【００３４】
まず、不図示の電源部から電源を供給すると、ステップＳ７００１で２００７〜２００９のｎ個の外部メモリ用スロットについて初期アドレスを割り付ける。本実施例では、スロット１（２００７）にはスロット空間０（６００１）（５０００００００ｈ〜５０ＦＦＦＦＦＦｈ）を、スロット２（２００８）にはスロット空間１（６００２）（５１００００００ｈ〜５１ＦＦＦＦＦＦｈ）を、スロットｎ（２００９）にはスロット空間ｎ−１（５（ｎ−１）００００００ｈ〜５（ｎ−１）ＦＦＦＦＦＦ）をそれぞれ割り付ける。このスロットｋ（０≦ｋ≦ｎ−１）にスロット空間ｋ−１を割り付ける処理は、図３において、レジスタｋに有効ビット５００１が１、スロット空間ビット５００２がｋ−１のデータを書き込むことにより実現される。
【００３５】
さらに初期化処理として、図１１の各スロットに対応するスロット属性テーブルのスロット属性１１００１を０ｘ００００００００（無効）に、スロット有効フラグ１１００２をＯＦＦ（オフ）にそれぞれ初期化する、また、図１２の各スロット空間に対応するスロット空間管理テーブルの対応スロット番号を０（空き状態）に初期化する。
【００３６】
次に、ステップＳ７００２で、プログラムのワークであるＲＡＭ２００５上のスロット番号変数に初期値として１を設定する。次に、ステップＳ７００３で、このステップＳ番号変数がスロット総数ｎより大きいかどうかを比較し、大きければ全スロットに対する処理が終了して、（１）で次ページの処理に移行する。
【００３７】
他方、ステップＳ７００３で、スロット番号変数がスロット総数ｎ以下の場合は、ステップＳ７００４でスロット番号変数に指定されたスロットに差された図１３に示す外部メモリ１３０００にアクセスにいく。外部メモリ１３０００は、外部メモリヘッダ情報部１３００１とプログラムやフォントデータ等の実際のデータ部１３００２から構成されている。なお、外部メモリヘッダ情報部１３００１は、外部メモリ属性情報１３００３、ヘッダサイズ１３００４、スロット空間番号１３００５、優先順位１３００６、およびバンク番号１３００７から構成されている。
【００３８】
外部メモリの外部メモリ属性情報１３００３は、以下のような属性情報からなっている。まず、この４バイト情報が０ｘ０００００００１の場合、スロット空間番号指定された外部メモリであることを示す。次に、この４バイト情報が０ｘ０００００００２の場合、スロット空間番号が任意指定の（スロット空間アドレスに依存しない）外部メモリであることを示す。また、この４バイト情報が０ｘＦＦＦＦＦＦＦＦの場合、書き込み可能な不揮発性メモリであるフラッシュＰＲＯＭで初期化されていない状態（全データが０ｘＦＦ）であることを示す。
【００３９】
ステップＳ７００４では、スロット上の外部メモリにアクセスし、この外部メモリ属性情報１３００３を獲得し、これが０ｘ０００００００１のスロット空間番号指定された外部メモリであれば、ステップＳ７００５にとぶ。ステップＳ７００５では、スロット空間番号１３００５、優先順位１３００６、およびバンク番号１３００７を獲得し、図１１に示すプログラムのワークであるＲＡＭ２００５上に確保された各スロット毎の属性テーブル１１０６〜１１０９のうちの現在参照中のスロットに対応するスロット属性テーブルのスロット属性１１００１をスロット空間指定（０ｘ０００００００１）に設定し、スロット空間番号１１００３を設定する。
【００４０】
さらにステップＳ７００６で、優先順位１１００４、およびバング番号１１００５をそれぞれ設定する。なお、まだ実際のスロットへのアドレス割り付けは行っていないので、スロット有効フラグ１１００２はＯＦＦ（オフ）にしておく。そして、ステップＳ７０１２に飛び、スロット番号変数をインクリメントしてステップＳ７００３に戻る。
【００４１】
他方、ステップＳ７００４で、スロット空間番号指定メモリでないと判断された場合、ステップＳ７００７に飛び、外部メモリ属性情報１３００３がスロット番号任意指定（０ｘ０００００００２）であるかどうかをチェックし、スロット番号任意指定であればステップＳ７００８に飛ぶ。
【００４２】
ステップＳ７００８では、現在参照中のスロットに対応するスロット属性テーブルのスロット属性１１００１にスロット番号任意指定（０ｘ０００００００２）を書き込み、まだ実際のスロットへのアドレス割り付けは行っていないので、スロット有効フラグ１１００２をＯＦＦにして、ステップＳ７０１２に飛び、スロット番号変数をインクリメントしてステップＳ７００３に戻る。
【００４３】
他方、ステップＳ７００７で、スロット空間番号指定メモリでないと判断された場合、ステップＳ７００９に飛び、外部メモリ属性情報１３００３が初期状態のフラッシュＰＲＯＭ（０ｘＦＦＦＦＦＦＦＦ）であるかどうかをチェックし、初期状態のフラッシュＰＲＯＭであればステップＳ７０１０に飛ぶ。
【００４４】
ステップＳ７０１０では、現在参照中のスロットに対応するスロット属性テーブルのスロット属性１１００１に初期状態のフラッシュＰＲＯＭ（０ｘＦＦＦＦＦＦＦＦ）を書き込み、まだ実際のスロットへのアドレス割り付けは行っていないので、スロット有効フラグ１１００２をＯＦＦにして、ステップＳ７０１２に飛び、スロット番号変数をインクリメントしてステップＳ７００３に戻る。
【００４５】
なお、ステップＳ７００９で初期状態のフラッシュＰＲＯＭでないと判断された場合、ステップＳ７０１１に飛び、このスロットの外部メモリは無効であると判断して、現在参照中のスロットに対応するスロット属性テーブルのスロット属性１１００１に無効（０ｘ００００００００）ほ設定し、当該スロット有効フラグ１１００２もＯＦＦにして、ステップＳ７０１２に飛び、スロット番号変数をインクリメントしてステップＳ７００３に戻る。以上により、全スロットに差された外部メモリの属性等の情報を対応するスロット属性テーブルに読み出すことができる。
【００４６】
次に、ステップＳ７００３で全スロットの読み出し処理を終了したと判断された場合、（１）で図８のステップＳ８００１に飛ぶ。ステップＳ８００１では、前述のスロット番号変数をもう一度１に初期化する。次にステップＳ８００２で、このスロット番号変数がスロット総数ｎより大きいかどうかを比較し、大きければ全スロットに対する処理が終了して、（２）で次ページの処理に移行する。
【００４７】
ステップ８００２でスロット番号変数がスロット総数ｎ以下と判断された場合、ステップＳ８００３に飛び、スロット番号変数に設定されたスロット番号に対応するスロット属性テーブルのスロット属性１１００１にアクセスし、スロット空間番号指定（０ｘ０００００００１）であるかチェックする。スロット空間番号指定でなければステップＳ８０１０に飛び、スロット番号変数をインクリメントしてステップＳ８００２に戻る。
【００４８】
他方、ステップＳ８００３でスロット空間番号指定と判断された場合、ステップＳ８００４でスロット空間番号１１００３を獲得し、そこで指定されているスロット空間に対応するスロット管理テーブル（図１２）の対応スロット番号１２０００を獲得し、これを空き状態（０）であるかどうかをチェックする。
【００４９】
空き状態（０）ならば、ステップＳ８００７に飛び、現在参照中のスロット属性テーブルのスロット空間番号１１００３をスロット空間ビット５００２に設定し、有効ビット５００１を１にして、現在参照中のスロット（スロット番号変数に設定されたスロット番号のスロット）のレジスタに書き込む。
【００５０】
次にステップＳ８００８で、現在参照中のスロット属性テーブルのスロット有効フラグを０Ｎにするとともに、ステップＳ８００７で指定したスロット空間に対応するスロット空間管理テーブルの対応スロット番号１２０００に現在のスロット番号変数に設定されているスロット番号を設定する。そして、ステップＳ８０１０に飛び、スロット番号変数をインクリメントしてステップＳ８００２に戻る。
【００５１】
ステップＳ８００４でスロット空間が空きでない（どれかのスロットに既に割り付けられている）と判断された場合、ステップＳ８００５で現在参照中のスロット属性テーブルの優先順位１１００４と、スロット空間管理テーブルに設定されている対応スロット番号１２０００で指定されているスロットに対応するスロット属性テーブルの優先順位１１００４とを比較する。
【００５２】
現在参照中のスロット属性テーブルの優先順位の方が高ければ（優先順位の値が大きければ）、ステップＳ８００６でスロット空間管理テーブルに設定されている対応スロット番号１２０００で指定されているスロットを管理するレジスタの有効ビット５００１を０にして、スロットを無効にするとともに、そのスロットに対応するスロット属性テーブルのスロット有効フラグ１１００２をＯＦＦにし、ステップＳ８００７に飛ぶ。
【００５３】
他方、ステップＳ８００５で現在参照中のスロット属性テーブルの優先順位の方が低い（優先順位が小さい）と判断された場合、ステップＳ８００９に飛び、現在参照中のスロット属性テーブルのスロット有効フラグをＯＦＦにし、ステップＳ８０１０に飛ぶ。
【００５４】
以上のようにして、スロット番号が指定されているスロットに対してスロット空間を割り付けることができる。ステップＳ８００３で、全スロットの処理が終了したら、（２）で図９のステップＳ９００１に飛ぶ。ステップＳ９００１では前述のスロット番号変数をもう一度１に初期化する。
【００５５】
次にステップＳ９００２で、このスロット番号変数がスロット総数ｎより大きいかどうかを比較し、大きければ全スロットに対する処理が終了して、（３）で次ページの処理に移行する。ステップＳ９００２でスロット番号変数がスロット総数ｎ以下と判断された場合、ステップＳ９００３に飛び、スロット番号変数に設定されたスロット番号に対応するスロット属性テーブルのスロット属性１１００１にアクセスし、スロット空間番号指定（０ｘ０００００００２）であるかチェックする。スロット空間任意指定でなければステップＳ９００７に飛び、スロット番号変数をインクリメントしてステップＳ９００２に戻る。
【００５６】
他方、ステップＳ９００３でスロット属性がスロット空間任意指定であると判断された場合、ステップＳ９００４で、スロット空間管理テーブルを先頭から順にアクセスし、対応スロット番号１２０００が空き状態（０）であるスロット空間を検索する。
【００５７】
次にステップＳ９００５で検索された空きスロット空間のスロット空間番号をスロット空間ビット５００２に、有効ビット５００１にそれぞれ設定して、現在参照中のスロット（スロット番号変数に設定されているスロット）に対応するレジスタに設定し、そのスロットに対応するスロット属性テーブルのスロット有効フラグ１１００２をＯＮ（オン）にする。
【００５８】
ステップＳ９００６で、スロット空間管理テーブルの対応スロット番号１２０００に現在のスロット番号を設定し、ステップＳ９００７でスロット番号変数をインクリメントして、ステップＳ９００２に戻る。以上により、スロット空間の指定が任意である外部メモリが装着されたスロットに対するスロット空間アドレスの割り付けが完了する。最後に、ステップＳ９００２で、全スロットの処理が終了したら、（３）で図１０のステップＳ１０００１に飛ぶ。
【００５９】
ステップＳ１０００１では、前述のスロット番号変数をもう一度１に初期化する。次にステップＳ１０００２で、このスロット番号変数がスロット総数ｎより大きいかどうかを比較し、大きければ全スロットに対する処理が終了し、ブート処理が終了する。
【００６０】
他方、ステップＳ１０００２でスロット番号変数がスロット総数ｎ以下と判断された場合、ステップＳ１０００３に飛び、スロット番号変数に設定されたスロット番号に対応するスロット属性テーブルのスロット属性１１００１にアクセスし、初期状態のフラッシュＰＲＯＭ（０ｘＦＦＦＦＦＦＦＦ）であかチェックする。初期状態のフラッシュＰＲＯＭでなければステップＳ１０００８に飛び、スロット番号変数をインクリメントしてステップＳ１０００２に戻る。
【００６１】
他方、ステップＳ１０００３で初期状態のフラッシュＰＲＯＭと判断された場合、ステップＳ１０００４でスロット空間管理テーブルほ先頭から順にアクセスし、対応スロット番号１２０００が空き状態（０）であるスロット空間を検索する。
【００６２】
次にステップＳ１０００５で検索された空きスロット空間のスロット空間番号をスロット空間ビット５００２に、有効ビット５００１を１にそれぞれ設定して、現在参照中のスロット（スロット番号変数に設定されているスロット）に対応するレジスタに設定し、そのスロットに対応するスロット属性テーブルのスロット有効フラグ１１００２をＯＮにする。
【００６３】
次に、ステップＳ１０００６でフラッシュＰＲＯＭに外部メモリヘッダ情報部１３００１を書き込む。外部メモリ属性情報１３００３は、スロット空間指定メモリ属性（０ｘ０００００００１）に、ヘッダサイズ１３００４は５×４バイト＝２０バイトに、スロット空間番号１３００５は、ステップＳ１０００５で指定したスロット空間番号に、優先順位およびバンク番号は０にそれぞれ書き込む。
【００６４】
次にステップＳ１０００７で、スロット空間管理テーブルの対応スロット番号１２０００に現在のスロット番号を設定し、ステップＳ１０００８でスロット番号変数をインクリメントして、ステップＳ１０００２に戻る。以上により、初期状態のフラッシュＰＲＯＭが装着されたスロットに対するスロット空間アドレスの割り付けが完了し、スロットに関するすべてのブート処理が完了する。
【００６５】
（実施例２）
次に、実施例２を実施例１と全く同じ構成のＬＢＰで説明する。ブート時の処理は、実施例１と全く同様である。ただし、複数のスロットに対し同一のスロット空間が割り付けられた場合のプログラム実行時のバンク切り換えについて図１４のフローチャートを用いて説明する。
【００６６】
実施例１で説明したとおり、複数のスロットに対し同一のスロット空間が割り付けられた場合、ブート時には最も優先順位の高い外部メモリが差されたスロットに対しスロット空間が割り付けられている。これを切り換えたい場合、実施例フローチャートにはプログラム実行時に図１４のフローチャートに示すバンク切り換え関数をコールする。バンク切り換え関数がコールされると、ステップＳ１４００１で切り換えたいスロット空間番号と、切り換えるバンク番号を獲得する。
【００６７】
次にステップＳ１４００２でステップＳ１４００１で獲得したスロット空間番号に対応するスロット空間管理テーブルに設定された対応スロット番号１２０００を獲得し、そのスロットのレジスタの有効ビット５００１を０にしてスロットを無効にするとともに、そのスロットに対応するスロット属性テーブルのスロット有効フラグをＯＦＦにする。
【００６８】
次に、ステップＳ１４００３で、プログラムのワークであるＲＡＭ２００５上のスロット番号変数に初期値として１を設定する。次にステップＳ１４００４で、このスロット番号変数がスロット総数ｎより大きいかどうかを比較し、大きければ切り換えるべきバンク番号に対応するスロットが見つからなかったと判断しエラー終了する。
【００６９】
他方、ステップＳ１４００４でスロット番号変数がスロット総数ｎ以下と判断された場合、ステップＳ１４００５に飛び、スロット番号変数に設定されたスロット番号に対応するスロット属性テーブルのスロット空間番号１１００３にアクセスし、ステップＳ１４００１で獲得したスロット空間番号と一致するかどうか比較する。一致しなかった場合は、ステップＳ１４００８に飛び、スロット番号変数をインクリメントしてステップＳ１４００４に戻る。
【００７０】
他方、ステップＳ１４００５でスロット空間が一致した場合、ステップＳ１４００６に飛び、スロット番号変数に設定されたスロット番号に対応するスロット属性テーブルのバンク番号１１００５にアクセスし、ステップＳ１４００１で獲得したバンク番号と一致するかどうか比較する。一致しなかった場合、ステップＳ１４００８に飛び、スロット番号変数をインクリメントしてステップＳ１４００４に戻る。
【００７１】
他方、ステップＳ１４００６でバンク番号が一致した場合、ステップＳ１４００７でバンク番号が一致したスロット属性テーブルに対応するスロットのレジスタの有効ビット５００１を１にして、スロットを有効にし、スロット属性テーブルのスロット有効フラグをＯＮにするとともに、スロット空間管理テーブルの対応スロット番号１２０００を設定し、バンク切り換えを終了する。
【００７２】
以上のようにして、同一スロット空間に複数のスロットが割り付けられている場合、プログラムによるバンク切り換えが実現される。
【００７３】
（実施例３）
さらに、実施例１と全く同一の構成のＬＢＰを用いて、実施例３を説明する。ただし、外部メモリ用スロットに装着される外部メモリのうちフラッシュＰＲＯＭのデータは図１６に示すように、以下のようなフォーマットをしている。
【００７４】
フラッシュＰＲＯＭのデータフォーマット１６０００は、大きく分けてフラッシュＰＲＯＭヘッダ情報部１６００１、アドレス書換え情報部１６００２、およびプログラム部１６００３から構成されている。フラッシュＰＲＯＭヘッダ情報部１６００１は、アドレス書換え可能なフラッシュＰＲＯＭであること（０ｘ０００００００３）を示す外部メモリ属性情報１６００４、ヘッダサイズ１６００５、フラッシュＰＲＯＭ上の現在のプログラムのアドレスが割り付けられているスロット空間番号１６００６、アドレス書換え情報部１６００２へのオフセット１６００７、およびプログラム部１６００３へのオフセット１６００８から構成されている。
【００７５】
また、アドレス書換え情報部１６００２は、図１７の１７０００に示すように、アドレス書換え情報の総数１７００１および、アドレス書換え情報の総数分のアドレス書換え情報１７００２、１７００３から構成されており、アドレス書換え情報１７００２は、書換え絶対アドレス値のフラッシュメモリ先頭からの相対アドレス値１７００４、書換え絶対アドレス値が格納されている総数１７００５、および書換える絶対アドレス値が格納されている総数分の書換える絶対アドレスのフラッシュメモリ先頭からのオフセット位置１７００６、１７００７から構成されている。
【００７６】
次に実施例３を詳細に説明する。ブート処理は実施例１とほとんど同様に実行されるが、実施例１の図７のステップＳ７００９でフラッシュＰＲＯＭと判断されるのは初期値状態のフラッシュＰＲＯＭ（０Ｘ  ＦＦＦＦＦＦＦＦ）と、アドレス書換え可能なフラッシュＰＲＯＭ（０Ｘ  ０００００００３）の両方であり、ステップＳ７０１０でそれぞれの属性がスロット属性テーブルのスロット属性１１００１に設定される。
【００７７】
しかしながら、図１０のステップＳ１０００３では初期状態のフラッシュＰＲＯＭ（０Ｘ  ＦＦＦＦＦＦＦＦ）のみがフラッシュＰＲＯＭとして判断される。そして実施例３では実施例１のブート処理が終了した後、図１５のフローチャートに示すアドレス書換え可能なフラッシュＰＲＯＭのブート処理を実行する。まず、ステップＳ１５００１で、プログラムのワークであるＲＡＭ２００５上のスロット番号変数に初期値として１を設定する。
【００７８】
次に、ステップＳ１５００２で、このスロット番号変数がスロット総数ｎより大きいかどうかを比較し、大きければ全スロットのアドレス書換え可能なフラッシュＰＲＯＭに対するブート処理が終了する。
【００７９】
他方、ステップＳ１５００２でスロット番号変数がスロット総数ｎ以下であると判断された場合、ステップＳ１５００３に飛び、スロット番号変数に設定されたスロット番号に対応するスロット属性テーブルのスロット属性１１００１にアクセスし、アドレス書換え可能なフラッシュＰＲＯＭ（０Ｘ  ０００００００３）であるかチェックする。アドレス書換え可能なフラッシュＰＲＯＭでなければステップＳ１５０１０に飛び、スロット番号変数をインクリメントしてステップＳ１５００２に戻る。
【００８０】
他方、ステップＳ１５００アドレスでアドレス書換え可能なフラッシュＰＲＯＭと判断された場合、ステップＳ１５００４でフラッシュＰＲＯＭのヘッダ情報のスロット空間番号１６００６を獲得する。ステップＳ１５００５でステップＳ１５００４で獲得したスロット空間が空き状態かどうかスロット管理テーブルでチェックする。空き状態（０）であれば、ステップＳ１５００９に飛び、ステップＳ１５００４で獲得したスロット空間番号をスロット空間ビット５００２に、有効ビット５００１を１にそれぞれ設定して、現在参照中のスロット（スロット番号変数に設定されているスロット）に対応するレジスタに設定し、そのスロットに対応するスロット属性テーブルのスロット有効フラグ１１００２をＯＮにし、ステップＳ１５０１０に飛び、スロット番号変数をインクリメントしてステップＳ１５００２に戻る。
【００８１】
他方、ステップＳ１５００５でスロット空間が空き状態でないと判断された場合、ステップＳ１５００６でスロット空間管理テーブルを先頭から順にアクセスし、対応スロット番号１２０００が空き状態（０）であるスロット空間を検索し、検索された空きスロット空間のスロット空間番号をスロット空間ビット５００２に、有効ビット５００１を１にそれぞれ設定して、現在参照中のスロット（スロット番号変数に設定されているスロット）に対応するレジスタに設定し、そのスロットに対応するスロット属性テーブルのスロット有効フラグ１１００２をＯＮにする。
【００８２】
次に、ステップＳ１５００７で、プログラム部１６００３をプログラムのワークであるＲＡＭ２００５上に読み出し、フラッシュＰＲＯＭ上のアドレス書換え情報部１６００２の情報部を使用して、ＲＡＭ２００５上に読みだしたプログラムのアドレス情報を新しいスロット空間に対応するものに書き換える。なお、ステップＳ１５００７の使用際な内容については、図１８のフローチャートを用いて後述する。
【００８３】
次にステップＳ１５００８で、ＲＡＭ２００５上でアドレスを書換えたプログラムでフラッシュＰＲＯＭのプログラム部１６００３を書換え、フラッシュＰＲＯＭヘッダ情報部１６００１のスロット空間番号１６００６を新しいスロット空間に書換え、ステップＳ１５０１０に飛び、スロット番号変数をインクリメントしてステップＳ１５００２に戻る。
【００８４】
次に、ステップＳ１５００７の詳細な内容については、図１８のフローチャートを用いて説明する。ステップＳ１８００１で、新しく割り付けられたスロット空間の先頭アドレスを獲得する。次に、フラッシュＰＲＯＭのアドレス書き換え情報部１６００２からアドレス書換え情報の総数１７００１を獲得する。次にステップＳ１８００３でアドレス書換え情報の総数が０より大きいかどうか比較し、０以下ならば処理終了と判断し、サブルーチンを終了する。
【００８５】
他方、ステップＳ１８００３でアドレス書換え情報の総数が０より大きいと判断した場合、ステップＳ１８００４でアドレス書換え情報１７００２の書換えアドレスの相対アドレス１７００４にステップＳ１８００１で獲得した新しく割り付けられたスロット空間の先頭アドレスを加算して、書換えアドレスの新しい絶対アドレスを獲得する。
【００８６】
次に、ステップＳ１８００５でアドレス書換え情報１７００２のアドレス書換え総数１７００５を獲得する。次にステップＳ１８００６で、アドレス書換え情報の総数をデクリメントする。次にステップＳ１８００７でアドレス書換え総数が０より大きいかどうか比較し、０以下ならばそのアドレスに関する書換え処理が終了したと判断し、ステップＳ１８００３に戻る。
【００８７】
他方、ステップＳ１８００７でアドレス書換え総数が０より大きいと判断された場合、ステップＳ１８００８でアドレス書換え情報１７００２のアドレス書き換え位置１７００６を獲得し、ＲＡＭ２００５上にコピーしたプログラムの先頭からアドレス書換え位置で指定されたオフセット位置に書かれているアドレスをステップＳ１８００４で獲得した書換えアドレスの新しい絶対アドレスに書換える。
【００８８】
次にステップＳ１８００９でアドレス書換え総数をデクリメントして、ステップＳ１８００７に戻る。以上述べてきたような処理により、フラッシュＰＲＯＭのプログラム部のアドレスを、フラッシュＰＲＯＭの装着されたスロットに割り付けられたスロット空間アドレスに適合するように、書換えることができる。本実施例では、ＬＢＰについて説明したが、外部メモリ用の複数のスロットを有するものであればインクジェットプリンタ、溶融型熱転写プリンタ、昇華型熱転写プリンタ、ＬＥＤプリンタ、液晶シャッタープリンタなどのようなプリンタであっても構わない。また、外部メモリ用の複数スロットを有するものであればプリンタ装置に限るものでなく、パーソナルコンピュータ等のコンピュータ装置等どんな装置であっても構わない。
【００８９】
本実施例では、外部メモリ装置として、ＲＯＭを使用したが、スロット数によって装着される外部メモリ装置であり、アドレスを有するものであれば、どのような外部メモリ装置であっても構わない。また、本実施例では、書き込み可能な不揮発性の外部メモリ装置として、フラッシュＰＲＯＭを使用したが、スロット等によって装着される外部メモリ装置であり、書き込み可能な不揮発性メモリでアドレスを有するものであれば、ＥＥＰＲＯＭやバックアップ電源を有するＲＡＭ等、どのような外部メモリ装置であっても構わない。
【００９０】
【発明の効果】
以上説明したように、本発明によれば、バング切り換えやＰＩＣおよびＰＩＤの機能を使用しなくても、複数のスロットの任意のスロットにアドレスに依存するデータが格納された外部メモリ装置を装着し、動作させることが可能になるという効果がある。
【図面の簡単な説明】
【図１】図１は、本発明を適用可能な印刷装置の構成を説明する断面図である。
【図２】図２は、本発明の実施例を示す印刷装置の制御構成を説明するブロック図である。
【図３】図３は、図２に示したアドレス制御回路の詳細を説明するブロック図である。
【図４】図４は、図３に示したアドレスバスを流れるアドレス情報の詳細を説明するための図である。
【図５】図５は、図３に示したスロットを管理するレジスタのデータの詳細を説明するための図である。
【図６】図６は、図２に示した制御装置のアドレスマップを説明するための図である。
【図７】図７は、本発明の実施例１の印刷装置のブート時の動作手順を示すフローチャートである。
【図８】図８は、本発明の実施例１の印刷装置のブート時の動作手順を示すフローチャートである。
【図９】図９は、本発明の実施例１の印刷装置のブート時の動作手順を示すフローチャートである。
【図１０】図１０は、本発明の実施例１の印刷装置のブート時の動作手順を示すフローチャートである。
【図１１】図１１は、本実施例の印刷装置の各外部メモリ用スロットを管理するためにＲＡＭ上に確保された管理テーブルの概略図である。
【図１２】図１２は、本実施例の印刷装置のスロット空間アドレスを管理するためにＲＡＭ上に確保された管理テーブルの概要図である。
【図１３】図１３は、本実施例の印刷装置の各外部メモリ装置内のデータフォーマットの一例である。
【図１４】図１４は、本発明の実施例２の印刷装置のプログラム動作時の動作手順を示すフローチャートである。
【図１５】図１５は、本発明の実施例２、３の印刷装置のブート時の動作手順を示すフローチャートである。
【図１６】図１６は、実施例２の印刷装置の外部メモリ装置の一つであるフラッシュＰＲＯＭのデータフォーマットの一例である。
【図１７】図１７は、フラッシュＰＲＯＭのデータフォーマットのうちアドレス書き換え情報部のデータ構造の一例である。
【図１８】図１８は、本発明の実施例３の印刷装置のブート時の動作手順を示すフローチャートである。
【符号の説明】
１０００    ＬＢＰ本体
１００１    印刷制御部
１００２    レーザドライバ
１００３    半導体レーザ
１００４    レーザ光
１００５    回転多面体
１００６    静電ドラム
１００７    現像ユニット
１００８    紙カセット
１００９〜１０１１    搬送ローラ
１０１２    操作パネル
【図１】
0003548252.tif 000002
【図２】
0003548252.tif 000003
【図３】
0003548252.tif 000004
【図４】
0003548252.tif 000005
【図５】
0003548252.tif 000006
【図６】
0003548252.tif 000007
【図７】
0003548252.tif 000008
【図８】
0003548252.tif 000009
【図９】
0003548252.tif 000010
【図１０】
0003548252.tif 000011
【図１１】
0003548252.tif 000012
【図１２】
0003548252.tif 000013
【図１３】
0003548252.tif 000014
【図１４】
0003548252.tif 000015
【図１５】
0003548252.tif 000016
【図１６】
0003548252.tif 000017
【図１７】
0003548252.tif 000018
【図１８】
0003548252.tif 000019