(57)【要約】【課題】プリンタを用いて、複数ページの出力情報を複数部印刷する場合、高速な印刷をすることができ、かつ、低コストな印刷システムを提供する。【解決手段】各ページの印刷データにそれぞれ優先度を設け、プリンタのメモリの許容範囲で優先度の高いページをメモリに記憶し、２部目以降の印刷は、そのメモリのデータを使用することで印刷の高速化を実現する。【選択図】　　　図１
2004094395.tif 000002
【特許請求の範囲】
【請求項１】
１頁の印刷情報の複数頁からなる印刷情報群を有し該印刷情報群を印刷指示する印刷指示装置と、前記印刷指示に基づいて印刷する画像形成装置とからなる印刷システムにおいて、
前記印刷指示装置は、
前記印刷情報群に含まれるそれぞれの印刷情報を識別する識別情報を作成する作成手段と、
該作成手段により作成された識別情報を記憶する第１の記憶手段と、
前記印刷情報と該印刷情報に対応する識別情報とを前記画像形成装置に送信する第１の送信手段と、
前記画像形成装置から送信された識別情報を受信する第１の受信手段と、
前記第１の記憶手段に記憶した識別情報であって、かつ前記第１の受信手段により受信した識別情報以外の識別情報を判定する識別情報判定手段と、前記識別情報判定手段の結果に基づいて取得した識別情報に対応する印刷情報を送信する第２の送信手段とを備え、
前記画像形成装置は、
前記第１の送信手段により送信された前記印刷情報と前記識別情報を受信する第２の受信手段と、
前記第２の受信手段により受信した前記印刷情報と前記識別情報とを対応づけた印刷識別対応情報を記憶する第２の記憶手段と、
各印刷情報の優先度を算出する優先度算出手段と、
前記優先度算出手段により得られた優先度に基づいて、前記第２の記憶手段から前記印刷識別対応情報を消去する消去手段と、
前記第２の記憶手段に記憶している識別情報を前記印刷指示装置に送信する第３の送信手段と、
を備えることを特徴とする印刷システム。
【請求項２】
前記優先度算出手段は、印刷情報の情報量と、前記印刷情報に基づいて印刷画像を描画する時間と、描画した印刷画像の情報量と、に基づいて算出されることを特徴とする請求項１記載の印刷システム。
【請求項３】
１頁の印刷情報の複数頁からなる印刷情報群を有し該印刷情報群を印刷指示する印刷指示装置と、前記印刷指示に基づいて印刷する画像形成装置とからなる印刷システムに用いられる印刷指示装置において、
前記印刷指示装置は、
前記印刷情報群に含まれるそれぞれの印刷情報を識別する識別情報を作成する作成手段と、
該作成手段により作成された識別情報を記憶する第１の記憶手段と、
前記印刷情報と該印刷情報に対応する識別情報とを前記画像形成装置に送信する第１の送信手段と、
前記画像形成装置から送信された識別情報を受信する第１の受信手段と、
前記第１の記憶手段に記憶した識別情報であって、かつ前記第１の受信手段により受信した識別情報以外の識別情報を判定する識別情報判定手段と、
前記識別情報判定手段の結果に基づいて取得した識別情報に対応する印刷情報を送信する第２の送信手段と、
を備えることを特徴とする印刷指示装置。
【請求項４】
１頁の印刷情報の複数頁からなる印刷情報群を有し該印刷情報群を印刷指示する印刷指示装置と、前記印刷指示に基づいて印刷する画像形成装置とからなる印刷システムに用いられる前記画像形成装置において、
前記第１の送信手段により送信された前記印刷情報と前記識別情報を受信する第２の受信手段と、
前記前記第２の受信手段により受信した前記印刷情報と前記識別情報とを対応づけた印刷識別対応情報を記憶する第２の記憶手段と、
各印刷情報の優先度を算出する優先度算出手段と、
前記優先度算出手段により得られた優先度に基づいて、前記第２の記憶手段から前記印刷識別対応情報を消去する消去手段と、
前記第２の記憶手段に記憶している識別情報を前記印刷指示装置に送信する第３の送信手段と、
を備えることを特徴とする画像形成装置。
【請求項５】
前記優先度算出手段は、印刷情報の情報量と、前記印刷情報に基づいて印刷画像を描画する時間と、描画した印刷画像の情報量と、に基づいて算出されることを特徴とする請求項４記載の画像形成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
コンピュータに保存されている複数ページの情報を、プリンタを使って複数部印刷するためのシステムに関する。
【０００２】
【従来の技術】
従来、コンピュータに保存されている複数ページの文書情報を、プリンタを使って複数部印刷する方式には、以下の様なものがある。
（１）　ホスト・コンピュータは、各ページのデータを１回だけプリンタヘ送信する。プリンタは、１ページ分のデータを受信するごとに、メモリ上に作成した画像を必要な部数分コピーして用紙へ印刷する。印刷した用紙は全て同じ排紙口ヘ出力され、同じページを印刷した用紙の集まりがページ数分重なって出力される。コピーされた用紙は、人間が用紙の集まりの中から各ページを１枚ずつ拾い出して仕分けし、目的のページの順番に並び替えることによって、必要な部数のセットにまとめる。
【０００３】
（２）　ホスト・コンピュータは、各ページのデータを１回だけプリンタヘ送信する。プリンタは、１ページ分のデータを受信するごとに、メモリ上に作成した画像を必要な部数分コピーして用紙へ印刷する。プリンタには複数の排紙口を持つソータを装備し、コピーされた用紙はそれぞれが別々の排紙口ヘ出力される。これによって、各排紙口には目的のページの順番に揃えられた必要な部数のセットが印刷される。
【０００４】
（３）　ホスト・コンピュータは、最初のページから最後のページまでのデータをプリンタヘ送信し、この処理を必要な部数分繰り返し実行する。プリンタは、１ページ分のデータを受信するごとに、メモリ上に作成した画像を１枚の用紙へ印刷する。排紙口には、目的のページの順番で必要な部数のセットが積み重なって印刷される。
【０００５】
（４）　ホスト・コンピュータは、各ページのデータを１回だけプリンタヘ送信する。プリンタは、１ページ分のデータを受信するごとに、メモリ上に作成した画像を１枚の用紙へ印刷する。これと同時に、プリンタは、作成した画像を全てメモリ又はハード・ディスクに保存しておく。１部目の印刷が終了すると、プリンタは、保存しておいた画像を最初のページから読み出して２部目以降の印刷を行う。排紙口には、目的のページの順番で必要な部数のセットが積み重なって印刷される。
【０００６】
【発明が解決しようとする課題】
上記（１）の方式は、ホスト・コンピュータにもプリンタにも特別な仕組みはなく、従来からプリンタに備わっている用紙のコピー機能を使って、必要な部数の印刷を行うものである。印刷した用紙は人間が仕分けをしなければならないため、多数の印刷を行う場合、煩雑な作業を伴うこととなる。
【０００７】
上記（２）の方式は、各部が別々の排紙口ヘ仕分けされて出力されるため、人間による煩雑な作業は必要ない。しかしながら、ソータは高価で大きな装置であるため、プリンタの小型化やローコスト化が難しい。また、ソータに用意できる排紙□は１０〜２０個程度が上限であり、これ以上の部数を印刷する場合には、何回かに分けて印刷する必要がある。
【０００８】
上記（３）の方式は、ホスト・コンピュータのプログラムの工夫で実現でき、ワードプロセッサ・ソフトウェアなどでは既に実現されていて、安価である。しかし、必要な部数の全てのページについて、ホスト・コンピュータからプリンタヘデータを送出する必要があるため、複雑な絵柄のページを印刷する場合などでは、ホスト・コンピュータ又はプリンタのデータ処理性能が間に合わず、高速な印刷ができないなどの難点がある。
【０００９】
上記（４）の方式は、ホスト・コンピュータからプリンタヘのデータ送出が１回だけであり、２部目以降については、１部目で保存した画像を読み出すため、高速な印刷が可能である。しかしながら、高解像度のカラー印刷を行う場合、１ページ当たり数十Ｍバイトの記憶容量が必要であり、実用的なページ数分の画像を保存するためのメモリをプリンタに搭載することは、今だ高価である。ハード・ディスクに画像を記憶する方法は、既に実用化されており、実用的なページ数分の画像を記憶する手段としては十分であるが、小型プリンタにおいては、ハード・ディスク装置分のコストが上がると言う難点がある。
【００１０】
そこで上記の問題に鑑み、本発明では、画像形成装置を用いて複数ページの出力情報を複数部印刷する場合、高速な印刷をすることができ、かつ、低コストな印刷システムを提供する。
【００１１】
【課題を解決するための手段】
上記課題は、請求項１記載の発明によれば、１頁の印刷情報の複数頁からなる印刷情報群を有し該印刷情報群を印刷指示する印刷指示装置と、前記印刷指示に基づいて印刷する画像形成装置とからなる印刷システムにおいて、前記印刷指示装置は、前記印刷情報群に含まれるそれぞれの印刷情報を識別する識別情報を作成する作成手段と、該作成手段により作成された識別情報を記憶する第１の記憶手段と、前記印刷情報と該印刷情報に対応する識別情報とを前記画像形成装置に送信する第１の送信手段と、前記画像形成装置から送信された識別情報を受信する第１の受信手段と、前記第１の記憶手段に記憶した識別情報であって、かつ前記第１の受信手段により受信した識別情報以外の識別情報を判定する識別情報判定手段と、前記識別情報判定手段の結果に基づいて取得した識別情報に対応する印刷情報を送信する第２の送信手段と、を備え、前記画像形成装置は、前記第１の送信手段により送信された前記印刷情報と前記識別情報を受信する第２の受信手段と、前記前記第２の受信手段により受信した前記印刷情報と前記識別情報とを対応づけた印刷識別対応情報を記憶する第２の記憶手段と、各印刷情報の優先度を算出する優先度算出手段と、前記優先度算出手段により得られた優先度に基づいて、前記第２の記憶手段から前記印刷識別対応情報を消去する消去手段と、前記第２の記憶手段に記憶している識別情報を前記印刷指示装置に送信する第３の送信手段と、を備えることを特徴とする印刷システムを提供することによって達成できる。
【００１２】
このように構成することにより、プリンタのメモリに記憶しきれないような多数のページを複数部印刷する場合でも、優先度が高いページの画像をプリンタのメモリに残すことによって、２部目以降の場合に、ホスト・コンピュータからプリンタヘ送出されるデータの量が少なくなったり、送出されたデータからプリンタが画像を作成する必要が無くなったりするため、高速な印刷が可能になる。
【００１３】
また、請求項２記載の発明によれば、前記優先度算出手段は、印刷情報の情報量と、前記印刷情報に基づいて印刷画像を描画する時間と、描画した印刷画像の情報量と、に基づいて算出されることを特徴とする請求項１記載の印刷システムを提供することによって達成できる。
【００１４】
このように構成することにより、優先度は、描画コマンド列のバイト数と、描画コマンド列の処理時間と、画像メモリのバイト数とから成る３つの変動要因とのそれぞれの係数によって計算されるため、係数の値を適切に選択することによって、２部目以降の印刷において、印刷速度を最優先にしたり、ホスト・コンピュータの処理の軽減を最優先にしたり、印刷速度とホスト・コンピュータ処理のバランスを考慮したりするなど重視する項目に応じた柔軟な対応が可能である。
【００１５】
また、請求項３記載の発明によれば、１頁の印刷情報の複数頁からなる印刷情報群を有し該印刷情報群を印刷指示する印刷指示装置と、前記印刷指示に基づいて印刷する画像形成装置とからなる印刷システムに用いられる印刷指示装置において、前記印刷指示装置は、前記印刷情報群に含まれるそれぞれの印刷情報を識別する識別情報を作成する作成手段と、該作成手段により作成された識別情報を記憶する第１の記憶手段と、前記印刷情報と該印刷情報に対応する識別情報とを前記画像形成装置に送信する第１の送信手段と、前記画像形成装置から送信された識別情報を受信する第１の受信手段と、前記第１の記憶手段に記憶した識別情報であって、かつ前記第１の受信手段により受信した識別情報以外の識別情報を判定する識別情報判定手段と、前記識別情報判定手段の結果に基づいて取得した識別情報に対応する印刷情報を送信する第２の送信手段と、を備えることを特徴とする印刷指示装置を提供することによって達成できる。
【００１６】
このように構成することにより、２部目以降の印刷において、ホスト・コンピュータで作成したページＩＤと、プリンタが返信したステータス応答データに含まれるページＩＤとの差分のページＩＤに対応する印刷データのみをプリンタに送信することで、印刷速度の向上を図ることが可能である。
【００１７】
また、請求項４記載の発明によれば、１頁の印刷情報の複数頁からなる印刷情報群を有し該印刷情報群を印刷指示する印刷指示装置と、前記印刷指示に基づいて印刷する画像形成装置とからなる印刷システムに用いられる前記画像形成装置において、前記第１の送信手段により送信された前記印刷情報と前記識別情報を受信する第２の受信手段と、前記前記第２の受信手段により受信した前記印刷情報と前記識別情報とを対応づけた印刷識別対応情報を記憶する第２の記憶手段と、各印刷情報の優先度を算出する優先度算出手段と、前記優先度算出手段により得られた優先度に基づいて、前記第２の記憶手段から前記印刷識別対応情報を消去する消去手段と、前記第２の記憶手段に記憶している識別情報を前記印刷指示装置に送信する第３の送信手段と、を備えることを特徴とする画像形成装置を提供することによって達成できる。
【００１８】
このように構成することにより、優先度が高いページの画像をプリンタのメモリに残すことによって、２部目以降の場合に、ホスト・コンピュータからプリンタヘ送出されるデータの量が少なくなったり、送出されたデータからプリンタが画像を作成する必要が無くなったりするため、高速な印刷が可能になる。
【００１９】
また、請求項５記載の発明によれば、前記優先度算出手段は、印刷情報の情報量と、前記印刷情報に基づいて印刷画像を描画する時間と、描画した印刷画像の情報量と、に基づいて算出されることを特徴とする請求項４記載の画像形成装置を提供することによって達成できる。
【００２０】
このように構成することにより、優先度は、描画コマンド列のバイト数と、描画コマンド列の処理時間と、画像メモリのバイト数とから成る３つの変動要因とのそれぞれの係数によって計算されるため、係数の値を適切に選択することによって、２部目以降の印刷において、印刷速度を最優先にしたり、ホスト・コンピュータの処理の軽減を最優先にしたり、印刷速度とホスト・コンピュータ処理のバランスを考慮したりするなど重視する項目に応じた柔軟な対応が可能である。
【００２１】
【発明の実施の形態】
第１の実施形態の発明は、複数ページの文書を複数部印刷するホスト・コンピュータとプリンタとの印刷システムである。ホスト・コンピュータは、各ページのデータをプリンタヘ送出する場合、プリンタが同じページであるか否かを識別できるようにするための識別コード（ページＩＤ）を付加する。この識別コード（ページＩＤ）は、ページごとに別々の値であり、かつ、各部の同じページでは同じ値になるように制御される。
【００２２】
最初の１部目の印刷を行う場合、ホスト・コンピュータは、各ページの画像を作成するのに必要な全ての描画コマンドをプリンタヘ送出する。プリンタは、ホスト・コンピュータから受信した描画コマンド列を画像メモリに描画した後、画像を用紙へ印刷すると共に、画像データを識別コード（ページＩＤ）とペアにして、メモリに記憶する。
【００２３】
１部目のページ数が多い場合、プリンタに搭載しているメモリでは、ホスト・コンピュータから送られて来るページに対応する全ての画像を記憶できない場合がある。この場合、プリンタは、優先度に基づいてメモリに記憶している画像の幾つかをページ単位で削除することにより、より優先度の高いページの画像をメモリに残すよう制御する。
【００２４】
１部目の全てのページの印刷が終了し、２部目の印刷を行う手前で、ホスト・コンピュータは、プリンタに対して、プリンタが記憶しているページ画像の問い合わせを行う。プリンタは、問い合わせのあった時点でメモリに記憶している画像に対応する識別コード（ページＩＤ）を、ホスト・コンピュータヘ応答する。
【００２５】
２部目以降の印刷を行う場合、ホスト・コンピュータは、プリンタから応答のあった識別コード（ページＩＤ）と同じページに関しては、プリンタが記憶している画像を印刷するように制御するコマンドをプリンタヘ送出する。プリンタから応答のなかった識別コード（ページＩＤ）のページに関しては、１部目の場合と同じ描画コマンド列をプリンタヘ送出する。
【００２６】
プリンタには１部目と２部目以降の区別はないが、ホスト・コンピュータが上記のように制御することにより、２部目以降の印刷に関して、プリンタのメモリに記憶しているページ画像は、プリンタのメモリから素早く用紙へ印刷できる。前述の優先度は、ホスト・コンピュータからプリンタヘ送出されるデータの大半を占める描画コマンド列のバイト数と、描画コマンド列によってプリンタがメモリへ画像を描画処理するのに要した時間と、描画した結果の画像を記憶するのに必要なメモリのバイト数とに基づいて、それぞれの値に係数を掛けた重み付けによって決定される。
【００２７】
これらの係数を適切に選択することによって、上記（４）の方式のような大量のメモリまたはハード・ディスク装置をプリンタに搭載しなくても、上記（３）の方式に見られる印刷速度の劣化を改善した印刷が可能となる。
次に、第２の実施形態の発明について説明する。第１の実施形態では、１部目の全てのページの印刷が終了した段階で、プリンタで記憶するページ画像が確定している。２部目の印刷を行う手前で、ホスト・コンピュータがプリンタで記憶しているページ画像の問い合わせを１度だけ行い、２部目以降の印刷の場合に描画コマンド列を送出する必要のあるページか否かを判断していた。
【００２８】
これに対して、第２の実施形態の発明では、１部目の印刷でプリンタが記憶できなかったページに関して、ホスト・コンピュータが２部目または３部目以降の印刷で描画コマンド列を送出した場合も、プリンタが画像データを記憶するような制御を行う。この場合、プリンタは、２部目以降の印刷で新たなページ画像をメモリヘ記憶する代わりに、記憶するためのメモリが足りなくなって、既に記憶しているページを削除しなければならなくなる可能性が生じる。
【００２９】
そのため、ホスト・コンピュータは、描画コマンド列を送出した後には必ず、プリンタに対して、記憶しているページ画像の問い合わせを行う。これによって、プリンタは、新たに記憶したページや削除したページが反映された状態の識別コード（ページＩＤ）をホスト・コンピュータヘ応答する。
【００３０】
ホスト・コンピュータは、新たに取得した識別コード（ページＩＤ）の状態に基づいて、以降のページに関して、プリンタが記憶している画像を印刷するように制御するコマンドをプリンタヘ送出するか、または、１部目の場合と同じ描画コマンド列をプリンタヘ送出するかを判断する。
【００３１】
プリンタがメモリに記憶しているページを削除する場合は、第１の実施形態と同じ方法で計算した優先度に基づいて、優先度が高いページの画像を残すように制御する。ただし、２部目の印刷では、１部目の印刷の場合に全てのページを処理した結果がプリンタのメモリに記憶されているため、第１の実施形態より優先度の判定精度が向上する。３部目の印刷でページを削除する場合は、２部目の場合よりもさらに断度の判定精度が向上し、部数が多くなるほど判定精度が向上する。
【００３２】
これは、１部目の印刷でページ画像を削除する場合は、その時点で処理しているページより後ろのページがプリンタに送出されていないため、優先度を判定する際、後ろのページの優先度が考慮されていないのと、１部目および２部目以降の印刷でページ画像を削除する場合、その時点で既に削除されているページに関して優先度が不明なため、記憶していないページの優先度が考慮されないためである。
【００３３】
それでは、以下に、それぞれの実施形態について、詳述する。
＜第１の実施形態＞
図１は、本発明の実施例に関わるシステム構成である。ホスト・コンピュータ１０１は、印刷データを作成してプリンタ１０２へ出力する役割を担う。プリンタ１０２は、ホスト・コンピュータ１０１が出力する印刷データをパラレル・インターフェイス１０３を経由して受信し、印刷データの内容を解析して画像を形成後、用紙に印刷する装置である。
【００３４】
パラレル・インターフェイス１０３は、ホスト・コンピュータ１０１とプリンタ１０２とを接続するパラレル・インターフェイスである。
プリンタ１０２は、２つの大きな機能ブロックから構成される。１つはインターフェイス・コントローラ１０４であり、もう１つはプリンタ・エンジン１０５である。これらは、ビデオ・インターフェイス１０６で接続されている。インターフェイス・コントローラ１０４は、印刷データの受信と内容解析と画像データの作成を担う。プリンタ・エンジン１０５は、インターフェイス・コントローラ１０４が作成した画像データを用紙に印刷するための各種機械的な制御を担う。
【００３５】
ホスト・コンピュータ１０１は、以下の様なハードウェアから構成される。キーボード１０７は、オペレータがホスト・コンピュータに指示を与えるための入力装置である。ディスプレイ１０８は、ホスト・コンピュータの処理結果などを表示するための出力装置である。
【００３６】
フロッピー（登録商標）・ディスク・ドライブ１０９は、各種データを取りはずし可能なメディアに記憶するための記憶装置である。ハードディスク・ドライブ１１０は、各種アプリケーション・プログラムやデータが予め記憶されている記憶装置である。
【００３７】
ＲＯＭ１１１は、ホスト・コンピュータの起動プログラムが格納されているＲＯＭ（リード・オンリー・メモリ）である。ＲＡＭ１１２は、アプリケーション・プログラムを実行する場合に、必要なプロクラムやデータを格納するＲＡＭ（ランダム・アクセスメモリ）である。
【００３８】
ＣＰＵ１１３は、起動プログラムやアプリケーション・プログラムに従ってホスト・コンピュータを制御する中央処理演算装置である。プリンタ・インターフェイス１１４は、プリンタヘ印刷データを送信したり、プリンタの状態を受信するためのインターフェイスである。
【００３９】
インターフェイス・コントローラ１０４は、以下の様なハードウェアから構成される。ホスト・インターフェイス１１５は、パラレル・インターフェイス１０３を介して、送信されて来る印刷データを取り込んだり、プリンタ１０２の状態応答を返信するためのインターフェイスである。
【００４０】
オペレーション・パネル１１６は、幾つかのスイッチと表示手段から構成される操作パネルである。プリンタ１０２の各種状態を表示したり、プリンタ１０２を操作するオペレータからの指示を入力する目的で使われる。
Ｍａｓｋ−ＲＯＭ１１７は、各文字コードに対応する図形データを記憶しているＲＯＭである。印刷データの中に文字コード情報が含まれている場合、画像データを作成するために、文字コードに対応する図形データを参照する目的で使われる。ＲＯＭ１１８は、インターフェイス・コントローラ１０４を制御するのに必要なプログラムが格納してあるＲＯＭである。
【００４１】
ＲＡＭ１１９は、印刷データの受信や内容解析に必要な変数、及び、作成した画像データを格納するためのＲＡＭである。ＣＰＵ１２０は、プログラムを実行する中央処理演算装置である。ＣＰＵ１２０は、ＲＯＭ１１８に記憶されているプログラムを順次実行することにより、インターフェイス・コントローラ１０４で必要な制御を成し遂げるためのＣＰＵである。
【００４２】
エンジン・インターフェイス１２１は、作成した画像データや制御情報を、ビデオ・インターフェイス１０６を介して、プリンタ・エンジン１０５へ送出したり、プリンタ・エンジン１０５の状態を取得するためのインターフェイスである。
【００４３】
図２は、ホスト・コンピュータ１０１で実行する印刷に関わる部分のプログラムである。この図２では、プリンタ１０２ヘデータを送出して、Ｎページ（Ｎは任意の正数）の印刷物をＭ部（Ｍは任意の正数）印刷するプログラムのフローを記述している。図３は、後述するページＩＤ記憶テーブルを示したものである。
【００４４】
図４および図５は、図２のプログラムに対応するプリンタ１０２のインターフェイス・コントローラ１０４で実行するプログラムである。ホスト・コンピュータ１０１から送られてくるコマンドを解釈し、必要な制御を実行する。
図２のプログラムと、図４および図５のプログラムとは、協調して本発明の動作を達成する。
【００４５】
まず、１部目の印刷では、ホスト・コンピュータ１０１側は、各ページの画像の作成と印刷に必要なコマンドを順次プリンタ１０２へ送出し、プリンタ１０２側は、インターフェイス・コントローラ１０４が各ページの画像を作成して、プリンタ・エンジン１０５が用紙への印刷を行う。このとき、インターフェイス・コントローラ１０４は、メモリが許す範囲で作成した各ページの画像を全て記憶しようとする。もし、インターフェイス・コントローラ１０４が１部目の途中のページでメモリ不足になった場合、後続ページの画像を作成するのに必要なメモリを確保するため、それまでに記憶している画像をページ単位で削除して、１部目の全てのページの画像の作成と印刷を遂行する。画像の削除は、各ページで後述する評価式Ｚに基づいて計算した優先度に従って、優先度が低い１ページを先に削除する。
【００４６】
１部目の印刷が終わると、２部目の印刷を行う前に、ホスト・コンピュータ１０１は、インターフェイス・コントローラ１０４で記憶しているページをチェックする。そして、２部目及び３部目以降、ホスト・コンピュータ１０１は、インターフェイス・コントローラ１０４が記憶しているページに関しては、画像の作成に必要なコマンドを省いたデータをプリンタ１０２へ送出する。
【００４７】
インターフェイス・コントローラ１０４は、ページごとに、メモリで記憶している画像のページなのか、画像を作成するコマンドが送られて来るページなのかを識別し、その識別結果に応じてメモリに記憶済みの画像もしくは新しく作成した画像を印刷する。
【００４８】
以下は、図２の各ステップの説明である。ステップＴ２０１（以下、ステップをＴと略する）からＴ２０８までは、１部目の印刷を行うためのプログラム・ステップである。
まず、初期化コマンドをプリンタ１０２へ送出する（Ｔ２０１）。初期化コマンドは、一連の印刷の始めに１度だけ送出し、インターフェイス・コントローラ１０４のメモリを初期化する機能である。初期化コマンドには、インターフェイス・コントローラ１０４で各ページの画像の優先度を決めるための評価式Ｚの係数も付随する。この評価式Ｚや係数に関しては、後述する図５のＴ３１９で説明する。
【００４９】
次に、１部目のページ番号を表す変数Ｘを初期化して１ページ目にする（Ｔ２０２）。
次に、各ページを識別するためのページＩＤを生成して、図３に示したページＩＤ記憶テーブル２５０に登録する（Ｔ２０３）。ページＩＤはページ毎に異なる値で、かつ、１部目と２部目以降の同じページでは同じ値を持つデータである。２部目以降の印刷で、インターフェイス・コントローラ１０４のメモリに記憶されている画像のページを識別する必要が生じた場合、ホスト・コンピュータ１０１は、ページＩＤを使って記憶されているページであるかどうかを判断する。
【００５０】
ページＩＤ記憶テーブル２５０は、各ページのページＩＤを、ホスト・コンピュータ１０１で記憶しておくための変数配列である。この配列は、１部目の各ページの印刷を行う場合に各変数の値が確定し、２部目以降の印刷を行う場合に参照される。
【００５１】
次に、Ｔ２０３で生成したＸページ目のページＩＤをプリンタ１０２へ送出する（Ｔ２０４）。これにより、プリンタ１０２のインターフェイス・コントローラ１０４は、これから印刷するページがＴ２０３で生成したページＩＤに関する処理であることを認識して、他のページとは区別できるようになる。
【００５２】
次に、Ｘページ目の画像をプリンタ１０２のインターフェイス・コントローラ１０４に作成させるための描画コマンド列を送出する（Ｔ２０５）。通常、１ページ分の画像をプリンタに描画させるためには数多くのコマンドが必要である。複雑な図形や画像を用紙に印刷する場合、ホスト・コンピュータからプリンタヘ送出されるデータの９０％以上が描画に関連するコマンドで、残りの１０％以下が用紙印刷の動作をセットアップしたり、実行させたりするなどのコマンドであることが多い。
【００５３】
本実施例では、データの大半を占める描画に関連するコマンドの具体的な記述を省略しており、これらのコマンドを描画コマンド列として扱っている。
次に、画像記憶コマンドをプリンタ１０２へ送出する（Ｔ２０６）。画像記憶コマンドは、Ｔ２０４及びＴ２０５で関連付けられたページＩＤと描画された画像を、プリンタ１０２のメモリに記憶させるコマンドである。このコマンドにより、インターフェイス・コントローラ１０４は、メモリが許す範囲で、描画コマンド列で描画した画像を用紙印刷の後もメモリに残す制御を行う。
【００５４】
次に、Ｔ２０５でプリンタ１０２のインターフェイス・コントローラ１０４に作成させた画像を用紙へ印刷させるための印刷開始コマンドを、プリンタ１０２へ送出する（Ｔ２０７）。このコマンドにより、プリンタ１０２は描画した１ページ分の画像を１枚の用紙に印刷する。
【００５５】
次に、１部目の印刷が終了したか否かを判断している（Ｔ２０８）。ページ番号を表す変数Ｘを更新して、Ｎページに未到達であればＴ２０３に戻り、Ｎページに到達したらＴ２０９以降のステップヘ進む。
Ｔ２０３からＴ２０８の処理は１部目の各ページについて行われ、それぞれのページＩＤに関連した画像をインターフェイス・コントローラ１０４に作成／記憶／印刷させるループ処理になっている。
【００５６】
Ｔ２０９とＴ２１０は、１部目の印刷と２部目の印刷の間に行うプログラム・ステップである。まず、ステータス確認コマンドをプリンタ１０２へ送出する（Ｔ２０９）。ステータス確認コマンドは、インターフェイス・コン卜ローラ１０４で記憶している画像のページＩＤを列挙して、ステータス応答することをインターフェイス・コントローラ１０４に指示するコマンドである。
【００５７】
次に、Ｔ２０９で送出したステータス確認コマンドに対応する応答データを受信する（Ｔ２１０）。ホスト・コンピュータ１０１は、Ｔ２０９で送出したコマンドに対応するステータス応答データがプリンタ１０２から返信されて来るのを待ち、受信したページＩＤの列挙データを取得する。
【００５８】
このデータは、Ｔ２０１からＴ２０８の１部目の印刷を行った後、その結果としてインターフェイス・コントローラ１０４に記憶されている画像がどのページなのかを識別する情報で、２部目以降の印刷を行う場合に使う情報である。プリンタ１０２からホスト・コンピュータ１０１へ送信されるステータス応答データは、後述する図８に示す。
【００５９】
Ｔ２１１からＴ２１９は、２部目以降の印刷を行うプログラム・ステップである。この内のＴ２１２からＴ２１８は、各部のページ一式を印刷するステップになっている。
まず、部数を数えるための変数Ｙを初期化して２部目にする（Ｔ２１１）。次に、ページ番号を表す変数Ｘを初期化して１ページ目にする（Ｔ２１２）。次に、ページＩＤ記憶テーブル２５０を参照して、Ｘページ目のページＩＤを取得する（Ｔ２１３）。ページＩＤは、１部目の各ページを印刷する場合にＴ２０３で生成して書き込まれたデータであり、１部目と２部目以降の同じページでは、ページＩＤ記憶テーブル２５０の同じ場所を参照することにより、同じページＩＤを取得することができる。
【００６０】
次に、Ｔ２１３で取得したＸページ目のページＩＤをプリンタ１０２へ送出する（Ｔ２１４）。このページＩＤの送出により、これから印刷するページが１部目のどのページと同じなのかを、プリンタ１０２のインターフェイス・コントローラ１０４に識別させることができる。
【００６１】
次に、Ｔ２１３で取得してＴ２１４でプリンタ１０２へ送出したＸページ目のページＩＤが、Ｔ２０９及びＴ２１０でプリンタ１０２から取得したステータス応答データの中に含まれているか否か、すなわち、プリンタ１０２のインターフェイス・コントローラ１０４がＸページ目の画像を記憶しているか否かを判断する（Ｔ２１５）。Ｘページ目のページＩＤが含まれていない場合はＴ２１６へ進み、含まれている場合はＴ２１６を実行せずにＴ２１７へ進む。
【００６２】
Ｔ２１５で、プリンタ１０２のインターフェイス・コントローラ１０４がＸページ目の画像を記憶していない場合、Ｘページ目の画像をインターフェイス・コントローラ１０４に作成させるための描画コマンド列を送出する（Ｔ２１６）。これは、Ｔ２０５と同じ処理である。前述した様に、１ページ分の画像をプリンタに描画させるためには数多くのコマンドが必要なため、Ｔ２１５の条件分岐でＴ２１６を実行する必要があると判断されるか否かは、Ｘページ目に関連してホスト・コンピュータ１０１がプリンタ１０２へ送出するデータの量を大きく左右することになる。
【００６３】
次に、印刷開始コマンドをプリンタ１０２へ送出する（Ｔ２１７）。このコマンドにより、Ｔ２１３からＴ２１６までの処理で、プリンタ１０２のインターフェイス・コントローラ１０４に準備されたＸページ目の画像を用紙に印刷させる。
【００６４】
次に、各部ごとの全てのページが終了したか否かを判断している（Ｔ２１８）。ページ番号を表す変数Ｘを更新して、Ｎページに未到達であればＴ２１３に戻り、Ｎページに到達したらＴ２１９以降のステップヘ進む。
次に、全ての部数の印刷が終了したか否かを判断している（Ｔ２１９）。部数を数えるための変数Ｙを更新して、Ｍ部に未到達であればＴ２１２に戻り、Ｍ部に到達したらホスト・コンピュータの印刷プログラムを終了する。
【００６５】
Ｔ２１１からＴ２１９の処理は、全体として、２部目以降の各部の各ページについて、それぞれのページＩＤに関連した画像をインターフェイス・コントローラ１０４が記憶しているか否かを判断して、記憶している場合は、プリンタ１０２への描画コマンド列の送出を行わずに印刷させるループ処理になっている。
【００６６】
次に、図４および図５を参照しながら、プリンタ１０２のインターフェイス・コントローラ１０４で実行する制御フローについて説明する。
まず、ホスト・コンピュータ１０１がプリンタ１０２へ送出したコマンドを、１個ずつデータ受信する（Ｔ３０１）。
【００６７】
次に、受信したコマンドの種類を判別して、以降で説明するプログラム・ステップの何れかへ分岐する（Ｔ３０２）。通常、プリンタのコマンドは複数バイトのデータで１個のコマンドを表し、各バイトを順に解析していくことによってコマンドを識別する。
【００６８】
各コマンドをバイト・データで表現することは本発明と関係ないため、図４および図５では、各コマンドに対応するバイト・データの説明を行っていない。複数バイトのデータを合わせて１個のコマンドとして扱い、コマンドの種類を識別するための詳細なアルゴリズムは省略している。
【００６９】
実際のプリンタには数多くの種類のコマンドがあるが、図４および図５は、本実施例に関係するコマンドだけを表しており、関係ないコマンドを省略している。
図２のＴ２０５やＴ２１６でプリンタ１０２に送られて来る描画コマンド列は、インターフェイス・コントローラ１０４の画像メモリに画像を描画するために、多数の種類のコマンドが数多く組み合わされて構成された多量のバイト・データである。描画コマンド列に含まれるコマンドの組み合わせは、描画しようとする画像によって異なるが、本実施例では、描画コマンド列に含まれる個々のコマンドの説明は省略し、単に描画コマンド列として扱っている。
【００７０】
本発明においては、描画コマンド列が多量のバイト・データから構成されることと、同じ画像を描画する場合は描画コマンド列も同じであることとが関係する。
Ｔ３０３とＴ３０４は、Ｔ３０１でホスト・コンピュータ１０１から受信したデータが、Ｔ３０２で初期化コマンドと判別された場合に行うプログラム・ステップである。図２のＴ２０１で、ホスト・コンピュータ１０１が送出したコマンドの実行処理に対応する。
【００７１】
まず、図６で示される画像記憶テーブルの全ての変数をゼロに初期化し、変数Ｓをゼロに初期化する（Ｔ３０３）。ここで、変数Ｓは、特に囲示していないが、インターフェイス・コントローラ１０４のメモリ変数である。変数Ｓは、インターフェイス・コントローラ１０４が描画コマンド列を処理している途中でメモリ不足になり、記憶済みの画像をページ単位で削除する必要が生じた場合、削除したページの画像メモリの最大バイト数を記憶する変数である。
【００７２】
次に、後述するＴ３１９で優先度を計算する際に使用する評価式Ｚの係数を記憶する（Ｔ３０４）。
ここで、図６に示す画像記憶テーブルについて説明する。画像記憶テーブルは、インターフェイス・コントローラ１０４のメモリ変数で、図６に示すＧ３５０，Ｇ３５１，Ｇ３５２，Ｇ３５３，Ｇ３５４から構成されている。
【００７３】
Ｇ３５０は、記憶している画像のページ数（画像の個数）を格納している。Ｇ３５１は、ホスト・コンピュータ１０１から送られて来たページＩＤを記憶する変数である。Ｇ３５２は、後述するＴ３１９で計算した画像の優先度を記憶する変数である。Ｇ３５３は、描画コマンド列を処理して描画した画像メモリのアドレスを記憶する変数である。Ｇ３５４は、描画コマンド列を処理して描画した画像メモリのバイト数を記憶する変数である。
【００７４】
Ｇ３５１，Ｇ３５２，Ｇ３５３，Ｇ３５４は、４個の変数が一式で１ページ分のセットになっており、インターフェイス・コントローラ１０４で記憶可能な画像メモリのページ数と同じ個数のセットが存在する。画像記憶テーブルは、Ｔ３０３で初期化された後、後述するＴ３２０で画像メモリの登録が行われ、Ｔ３１０やＴ３２４で登録内容の削除が行われる。
【００７５】
ホスト・コンピュータ１０１は、１部目の各ページを印刷する場合、作成した画像の全てのページを記憶させるべく、インターフェイス・コントローラ１０４へ画像記憶コマンドを送信して来る。
しかし、インターフェイス・コントローラ１０４のメモリが不足して画像を削除してしまった場合、２部目以降で、ホスト・コンピュータ１０１は、インターフェイス・コントローラ１０４が記憶していないページの画像を再度作成させるべく、１部目と同じ描画コマンド列を再度送って来る。
【００７６】
このとき、１部目で記憶済みの他のページの画像を削除しないで、送られて来た描画コマンド列による画像が作成できることを確実にするため、インターフェイス・コントローラ１０４は、１部目で削除してしまったページの画像メモリの最大バイト数分のメモリを空けておく必要がある。
【００７７】
変数Ｓは、２部目以降で描画コマンド列が送られて来るのに備えて、空けておく必要のあるメモリのバイト数を記憶する変数である。
ここで、評価式Ｚの係数は、後述するＴ３１９で、各ページの画像の優先度を計算する場合に使用するパラメータである。初期化コマンドにはパラメータが３つ付随し、係数Ａと係数Ｂと係数Ｃを指定する。ホスト・コンピュータ１０１は、図２のＴ２０１で初期化コマンドを送出する場合、３つの係数をプリンタ１０２へ送出する。Ｔ３０４は、これらの係数を、インターフェイス・コントローラ１０４のメモリ変数に記憶する処理である。係数Ａと係数Ｂと係数Ｃは、特に図示していないが、インターフェイス・コントローラ１０４の独立した３つのメモリ変数に記憶される。
【００７８】
Ｔ３０５は、Ｔ３０１でホスト・コンピュータ１０１から受信したデータが、Ｔ３０２でページＩＤコマンドと判別された場合に行うプログラム・ステップである。ホスト・コンピュータ１０１が、図２のＴ２０４やＴ２１４で送出したコマンドの実行処理に対応する。
【００７９】
ここでは、送られて来たページＩＤを、インターフェイス・コントローラ１０４のメモリ変数に記憶する（Ｔ３０５）。このメモリ変数は持に囲示していないが、記憶したページＩＤは、後述するＴ３２０で画像メモリを登録する場合や、後述する印刷開始コマンドのＴ３２１やＴ３２２で参照される。
【００８０】
Ｔ３０６からＴ３１８は、Ｔ３０１でホスト・コンピュータ１０１から受信したデータが、Ｔ３０２で描画コマンド列と判別された場合に行うプログラム・ステップである。ホスト・コンピュータ１０１が図２のＴ２０５やＴ２１６で送出した描画コマンド列の実行処理に対応する。
【００８１】
前述した様に、描画コマンド列の中の個々のコマンドの説明は省略しているが、Ｔ３０８からＴ３１５は、本実施例に関係する内容の範囲で、個々の描画コマンドに必要な処理を記述している。本実施例では、描画コマンド列の中の個々の描画コマンドを実行処理する場合、画像メモリの動的割り当てを行う。
【００８２】
画像メモリは、図形が描画される場合、描画しようとする図形の座標範囲に応じて、動的にメモリが割り当てられる。個々のページの最初で何も描画されていない状態では、画像メモリは何も割り当てられていない。
始めの描画コマンドを実行する場合、そのコマンドで描画しようとする囲形の座標範囲が事前にチェックされ、描画しようとする囲形を記憶するのに必要な座標範囲の画像メモリが確保されてから、図形の描画を行う。
【００８３】
そして、次の描画コマンドを実行する場合は、描画しようとする図形の座標範囲と、既に割り当ててある画像メモリの座標範囲とが比較され、描画しようとする図形の座標範囲が画像メモリを超えている場合は、新たなメモリを割り当てて画像メモリに描画できる座標範囲を拡張してから図形を描画する。
【００８４】
まず、描画コマンド列の全体のバイト数を数えるためのカウンタをクリアする（Ｔ３０６）。このカウンタは、Ｔ３１４で個々のコマンドのバイト数が加算され、Ｔ３１８で合計値が確定し、後述するＴ３１９で優先度を計算する場合に使われる。
【００８５】
次に、描画コマンド列の実行時間を計測するためのタイマーをスタートする（Ｔ３０７）。このタイマーは、図示していないハードウェアのタイマーであり、描画コマンド列の最初のコマンドから最後のコマンドまでをインターフェイス・コントローラ１０４が実行処理して、画像を作成するのに要した時間を計測するためのものである。Ｔ３１７で時間の計測値が確定し、後述するＴ３１９で優先度を計算する場合に使われる。
【００８６】
次に、１個の描画コマンドを実行する前に、描画しようとする囲形の座標範囲に画像メモリが既に割り当てられているか、割り当てられていない場合は必要とするメモリが確保できるか否かを判断する（Ｔ３０８）。画像メモリが既に割り当てられているか、または、割り当てるのに必要なメモリが確保できる場合は、Ｔ３１３へ進む。そうでない場合は、必要な画像メモリを確保するため、Ｔ３０９以降のステップヘ進む。
【００８７】
Ｔ３０９からＴ３１２は、画像メモリヘの新たなメモリの割り当てが必要な場合に、インターフェイス・コントローラ１０４に実装しているメモリが使い果たされていて、新たなメモリを確保できない場合に行う処理である。既に画像記憶テーブルに登録されている画像メモリの中から１ページを選んで削除し、割り当てられていたメモリを開放することによって、空きメモリを作成する。
【００８８】
現在処理している描画コマンド列で作成している途中の画像メモリは、画像記憶テーブルヘの登録処理がまだ行われていない。従って、画像記憶テーブルの中からの画像メモリの選択と削除は、新たなメモリの割り当てが必要な画像メモリとは違うページを対象に行われる。
【００８９】
まず、画像記憶テーブルに画像メモリが登録されているか否かを判断する（Ｔ３０９）。１ページ以上の画像メモリが登録されている場合は、Ｔ３１０以降のステップヘ進む。
Ｔ３０９で画像記憶テーブルに何も登録されていないと判断されるということは、現在処理している描画コマンド列で作成している途中の画像メモリだけで、インターフェイス・コントローラ１０４に実装しているメモリがオーバー・フローしてしまったことを表す。この様な場合の処理は、本発明の範囲を超えている。本実施例では、インターフェイス・コントローラ１０４の致命的なエラーとして、図４および図５で示されるフローをエラー終了とする。
【００９０】
Ｔ３０９で１ページ以上の画像メモリが登録されている場合、画像記憶テーブルに登録されている画像メモリの中から、最も優先度の低いページを１つ選択し、このページに割り当てられている画像メモリを開放する（Ｔ３１０）。これにより、インターフェイス・コントローラ１０４に実装しているメモリの中で、使われていない空きメモリか増える。画像メモリを開放したページは、画像記憶テーブルの登録情報が削除され、記憶している画像の個数Ｇ３５０も１つ減算される。
【００９１】
次に、Ｔ３１０で画像記憶テーブルから削除したページの画像メモリのバイト数と、変数Ｓで記憶している値を比較して条件分岐する（Ｔ３１１）。削除したページの画像メモリのバイト数の方が大きい場合は、Ｔ３１２へ進む。そうでない場合は、Ｔ３０８へ戻る。
【００９２】
Ｔ３１１で削除したページの画像メモリのバイト数の方が、変数Ｓより大きい場合は、変数ＳをＴ３１０で削除したページの画像メモリのバイト数に変更する（Ｔ３１２）。変数Ｓは、前述した様にＴ３０３でゼロに初期化され、Ｔ３１１とＴ３１２によって、画像記憶テーブルから削除したページの画像メモリの最大バイト数を記憶するようになっている。
【００９３】
Ｔ３１１とＴ３１２は、何れもＴ３０８へ戻る。Ｔ３０８では、新たな空きメモリを基にして、再度、作成途中の画像メモリヘ新しく割り当てるのに必要なメモリが確保できるか否かチェックする。メモリが確保できる場合は、Ｔ３１３へ進むが、確保できない場合は、再び、Ｔ３０９からＴ３１２を実行し、優先度の低いページを削除して空きメモリを増やす。
【００９４】
Ｔ３０８からＴ３１２は、図形を描画するのに必要な新たなメモリを確保できるまで繰り返すループ処理になっている。
Ｔ３０８で画像メモリが既に割り当てられているか、または、割り当てるのに必要なメモリが確保できる場合、１個の描画コマンドを実行し、画像メモリヘ囲形を描画する（Ｔ３１３）。画像メモリヘ図形を描画する場合、画像メモリに新たなメモリの割り当てが必要な場合は、Ｔ３０８からＴ３１２で確保した空きメモリを使用する。
【００９５】
次に、Ｔ３１３で画像メモリヘ描画したコマンドのバイト数をカウンタに加算する（Ｔ３１４）。このカウンタは、Ｔ３０６でクリアされ、個々の描画コマンドを実行することに、Ｔ３１４で加算される。
次に、描画コマンド列の中の個々の描画コマンドを、全て実行したか否か判断する（Ｔ３１５）。残りのコマンドがある場合は、Ｔ３０８に戻って、次の描画コマンドに関してＴ３０８からＴ３１５の処理を実行する。残りのコマンドが無くなった場合は、Ｔ３１６以降のステップヘ進む。
【００９６】
Ｔ３１５で残りのコマンドが無くなった場合、Ｔ３０８からＴ３１５で作成した画像メモリを調べて、描画された囲形の画像メモリのバイト数を確定し、インターフェイス・コントローラ１０４のメモリ変数に記憶する（Ｔ３１６）。
次に、描画コマンド列の実行時間を計測するためのタイマーをストップして、画像メモリヘ図形を描画するのに要した時間を確定し、インターフェイス・コントローラ１０４のメモリ変数に記憶する（Ｔ３１７）。
【００９７】
次に、描画コマンド列の全体のバイト数を確定し、インターフェイス・コントローラ１０４のメモリ変数に記憶する（Ｔ３１８）。このバイト数の値は、Ｔ３１４で個々のコマンドのバイト数が加算された合計値である。
Ｔ３１６からＴ３１８は、ホスト・コンピュータ１０１が図２のＴ２０５やＴ２１６で送出した描画コマンド列を、インターフェイス・コントローラ１０４が実行処理して計測した、画像メモリのバイト数と、描画コマンド列の実行時間と、描画コマンド列のバイト数とを確定している。これらの値は、画像記憶コマンドを実行する場合、Ｔ３１９で優先度を計算するのに使われる。
【００９８】
Ｔ３１９とＴ３２０は、Ｔ３０１でホスト・コンピュータ１０１から受信したデータがＴ３０２で画像記憶コマンドと判別された場合に行うプログラム・ステップである。ホスト・コンピュータ１０１が、図２のＴ２０６で送出したコマンドの実行処理に対応する。
【００９９】
まず、Ｔ３０６からＴ３１８で作成した画像メモリの優先度を計算して確定する（Ｔ３１９）。
次に、Ｔ３０６からＴ３１８で作成した画像メモリを画像記憶テーブルに登録する（Ｔ３２０）。記憶している画像の個数Ｇ３５０を１つ加算し、Ｔ３０５で記憶したページＩＤと、Ｔ３１９で計算した優先度と、Ｔ３０６からＴ３１８で作成した画像メモリのアドレスと、Ｔ３１６で確定した画像メモリのバイト数とを、画像記憶テーブルの空いている場所（ページＩＤ３５１、優先度３５２、画像のアドレス３５３、画像のバイト数３５４）に登録する。
【０１００】
画像メモリの優先度は、描画コマンド列のバイト数と、描画コマンド列の処理時間と、画像メモリのバイト数とに、それぞれの係数を掛けてから、足し合わせた合計値である。以下の評価式Ｚを使って計算する。
優先度　＝　Ａ×（描画コマンド列のバイト数）
＋Ｂ×（描画コマンド列の処理時間）
＋Ｃ×（画像メモリのバイト数）
係数Ａと係数Ｂと係数Ｃは、ホスト・コンピュータ１０１が初期化コマンドに付随して送出した値であり、Ｔ３０４でメモリ変数に記憶した値を使用する。描画コマンド列のバイト数は、ホスト・コンピュータ１０１が送出した描画コマンド列をＴ３０６からＴ３１８で実行処理して、Ｔ３１８でメモリ変数に記憶した値を使用する。同様に、描画コマンド列の処理時間と画像メモリのバイト数は、Ｔ３１７及びＴ３１６でメモリ変数に記憶した値を使用する。
【０１０１】
画像メモリの優先度は、大きい値は高く評価され、小さい値は低く評価される。Ｔ３１０や後述するＴ３２４で、画像記憶テーブルに登録されている画像メモリの中から最も優先度の低いページを選択する場合は、優先度の値が最も小さいものを選ぶ。
【０１０２】
描画コマンド列のバイト数と描画コマンド列の処理時間と画像メモリのバイト数は、ホスト・コンピュータ１０１が送出する描画コマンド列の内容によって決まり、インターフェイス・コントローラ１０４の画像メモリに作成された画像の特徴を表す。描画コマンド列の内容はページごとに異なるが、各部の同じページでは同じ内容である。従って、各部の同じページでは、描画コマンド列のバイト数と描画コマンド列の処理時間と画像メモリのバイト数も同じ値になる。
【０１０３】
描画コマンド列のバイト数は、描画する画像の複雑さや面積に依存して、多かったり少なかったりする。描画コマンド列のバイト数が多い場合、図２のＴ２０５やＴ２１６でホスト・コンピュータ１０１が描画コマンド列を生成するのに必要な処理時間が長くなったり、ホスト・コンピュータ１０１からプリンタ１０２へ描画コマンド列をデータ転送するのに必要な時間が長くなったりする。
【０１０４】
これらの時間は、ホスト・コンピュータ１０１のＣＰＵ１１３やプリンタ・インターフェイス１１４、プリンタ１０２のインターフェイス・コントローラ１０４のＣＰＵ１２０やホスト・インターフェイス１１５の処理性能にも依存する。描画コマンド列の処理時間は、描画コマンド列のバイト数が多いと処理時間も長くなる傾向にあるが、描画コマンド列を構成する個々のコマンドの種類と出現回数によっては、少ないバイト数でも処理時間が長くなることもある。描画コマンド列の処理時間が長い場合、インターフェイス・コントローラ１０４がプリンタ・エンジン１０５へ画像データを出力する時期が遅れ、用紙の印刷が遅くなる。
【０１０５】
画像メモリのバイト数は、描画コマンド列で描画する画像の面積に比例する。画像メモリのバイト数が多いページは、インターフェイス・コントローラ１０４に実装しているメモリの多くを占有するため、記憶できるページ数が少なくなる。これは、２部目以降で、ホスト・コンピュータ１０１が１部目と同じ描画コマンド列を再度送出する必要のあるページ数を増やすことになる。
【０１０６】
係数Ａと係数Ｂと係数Ｃは、画像メモリの優先度を計算するために、描画コマンド列のバイト数と描画コマンド列の処理時間と画像メモリのバイト数のうち、どの値を重視するかを決める。
評価式Ｚの中で「Ａ×（描画コマンド列のバイト数）」が大きくなるように係数Ａの値を決めると、描画コマンド列のバイト数が多いページの優先度が高くなり、Ｔ３１０や後述するＴ３２４でページを削除する場合、削除対象のページになる可能性が少なくなる。
【０１０７】
これによって、２部目以降において、ホスト・コンピュータ１０１が図２のＴ２１６でバイト数の多い描画コマンド列を実行処理する可能性が低くなり、ホスト・コンピュータ１０１からプリンタ１０２へ送出されるデータのバイト数が少なくなる。
【０１０８】
ホスト・コンピュータ１０１のＣＰＵ１１３やプリンタ・インターフェイス１１４、プリンタ１０２のホスト・インターフェイス１１５の処理性能が低くても比較的速く印刷できるようにしたい場合や、ホスト・コンピュータ１０１での印刷処理を軽減して印刷以外の処理が早く行えるようにしたい場合に有効である。
【０１０９】
評価式Ｚの中で「Ｂ×（描画コマンド列の処理時間）」が大きくなるように係数Ｂの値を決めると、描画コマンド列の処理時間が長いページの優先度が高くなり、Ｔ３１０や後述するＴ３２４でページを削除する場合、削除対象のページになる可能性が少なくなる。
【０１１０】
これによって、２部目以降において、ホスト・コンピュータ１０１が図２のＴ２１６で処理時間の長い描画コマンド列を送出する可能性が低くなり、インターフェイス・コントローラ１０４がＴ３０６からＴ３１８を長時間処理する可能性が低くなる。用紙の印刷を極力速くしたい場合に有効である。
【０１１１】
評価式Ｚの中で「Ｃ×（画像メモリのバイト数）」は、上記の２項とは異なる使い方をする。「Ｃ×（画像メモリのバイト数）」がマイナスの数値となるように係数Ｃの値を決めると、画像メモリのバイト数が多いページの優先度が低くなり、Ｔ３１０や後述するＴ３２４でページを削除する場合、削除対象のページになる可能性が高くなる。これによって、インターフェイス・コントローラ１０４に実装しているメモリに、画像メモリのバイト数が少ないページを多数記憶するようになる。
【０１１２】
係数Ｃは、係数Ａ又は係数Ｂと組み合わせて使用する。例えば、「Ａ×（描画コマンド列のバイト数）」が大きくなるように係数Ａの値を決め、かつ、「Ｃ×（画像メモリのバイト数）」がマイナスの数値となるように係数Ｃの値を決めると、画像記憶テーブルには、描画コマンド列のバイト数が多くて画像メモリのバイト数が少ないページを優先して登録するようになり、２部目以降でホスト・コンピュータ１０１が送出するデータのバイト数とインターフェイス・コントローラ１０４に実装しているメモリの効率を両方加味できる。
【０１１３】
同様に、「Ｂ×（描画コマンド列の処理時間）」が大きくなるように係数Ｂの値を決め、かつ、「Ｃ×（画像メモリのバイト数）」がマイナスの数値となるように係数Ｃの値を決めると、画像記憶テーブルには、描画コマンド列の処理時間が長くて画像メモリのバイト数が少ないページを優先して登録するようになり、２部目以降の印刷速度とインターフェイス・コントローラ１０４に実装しているメモリの効率を両方加味できる。
【０１１４】
係数Ａと係数Ｂと係数Ｃは、重視する項とその他の項とのバランスを考慮して、目的に応じた柔軟な設定が可能である。
なお、評価式Ｚで計算した優先度は、インターフェイス・コントローラ１０４に実装しているメモリが使い果たされている状態で必要なメモリを新たに確保するため、画像記憶テーブルに登録されている画像メモリを削除する場合に使われる。
【０１１５】
１部目のページ数が少ないとか、画像メモリヘ描画する画像の面積が小さくてバイト数が少ないなどの理由により、インターフェイス・コントローラ１０４が１部目の全てのページの画像メモリを記憶できる場合は、Ｔ３１０や後述するＴ３２４を実行しないため、優先度が参照されることはない。
【０１１６】
Ｔ３２１からＴ３２８は、Ｔ３０１でホスト・コンピュータ１０１から受信したデータがＴ３０２で印刷開始コマンドと判別された場合に行うプログラム・ステップである。ホスト・コンピュータ１０１が図２のＴ２０７やＴ２１７で送出したコマンドの実行処理に対応する。
【０１１７】
印刷開始コマンドの実行処理は、印刷しようとしているページＩＤの画像メモリが画像記憶テーブルに登録されているか否かで、２つの処理に分かれる。
１部目の印刷では、図２は、Ｔ２０４からＴ２０７までのステップで、ページＩＤコマンドと描画コマンド列と画像記憶コマンドと印刷開始コマンドとをプリンタ１０２へ順に送出する。このため、印刷開始コマンドを実行する場合、印刷しようとしているページＩＤの画像メモリは、必ず画像記憶テーブルに登録されている。
【０１１８】
２部目以降の印刷では、図２のＴ２１４からＴ２１７までのステップで、ページＩＤコマンドと印刷開始コマンドとのみをプリンタ１０２へ送出する場合と、ページＩＤコマンドと描画コマンド列と印刷開始コマンドとをプリンタ１０２へ送出する場合がある。前者は、印刷しようとしているページＩＤの画像メモリが、画像記憶テーブルに登録されている場合のコマンド送出であり、後者は、画像記憶テーブルに登録されていない場合のコマンド送出である。
【０１１９】
画像記憶テーブルに登録されているページＩＤの画像メモリを印刷する場合、インターフェイス・コントローラ１０４は、画像メモリのデータをプリンタ・エンジン１０５へ出力して用紙への印刷を行った後、空きメモリの調整を行う。画像記憶テーブルに登録されていないページＩＤの画像メモリを印刷する場合は、画像メモリのデータをプリンタ・エンジン１０５へ出力して用紙へ印刷した後、画像メモリをメモリ開放する。
【０１２０】
印刷開始コマンドを受信すると、まず、Ｔ３０５でメモリ変数に記憶したページＩＤが、画像記憶テーブルに登録されているか否かを判断する（Ｔ３２１）。画像記憶テーブルに登録されている場合は、Ｔ３２２からＴ３２６の処理へ進み、そうでない場合は、Ｔ３２７からＴ３２８の処理へ進む。
【０１２１】
Ｔ３２２からＴ３２６は、画像記憶テーブルに登録されているページＩＤの画像メモリを印刷する場合の処理である。
まず、画像記憶テーブルを参照して、Ｔ３０５でメモリ変数に記憶したページＩＤを探し出し、対応する画像メモリのデータをプリンタ・エンジン１０５へ出力する（Ｔ３２２）。また、これと同時に、プリンタ・エンジン１０５が用紙を印刷するのに必要な制御情報も出力する。プリンタ・エンジン１０５は、インターフェイス・コントローラ１０４から受信した画像データと制御情報に基づいて、画像データを用紙へ印刷するための各種機械的な制御を実行する。
【０１２２】
Ｔ３２３からＴ３２６は、インターフェイス・コントローラ１０４に実装しているメモリについて、空きメモリの調整を行う。
１部目の各ページの印刷で、インターフェイス・コントローラ１０４がＴ３０６からＴ３１８によって描画コマンド列を実行する場合、インターフェイス・コントローラ１０４に実装しているメモリが使い果たされていると、Ｔ３０９からＴ３１２の処理で、既に画像記憶テーブルに登録済みのページの画像メモリを削除する可能性がある。
【０１２３】
削除されたページは、２部目以降の印刷の場合、ホスト・コンピュータ１０１が描画コマンド列を再度送出するが、このときに十分な空きメモリが存在しないと、インターフェイス・コントローラ１０４はＴ３０９からＴ３１２の処理を実行して、画像記憶テーブルに登録済みの別のページの画像メモリを削除してしまう。
【０１２４】
ホスト・コンピュータ１０１は、２部目の印刷の手前で、図２のＴ２０９及びＴ２１０によって取得したステータス応答データに基づいて、２部目以降の各ページで描画コマンド列を再度送出する必要があるか否か判断する。２部目以降の印刷の場合に画像記憶テーブルに登録済みのページの画像メモリを削除してしまうと、ステータス応答データの内容と画像記憶テーブルの状態に食い違いが生じ、画像記憶テーブルに登録されていないページなのにも関わらず、ホスト・コンピュータ１０１が描画コマンド列を送出せず、正しく動作しなくなる。
【０１２５】
このような現象を回避するため、２部目以降でインターフェイス・コントローラ１０４が描画コマンド列を実行処理する場合は、Ｔ３０９からＴ３１２を実行しないようにしておく必要があり、この条件を満たすため、インターフェイス・コントローラ１０４には十分な空きメモリを確保しておく必要がある。
【０１２６】
ここで、ホスト・コンピュータ１０１は、１部目の印刷のときにインターフェイス・コントローラ１０４が削除したページの描画コマンド列だけを送出し、また、作成した画像メモリは用紙への印刷が終了すると、画像記憶テーブルに登録されることなく、すぐにメモリ開放される。従って、２部目以降の印刷のときに、インターフェイス・コントローラ１０４が用意しておく必要のある空きメモリは、１部目の印刷のときに削除したページの画像メモリの最大バイト数であり、この値はＴ３０３やＴ３１１からＴ３１２で更新された変数Ｓに記憶されている。
【０１２７】
Ｔ３２３からＴ３２６は、インターフェイス・コントローラ１０４の空きメモリのバイト数が変数Ｓで記憶している値より小さいかどうか比較し、空きメモリが足りない場合は、優先度が低いページＩＤの画像メモリを画像記憶テーブルから削除して、空きメモリを確保する処理である。
【０１２８】
まず、インターフェイス・コントローラ１０４の空きメモリのバイト数が変数Ｓで記憶している値より小さいか否か判断する（Ｔ３２３）。空きメモリのバイト数が変数Ｓより小さい場合は、Ｔ３２４からＴ３２６のステップヘ進み、十分な空きメモリがある場合は、印刷開始コマンドの実行処理を終了する。
【０１２９】
Ｔ３２３で空きメモリのバイト数が変数Ｓより小さい場合、画像記憶テーブルに登録されている画像メモリの中から、最も優先度の低いページを１つ選択し、このページに割り当てられている画像メモリを開放する（Ｔ３２４）。これにより、インターフェイス・コントローラ１０４に実装しているメモリの中で、使われていない空きメモリが増える。画像メモリを開放したページは、画像記憶テーブルから削除され、記憶している画像の個数Ｇ３５０も１つ減算される。
【０１３０】
次に、Ｔ３２４で画像記憶テーブルから削除したページの画像メモリのバイト数と、変数Ｓで記憶している値とを比較して条件分岐する（Ｔ３２５）。削除したページの画像メモリのバイト数の方が大きい場合は、Ｔ３２６へ進む。そうでない場合は、Ｔ３２３へ戻る。
【０１３１】
Ｔ３２５で削除したページの画像メモリのバイト数の方が大きい場合、変数ＳをＴ３２４で削除したページの画像メモリのバイト数に変更する（Ｔ３２６）。変数Ｓは、画像記憶テーブルから削除したページの画像メモリの最大バイト数を記憶するようになっている。Ｔ３２４で削除したページに関しても、２部目以降で描画コマンド列が再度送出されて来るので、これを加味した値に更新する。
【０１３２】
Ｔ３２５とＴ３２６は、いずれもＴ３２３へ戻る。Ｔ３２３では、新たな空きメモリを基にして、再度、変数Ｓで記憶している値と比較される。十分な空きメモリを確保できた場合は、印刷開始コマンドの実行処理を終了するが、確保できなかった場合は、再び、Ｔ３２４からＴ３２６を実行し、優先度の低いページを削除して空きメモリを増やす。
【０１３３】
画像記憶コマンドによる画像記憶テーブルヘの画像メモリの登録や、ステップＴ３０９からＴ３１２の実行による変数Ｓで記憶している値の変更は、ホスト・コンピュータ１０１が１部目の各ページを印刷している場合にのみ行われる。２部目以降の各ページでは、変数Ｓで記憶している値やインターフェイス・コントローラ１０４の空きメモリは変化しないため、Ｔ３２３の条件分岐が、Ｔ３２４からＴ３２６のステップを実行するような条件になることはない。
【０１３４】
Ｔ３２７からＴ３２８は、画像記憶テーブルに登録されていないページＩＤの画像メモリを印刷する場合の処理である。これは、２部目以降の印刷において、ホスト・コンピュータ１０１が図２のＴ２１４からＴ２１７で、ページＩＤコマンドと描画コマンド列と印刷開始コマンドをプリンタ１０２へ送出した場合に実行される。
【０１３５】
まず、画像メモリのデータをプリンタ・エンジン１０５へ出力する（Ｔ３２７）。この画像メモリは、ホスト・コンピュータ１０１が図２のＴ２１６で送出した描画コマンド列を、インターフェイス・コントローラ１０４がＴ３０６からＴ３１８で実行処理して作成したものである。画像メモリのデータと同時に、プリンタ・エンジン１０５へは、用紙を印刷するのに必要な制御情報も出力する。プリンタ・エンジン１０５は、インターフェイス・コントローラ１０４から受信した画像データと制御情報に基づいて、画像データを用紙へ印刷するための各種機械的な制御を実行する。
【０１３６】
Ｔ３２８では、Ｔ３２７で印刷した画像メモリをメモリ開放する。これによって、Ｔ３０６からＴ３１８の実行処理に伴って画像メモリとして割り当てられたインターフェイス・コントローラ１０４の空きメモリが、再び空きメモリに戻される。
【０１３７】
Ｔ３２９は、Ｔ３０１でホスト・コンピュータ１０１から受信したデータが、Ｔ３０２でステータス確認コマンドと判別された場合に行うプログラム・ステップである。ホスト・コンピュータ１０１が、図２のＴ２０９で送出したコマンドの実行処理に対応する。
【０１３８】
Ｔ３２９は、ステータス確認コマンドの応答として、図８で例示するような形態のデータをホスト・コンピュータ１０１へ出力する。これらのデータは、画像記憶テーブルで記憶している情報のコピーである。図８において、記憶している画像の個数Ｇ５０１は、記憶している画像の個数Ｇ３５０のコピーである。記憶している画像のページＩＤ（Ｇ５０２）は、画像記憶テーブルに登録されている画像メモリのページＩＤ（Ｇ３５１）のコピーである。ステータス応答データには、画像記憶テーブルに登録されている全ての画像メモリのページＩＤ（Ｇ３５１）が列挙して出力される。
【０１３９】
図７と図８と図９は、本実施例での動作を例示するため、ホスト・コンピュータ１０１とプリンタ１０２の間で送受信されるコマンドやステータス応答データの一例を表している。
図７は、ホスト・コンピュータ１０１が図２のＴ２０１からＴ２０８を実行してプリンタ１０２へ送出する１部目のコマンドを表した例である。
【０１４０】
初期化コマンド４０１は、ホスト・コンピュータ１０１がＴ２０１で送出する初期化コマンドである。プリンタ１０２は、このコマンドを受信するとＴ３０３からＴ３０４の処理を実行する。
ページＩＤコマンド４０２は、ホスト・コンピュータ１０１がＴ２０４で送出するページＩＤコマンドである。プリンタ１０２は、このコマンドを受信するとＴ３０５の処理を実行する。
【０１４１】
描画コマンド列４０３は、ホスト・コンピュータ１０１がＴ２０５で送出する描画コマンド列である。プリンタ１０２は、このコマンドを受信するとＴ３０６からＴ３１８の処理を実行する。
画像記憶コマンド４０４は、ホスト・コンピュータ１０１がＴ２０６で送出する画像記憶コマンドである。プリンタ１０２は、このコマンドを受信するとＴ３１９からＴ３２０の処理を実行する。
【０１４２】
印刷開始コマンド４０５は、ホスト・コンピュータ１０１がＴ２０７で送出する印刷開始コマンドである。プリンタ１０２は、このコマンドを受信するとＴ３２１からＴ３２８の処理を実行する。
Ｔ２０４とＴ２０５とＴ２０６とＴ２０７は、Ｎページ分のループ処理の一部になっている。このため、ページＩＤコマンド４０２と描画コマンド列４０３と画像記憶コマンド４０４と印刷開始コマンド４０５も、Ｎページ分の繰り返しが送出される。プリンタ１０２は、これらのコマンドを順に実行処理して、作成した画像メモリを画像記憶テーブルヘ登録し、かつ、用紙へ印刷する。
【０１４３】
図８は、１部目の印刷と２部目の印刷の間で、プリンタ１０２からホスト・コンピュータ１０１へ出力されるデータを表した例である。これは、ホスト・コンピュータ１０１がＴ２０９を実行してステータス確認コマンドをプリンタ１０２へ送出し、プリンタ１０２がこのコマンドをＴ３２９で実行処理することにより出力される。ホスト・コンピュータ１０１では、Ｔ２１０でテータス応答データを受信する。
【０１４４】
このステータス応答データは、インターフェイス・コントローラ１０４の画像記憶テーブルで記憶している情報のコピーである。
記憶している画像の個数Ｇ５０１は、記憶している画像の個数Ｇ３５０のコピーである。記憶している画像のページＩＤ（Ｇ５０２）は、画像記憶テーブルに登録されている画像メモリのページＩＤ（Ｇ３５１）のコピーであり、画像記憶テーブルに登録されている全ての画像メモリのページＩＤ（Ｇ３５１）が列挙して出力される。
【０１４５】
図８では、１ページ目のページＩＤと４ページ目のページＩＤが欠落している。これは、インターフェイス・コントローラ１０４が１部目の印刷を行っている場合において、図４および図５のＴ３０９からＴ３１２、またはＴ３２４からＴ３２６を実行して、画像記憶テーブルから１ページ目と４ページ目の画像メモリが削除されたことを反映している。
【０１４６】
図９は、ホスト・コンピュータ１０１がＴ２１１からＴ２１９を実行してプリンタ１０２へ送出する２部目以降のコマンドを表した例である。ページＩＤコマンド６０１，６０４と、描画コマンド列６０２と、印刷開始コマンド６０３，６０５とは、ホスト・コンピュータ１０１がＴ２１４とＴ２１６とＴ２１７で送出する。
【０１４７】
前述した図８により、１ページ目と４ページ目の画像メモリは、インターフェイス・コントローラ１０４の画像記憶テーブルに登録されていないことが判明している。そのため、１ページ目と４ページ目では、Ｔ２１５でＴ２１６を実行するように条件分岐が行われ、ホスト・コンピュータ１０１は描画コマンド列６０２をプリンタ１０２へ送出する。
【０１４８】
インターフェイス・コントローラ１０４は、ページＩＤコマンド６０１と描画コマンド列６０２を、それぞれＴ３０５と、Ｔ３０６からＴ３１８で実行処理した後、印刷開始コマンド６０３では、Ｔ３２１においてＴ３２７からＴ３２８を実行するように条件分岐が行われ、用紙への印刷と描画コマンド列６０２で作成した画像メモリの開放が行われる。
【０１４９】
１ページ目と４ページ目を除くページでは、Ｔ２１５においてＴ２１６を実行しないように条件分岐が行われるため、ホスト・コンピュータ１０１は、ページＩＤコマンド６０４と印刷開始コマンド６０５のみをプリンタ１０２へ送出する。これによって、インターフェイス・コントローラ１０４は、ページＩＤコマンド６０４をＴ３０５で実行処理した後、印刷開始コマンド６０５では、Ｔ３２１でＴ３２２からＴ３２６を実行するように条件分岐が行われ、Ｔ３２２で画像記憶テーブルに登録されている画像メモリのデータが用紙に印刷される。
【０１５０】
Ｔ２１１からＴ２１９は、Ｎページの印刷をＭ−１部繰り返すループ処理になっている。図９はＮページの印刷の１セット分であり、ホスト・コンピュータ１０１のコマンド送出とインターフェイス・コントローラ１０４の実行処理は、図９と同じ内容が、Ｍ−１回繰り返される。
＜第２の実施形態＞
（実施例１）
第１の実施形態では、１部目の印刷を終了した時点で、プリンタ１０２のメモリに記憶するページが確定していた。ホスト・コンピュータ１０１は、２部目を印刷するためのコマンドをプリンタ１０２へ送出する手前で、プリンタ１０２のステータス応答データを取得する。これによって、プリンタ１０２が記憶しているページＩＤを把握し、２部目以降にプリンタ１０２へ送出するコマンドの内容を変更している。
【０１５１】
図２において、２部目以降の印刷の場合、Ｔ２１６でホスト・コンピュータ１０１がコマンド列をプリンタ１０２へ送出した後、画像記憶コマンドの送出処理を追加して、このページをプリンタ１０２に記憶させることも可能である。
この場合、画像記憶コマンドの送出や次の描画コマンド列の送出によって、プリンタ１０２の空きメモリが不足して、それまでプリンタ１０２のメモリに記憶していたページが追加や削除されてしまう可能性が生じる。図２において、ホスト・コンピュータ１０１は、２部目の印刷を行う手前のＴ２０９とＴ２１０で、１度だけプリンタ１０２からステータス応答データを受信しているので、２部目以降の印刷で新たに生じたページの追加や削除に伴うプリンタ１０２の状態と受信したステータス応答データとに食い違いが生じる。そのため、ホスト・コンピュータ１０１は、２部目以降の印刷で画像記憶コマンドを送出した場合、ステータス確認コマンドの送出とステータス応答データの受信を再度実行し、以降のページでは、新たに受信したステータス応答データの内容に基づいて、プリンタ１０２が記憶しているページか否かの判断を行う必要がある。
【０１５２】
すなわら、図２のＴ２１６の後ろに、Ｔ２０６およびＴ２０９およびＴ２１０と同じ処理を追加してＴ２２０およびＴ２２１およびＴ２２２とし、図１０に示す処理フローとなる。
図１０において、ホスト・コンピュータ１０１は、Ｔ２０２からＴ２０８のループ処理によって１部目の各ページの印刷処理を行い、Ｔ２１１からＴ２１９のループ処理では２部目以降の印刷処理を行っている。
（実施例２）
実施例１において、１部目の印刷と２部目以降の印刷は１つのループ処理に統合することが可能である。図１０から、Ｔ２０４からＴ２０７の処理を削除して、さらに、Ｔ２１１で行っている変数Ｙの初期化を１部目とするよう変更してＴ２２３とし、図１１に示す処理フローとなる。
【０１５３】
この場合、Ｔ２０２からＴ２０８のループ処理では、ページＩＤ記憶テーブル２５０へ各ページのページＩＤを登録する処理だけが行われる。Ｔ２０９とＴ２１０によるステータス確認コマンドの送出とステータス応答データの受信は、プリンタ１０２が１部目の印刷を行う前に実行されるため、ホスト・コンピュータ１０１が受信するステータス応答データには、有効なページＩＤが何も含まれていない。
【０１５４】
したがって、Ｔ２２３からＴ２１９のループ処理では、１部目の全てのページにおいて、Ｔ２１５で必ずＴ２１６へ進むよう判断され、Ｔ２１６によって各ページの描画コマンド列がプリンタ１０２へ送出される。
（実施例３）
さらに、実施例２における図１１では、各ページを識別するためのページＩＤを扱っているが、ページＩＤは各部の同じページでは同じ値であるので、１から順にカウントするページ番号と同値と見なすこともできる。図１１において、ページ番号は変数Ｘで表されているので、ページＩＤ記憶テーブル２５０は省略することができる。よって、ページＩＤ記憶テーブル２５０に関連するＴ２０２からＴ２０８と、Ｔ２１３の処理を削除して、ページＩＤの代わりに変数Ｘの値を使う。この場合のプログラムは、図１２に示す処理フローとなる。
（実施例４）
図４および図５で示される処理フローは、上述した図１０や図１１や図１２で示される処理フローと組み合わせても動作するが、もともと図２と組み合わせて動作することを前提にしている。図２は、１部目の印刷を終了した時点で、プリンタ１０２のメモリに記憶するページを確定させ、２部目以降では、記憶していないページの描画コマンド列をプリンタ１０２へ送出する。
【０１５５】
図４および図５の処理フローは、プリンタ１０２のメモリに記憶していないページの描画コマンド列が再度ホスト・コンピュータ１０１から送出されて来ても、記憶済みの画像を削除することなく、同じ画像を作成できるようにするため、必要なサイズのメモリを変数Ｓに記憶して、変数Ｓが示すサイズのメモリを空けておくよう設計されている。
【０１５６】
図１０や図１１や図１２で示される処理フローは、プリンタ１０２のメモリに記憶しているページの追加や削除が２部目以降の印刷で行われても、ステータス応答データの受信を実行するため、ホスト・コンピュータ１０１のプログラム実行に反映される。そのため、図４および図５で示される処理フローで行っているような変数Ｓによる空きメモリの確保は必要なく、変数Ｓに関連する処理を削除することが可能である。
【０１５７】
すなわら、図４および図５のＴ３０３で行っている変数Ｓの初期化と、Ｔ３１１からＴ３１２で行っている変数Ｓの更新処理と、Ｔ３２３からＴ３２６で行っている空きメモリの調整および変数Ｓの更新処理を削除して、図１３および図１４のようになる。
【０１５８】
図２で示される処理フローと図４および図５で示される処理フローが組み合わされて連動する場合、１部目の各ページの印刷の期間に、ホスト・コンピュータ１０１が図２のＴ２０５で描画コマンド列をプリンタ１０２へ送出した時点では、このページより後ろのページはプリンタ１０２に送出されていない。そのため、プリンタ１０２が図４および図５のＴ３１０やＴ３２４で優先度の低いページを削除する必要が生じた場合、後ろのページに関しての優先度は加味されないで削除するページが決定される。
【０１５９】
ホスト・コンピュータ１０１のプログラムを、図１０や図１１や図１２のフローのように変形することによって、２部目以降の印刷のときに、プリンタ１０２が図４および図５のＴ３１０やＴ３２４で優先度の低いページを削除する必要が生じた場合は、１部目で印刷した全てのページの優先度の累積が画像記憶テーブルに反映されているため、より適切なページが削除されるようになる。
【０１６０】
図１０または図１１または図１２で示されるホスト・コンピュータ１０１側の処理フローと、図１３および図１４で示されるプリンタ１０２側の処理フローが組み合わされて連動する場合、変数Ｓによるプリンタ１０２の空きメモリの確保が必要なくなる。そのため、図２と図４および図５が組み合わされて連動する場合と比べ、プリンタ１０２のメモリに、より多くのページ数の画像を記憶できる可能性が高まる。
【０１６１】
【発明の効果】
本発明は、「従来の技術」欄で述べた、（３）の方式に見られる高速な印刷ができない場合があると言う問題と、（４）の方式でハード・ディスク装置を搭載することによりコスト上昇してしまうと言う問題を回避し改善している。
【０１６２】
プリンタのメモリに記憶しきれないような多数のページを複数部印刷する場合でも、優先度が高いページの画像をプリンタのメモリに残すことによって、２部目以降の場合に、ホスト・コンピュータからプリンタヘ送出されるデータの量が少なくなったり、送出されたデータからプリンタが画像を作成する必要が無くなったりするため、高速な印刷が可能になる。
【０１６３】
優先度は、描画コマンド列のバイト数と、描画コマンド列の処理時間と、画像メモリのバイト数とから成る３つの変動要因とのそれぞれの係数によって計算されるため、係数の値を適切に選択することによって、２部目以降の印刷において、印刷速度を最優先にしたり、ホスト・コンピュータの処理の軽減を最優先にしたり、印刷速度とホスト・コンピュータ処理のバランスを考慮したりするなど重視する項目に応じた柔軟な対応が可能である。
【０１６４】
第１の実施形態の発明は、１部目の全てのページの印刷が終了し２部目の印刷を行う手前で、ホスト・コンピュータがプリンタのメモリに記憶しているページ画像の問い合わせを１度だけ行う。そのため、プリンタからホスト・コンピュータヘのステータス応答データの送信が低速な印刷システムでも、ステータス応答することに伴う処理速度の低下があまり無く、２部目以降に送出するデータの量が少なくなることによる高速化によって、全体として高速な印刷システムが実現する。
【０１６５】
第２の実施形態の発明は、ホスト・コンピュータがプリンタへ描画コマンド列を送出する度に、プリンタのメモリに記憶しているページ画像の問い合わせを行うため、プリンタからホスト・コンピュータヘのステータス応答データの送信が高速な印刷システムに適合する。第１の実施形態の発明と比べて、ステータス応答の回数が増えるが、プリンタのメモリに記憶するページ画像が最適化されるため、ホスト・コンピュータからプリンタヘ送出されるデータの量がさらに少なくなり、さらに高速な印刷システムが実現する。
【図面の簡単な説明】
【図１】本発明のシステム構成図である。
【図２】第１の実施形態におけるホスト・コンピュータの印刷プログラムの処理フローを示す図である。
【図３】ページＩＤ記憶テーブルの１例を示す図である。
【図４】第１の実施形態におけるインターフェイス・コントローラの制御プログラムの処理フロー（その１）を示す図である。
【図５】第１の実施形態におけるインターフェイス・コントローラの制御プログラムの処理フロー（その２）を示す図である。
【図６】画像記憶テーブルの１例を示す図である。
【図７】第１の実施形態におけるホスト・コンピュータとプリンタ間で送受信される１部目のコマンド・シーケンスの１例を示す図である。
【図８】第１の実施形態におけるホスト・コンピュータとプリンタ間で送受信されるステータス応答データの１例を示す図である。
【図９】第１の実施形態におけるホスト・コンピュータとプリンタ間で送受信される２部目のコマンド・シーケンスの１例を示す図である。
【図１０】第２の実施形態（実施例１）におけるホスト・コンピュータの印刷プログラムの処理フローを示す図である。
【図１１】第２の実施形態（実施例２）におけるホスト・コンピュータの印刷プログラムの処理フローを示す図である。
【図１２】第２の実施形態（実施例３）におけるホスト・コンピュータの印刷プログラムの処理フローを示す図である。
【図１３】第２の実施形態におけるインターフェイス・コントローラの制御プログラムの処理フロー（その１）を示す図である。
【図１４】第２の実施形態におけるインターフェイス・コントローラの制御プログラムの処理フロー（その２）を示す図である。
【符号の説明】
１０１　ホスト・コンピュータ
１０２　プリンタ
１０３　パラレル・インターフェイス
１０４　インターフェイス・コントローラ
１０５　プリンタ・エンジン
１０６　ビデオ・インターフェイス
１０７　キーボード
１０８　ディスプレイ
１０９　フロッピー（登録商標）・ディスク・ドライブ
１１０　ハードディスク・ドライブ
１１１　ＲＯＭ
１１２　ＲＡＭ
１１３　ＣＰＵ
１１４　プリンタ・インターフェイス
１１５　ホスト・インターフェイス
１１６　オペレーション・パネル
１１７　Ｍａｓｋ−ＲＯＭ
１１８　ＲＯＭ
１１９　ＲＡＭ
１２０　ＣＰＵ
１２１　エンジン・インターフェイス
【図１】
2004094395.tif 000003
【図２】
2004094395.tif 000004
【図３】
2004094395.tif 000005
【図４】
2004094395.tif 000006
【図５】
2004094395.tif 000007
【図６】
2004094395.tif 000008
【図７】
2004094395.tif 000009
【図８】
2004094395.tif 000010
【図９】
2004094395.tif 000011
【図１０】
2004094395.tif 000012
【図１１】
2004094395.tif 000013
【図１２】
2004094395.tif 000014
【図１３】
2004094395.tif 000015
【図１４】
2004094395.tif 000016