(57)【特許請求の範囲】
【請求項１】
記録紙を主走査方向に走査し、複数の印字素子を有する記録ヘッドを搭載したキャリッジを副走査方向に走査し、ポートレート印刷の場合にホストコンピュータから転送されるイメージデータを縦横変換して記録ヘッドにより記録を行い、ランドスケープ印刷の場合にホストコンピュータから転送されるイメージデータを縦横変換することなく記録ヘッドにより記録を行うプリンタにデータを転送するホストコンピュータであって、
ポートレート印刷か否かを判別する判別手段と、
前記判別手段によりポートレート印刷であると判別された場合、描画メモリに格納された横が短く縦が長いポートレート形態のイメージデータから横方向のラインの横幅分のイメージデータと前記横方向のラインと縦方向に隣接する横方向のラインの横幅分のイメージデータとが連続したイメージデータをプリンタに転送し、前記判別手段によりポートレート印刷でないと判別された場合、描画メモリに格納された横が長く縦が短いランドスケープ形態のイメージデータから横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータを読み出し、前記横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータと前記横方向のラインと縦方向に隣接する横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータとを連続させて、前記横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータを縦幅分プリンタに転送する転送手段とを有することを特徴とするホストコンピュータ。
【請求項２】
記録紙を主走査方向に走査し、複数の印字素子を有する記録ヘッドを搭載したキャリッジを副走査方向に走査することにより記録を行うプリンタにデータを転送するデータ転送方法であって、
ランドスケープ印刷の場合、描画メモリに格納された横が長く縦が短いランドスケープ形態のイメージデータから横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータを読み出し、前記横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータと前記横方向のラインと縦方向に隣接する横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータとを連続させて、前記横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータを縦幅分プリンタに転送することを特徴とするデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はポートレートとランドスケープとの印刷方向を指定可能なホストコンピュータおよびデータ転送方法に関する。
【０００２】
【従来の技術】
近年、コンピュータのユーザインタフェイスは改良されてきており、例えばマイクロソフト社のＷｉｎｄｏｗｓのオペレーションシステムを搭載した情報処理装置、換言するとマルチタスクが可能な情報処理装置のように表示装置の画面上に複数のアプリケーションプログラムを同時に開いて操作が可能となっている。このようなアプリケーションプログラムからオペレータが印刷を指示をした場合、通常印刷データは表示装置と同様に走査線方向のデータ（ラスタデータ）として扱われる。
【０００３】
このような背景から最近では走査線に垂直方向の印刷ドットを持つドットプリンタに於いても内部で縦横変換をし実行してラスタデータを印刷ドット方向のデータ（バンドデータ）に変換する技術が知られる。また用紙の短辺方向の印刷（ポートレート）のみならず長辺方向の印刷（ランドスケープ）のドット印刷装置での印刷技術も公知である。ランドスケープを印刷する時には通常、プリンタドライバと呼ばれる制御ソフトを情報処理装置に搭載し、この制御ソフトにより縦横変換を実行してラスタデータに変換し、このラスタデータを印刷装置にデータを転送する。
【０００４】
【発明が解決しようとする課題】
このように従来では、ランドスケープ形態の印刷データは情報処理装置および印刷装置の双方でデータ変換を行なわなければならず、その結果、印刷に時間がかかっていた。
【０００５】
そこで、本発明は上述の点に鑑みて、印刷に要する時間を短縮させるホストコンピュータおよびデータ転送方法を提供することを目的とする。
【０００６】
【課題を解決するための手段】
このような目的を達成するために、請求項１の発明は、記録紙を主走査方向に走査し、複数の印字素子を有する記録ヘッドを搭載したキャリッジを副走査方向に走査し、ポートレート印刷の場合にホストコンピュータから転送されるイメージデータを縦横変換して記録ヘッドにより記録を行い、ランドスケープ印刷の場合にホストコンピュータから転送されるイメージデータを縦横変換することなく記録ヘッドにより記録を行うプリンタにデータを転送するホストコンピュータであって、
ポートレート印刷か否かを判別する判別手段と、
前記判別手段によりポートレート印刷であると判別された場合、描画メモリに格納された横が短く縦が長いポートレート形態のイメージデータから横方向のラインの横幅分のイメージデータと前記横方向のラインと縦方向に隣接する横方向のラインの横幅分のイメージデータとが連続したイメージデータをプリンタに転送し、前記判別手段によりポートレート印刷でないと判別された場合、描画メモリに格納された横が長く縦が短いランドスケープ形態のイメージデータから横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータを読み出し、前記横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータと前記横方向のラインと縦方向に隣接する横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータとを連続させて、前記横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータを縦幅分プリンタに転送する転送手段とを有することを特徴とする。
【０００７】
請求項２の発明は、記録紙を主走査方向に走査し、複数の印字素子を有する記録ヘッドを搭載したキャリッジを副走査方向に走査することにより記録を行うプリンタにデータを転送するデータ転送方法であって、
ランドスケープ印刷の場合、描画メモリに格納された横が長く縦が短いランドスケープ形態のイメージデータから横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータを読み出し、前記横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータと前記横方向のラインと縦方向に隣接する横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータとを連続させて、前記横方向のラインの記録ヘッドの複数の印字素子に応じたイメージデータを縦幅分プリンタに転送することを特徴とする。
【００１２】
【発明の実施の形態】
（実施例１）
以下、添付図面に添って本発明実施例を詳細に説明する。
【００１３】
図１は本発明を適用した情報処理装置としてのプリンタ一体型のパーソナルコンピュータを示す斜視図で、装置本体１０１と、キーボード１０２と、表示部１０３を備える上カバー１０４と、ベーパーフィードキー１０５と印字ストップキー１０６とプリンタユニット（プリンタと略することがある）２等との各部によって構成される。上カバー１０４は、装置本体１０１に対して、その後綾の両端に設けられたヒンジ１０４ａを介して回動可能に取り付けられている。これにより本装置の使用時には、上カバー１０４は、その回動によって表示部１０３が視易くなる位置まで開けられ、また、不使用時は閉じられてカバーとして機能することができる。
【００１４】
表示部１０３の表示素子としては、例えば液晶表示素子を用いられる。インクジェット方式の記録ヘッドを用いたプリンタユニット２は表示部１０３の前方に配置され、装置本体１０１内に収納されている。また、プリンタユニット２は操作者が開閉可能な開口部（不図示）をもち、記録ヘッドの交換が可能なようになっている。
【００１５】
記録紙３はキーボード１０２の下部に設けられた給紙口１０１ａから挿入され、装置本体１０１内を貫通する搬送路内を搬送されて装置後方の排紙口（不図示）から排出される。キーボード１０２は装置本体１０１の両側に設けられたヒンジ１０２ａを介して回動可能に取り付けられている。これにより、封筒、ハガキ等の比較的長さの短い記録紙を使用する場合もキーボード１０２を上部に開き、記録紙３を搬送路内の奥に挿入することができる。このように、キーボード１０２の下部に記録紙３の搬送路が設けられているため、記録紙をセットした状態でもキーボード１０２および表示部１０３を用いた種々の操作が可能である。
【００１６】
本実施例ではプリンタユニット２を除く部分、いわゆるコンピュータ部をホストコンピュータと呼ぶことにする。
【００１７】
図２に、ホストコンピュータとプリンタの概略ブロック図を示す。
【００１８】
まずホストコンピュータにおいては、主制御を司っているのが中央処理装置（ＣＰＵ）であり、その基本的な制御を指示するのがＢＩＯＳ  ＲＯＭ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ  ＲＯＭ）である。ＢＩＯＳ  ＲＯＭに記憶されているＢＩＯＳプログラムはフロッピーディスク（ＦＤＤ）やハードディスク（ＨＤＤ）からフロッピーディスクコントローラ（ＦＤＣ）やハードディスクコントローラ（ＨＤＣ）を経由してアプリケーションプログラムを読み出し、システムメモリ（ＲＡＭ）を利用してアプリケーションプログラムの実行を行うためのシステムプログラムとして知られている。この時、画面の表示方法としてはＶＧＡ（Ｖｉｄｅｏ  Ｇｒａｐｈｉｃ  Ａｒｒａｙ）コントローラ（ＶＧＡＣ）を使って液晶（ＬＣＤ）なキャラクタ等の表示を行い、キーボード（ＫＢ）からのキー入力はキーボードコントローラ（ＫＢＣ）を経由して行われる。
【００１９】
システムメモリ（ＲＡＭ）内には後述の描画メモリ（図１７において符号１７２）が設けられている。ここで、数値演算プロセッサ（ＦＰＵ）は中央処理装置ＣＰＵに対し演算処理のサポートを行うものである。また、リアルタイムクロック（ＲＴＣ）は現時点の経過時間を示すものでシステム全体の電源が切られた状態においても、専用バッテリーにより動作は行われる。ＤＭＡコントローラ（ＤＭＡＣ）は、メモリ〜メモリ間）、メモリ〜Ｉ／Ｏ間、Ｉ／Ｏ〜Ｉ／Ｏ間において高速にデータの転送を行うために、中央処理装置（ＣＰＵ）の介在なしでデータ転送を行う。割り込みコントローラ（ＩＲＱＣ）は各Ｉ／Ｏからの割り込みを受け付け、優先順位に従って処理を行う。タイマ（ＴＩＭＥＲ）は、数チャンネルのフリーランニングタイマを持ち、種々の時間管理を行う。その他に外部につながる、シリアルインターフェイス（ＳＩＯ）、拡張ボード（ＰＯＲＴ）や、ユーザに動作状況を伝えるＬＥＤがある。プリンタは、ホストコンピュータに対して汎用のパラレルインターフェイスでつながる形になり、Ｉ／Ｏボードのレジスタレベルでデータ送受信を行い、接続のイメージとしては外部プリンタとやり取りした時と同等となる。
【００２０】
図３は、本発明が実施もしくは適用されたインクジェット記録方式を用いたプリンタユニット（プリンタと略することがある）２の内部構成を説明するための斜視図である。図３において、５００１はインクタンクであり、５０１２はそれに結合された記録ヘッドである。インクタンク５００１と記録ヘッド５０１２で一体型の交換可能なカートリッジを形成するものである。５０１４は、そのカートリッジをプリンタ本体に取り付けるためのキャリッジであり、５００３はそのキャリッジを副走査方向に走査するためのガイドである。
【００２１】
５０００は、記録紙３を主走査方向に走査させるためのプラテンローラである。５０２４は、プラテンローラを回転させるための紙送りモータである。なお、キャリッジ５０１４には、記録ヘッド５０１２に対して駆動のための信号パルス電流やヘッド温調用電流を流すためのフレキシブルケーブル（図示せず）が、プリンタをコントロールするための電気回路を具備したプリント板（図示せず）に接続されている。さらに、上記構成のプリンタユニット２を詳細に説明する。駆動モータ５０１３の正逆回転に連動して駆動力伝達ギア５０１１，５００９を介して回転するリードスクリュー５００４の螺旋溝５００５に対して係合するキャリッジ５０１４はピン（不図示）を有し、矢印ａ，ｂ方向に往復移動される。５００２は紙押え板であり、キャリッジ移動方向にわたって紙をプラテン５０００に対して押圧する。５００７，５００８はフォトカプラでキャリッジ５０１４のレバー５００６のこの域での存在を確認してモータ５０１３の回転方向切換等を行うためのホームポジション検知手段として機能する。５０１６は記録ヘッドの前面をキャップするキャップ部材５０２２を支持する部材である。５０１５はこのキャップ内を吸引する吸引手段であり、キャップ内閉口５０２３を介して記録ヘッド５０１２の吸引回復を行う。
【００２２】
５０１７は、クリーニングブレードで、５０１９はこのブレード５０１７を前後方向に移動可能にする部材であり、本体支持板５０１８にこれらは支持されている。ブレード５０１７は、この形態でなく周知のクリーニングブレードが本例に適用できることはいうまでもない。また、５０２１は、吸引回復の吸引を開始するためのレバーで、キャリッジ５０１４と係合するカム５０２０の移動に伴って移動し、駆動モータからの駆動力がクラッチ切換等の公知の伝達手段で移動制御される。
【００２３】
すなわち、モータ５０１３をキャリッジ５０１４のホームポジションから逆回転することにより、動力伝達ギア５０１１を５０１０に切り替え（不図示）、モータ５０１３からの駆動力がカム５０２０を介してレバー５０１２に伝わり、記録ヘッド５０１２のキャッピングおよびクリーニング、吸引回復が行えるように構成されている。
【００２４】
図４に、プリント２の制御系のブロック図を示す。プリンタ２は、プリンタ制御用のＣＰＵ２、プリンタ制御プログラムやプリンタエミュレーションや印字フォトトを備えたＲＯＭ２２、印字のための展開データやホストからの受信データを構えておく不揮発性のＲＡＭ２３、プリンタの上記印字ヘッドやモータを駆動するプリンタドライバ２５、メモリにアクセス制御やホストとのデータのやり取りやプリンタドライバ２５への制御信号送出を行うコントローラ２４を有する。
【００２５】
図５に、記録ヘッドおよびヘッドドライバ２５の回路構成を示す。
【００２６】
ここで、本例では吐出ユニットは６４個の吐出口を有するものとし、＃１〜＃６４は吐出ユニットに設けられた吐出口の位置に対応した番号を示すものとする。Ｒ１〜Ｒ６４はそれぞれ＃１〜＃６４の吐出口に対応して設けられた吐出エネルギ発生素子としての発熱抵抗体である。発熱抵抗体Ｒ１〜Ｒ６４は８個を単位としたブロックに分割され、各ブロックに共通にコモン側ドライバ回路のスッチング用トランジスタＱ１〜Ｑ８が接続される。トランジスタＱ１〜Ｑ８は、それぞれ制御信号ＣＯＭ１〜ＣＯＭ８のオン／オフに応じ通電経路をオン／オフする。なお、各発熱抵抗体Ｒ１〜Ｒ６４への通電経路に配置されたＤ１〜Ｄ６４は逆流防止用のダイオードである。
【００２７】
各ブロック間で対応する位置にある発熱抵抗体に対して、セグメント側ドライバ回路のオン／オフ用トランジスタＱ９〜Ｑ１６が接続される。トランジスタＱ１〜Ｑ１６はそれぞれ制御信号ＳＥＧ１〜ＳＥＧ８のオン／オフに応じて発熱抵抗体に対する通電経路をオン／オフする。
【００２８】
図６は、かかる構成によるヘッド駆動のタイミングチャートである。ヘッド走査方向上にある位置において、コモン側制御信号ＣＯＭ８〜ＣＯＭ１が順次オンされる。そのオンにより１つのブロックが選択されて通電可能な状態になるので、選択されたブロック内において記録による画像に応じてセグメント側制御信号ＳＥＧ８〜ＳＥＧ１をそれぞれオンまたはオフすることにより、発熱抵抗体に選択的に通電が成され、発熱に応じてインクが吐出されてドット記録が行われる。
【００２９】
図７はキャリッジモータおよびモータドライバの構成図である。図８はその駆動タイミングを示す。
【００３０】
図７、図８を参照して説明すると、キャリッジモータとしてコイルφ１〜φ４を有するステッピングモータを用い、駆動信号ＣＭ１〜ＣＭ４により各コイルに接続されたスイッチ用トランジスタＴＲ１〜ＴＲ４を適切にオン／オフすることにより、図８に示す様に２相励磁方式にて駆動する。
【００３１】
フィードモータについても同様な構成で、駆動信号ＦＭ１〜ＦＭ４により駆動される。
【００３２】
図９にプリンタコントローラ２４の構成を示す。
【００３３】
プリンタコントローラ２４の機能ブロックとしては、ホストコンピュータ１と、コマンドレベルでのデータのやり取りを行うＩ／Ｏデータレジスタ２４Ａ、そしてそのレジスタから受信データをＲＡＭ２３に直接書き込む受信バッファコントローラ、ＲＡＭ２３の記録データバッファから記録データを読み出しヘッドドライバ２５に対してＣＯＭ１〜ＣＯＭ８／ＳＥＧ１〜ＳＥＧ８の制御信号の送出を行う印字バッファコントローラ２４Ｂ、更にＲＡＭ２３に対して３方向（つまり、ＣＰＵ２１、受信バッファコントローラ２４Ｂ、印字バッファコントローラ２４Ｃ）からのメモリアクセスを制御するメモリコントローラ２４Ｄの以上４つのブロックで構成されている。
【００３４】
図１０はプリンタのＩ／Ｏデータレジスタ２４Ａ（図９参照）のマップを示す。
【００３５】
この中でモータコントロールポート１００１は、レジスタの値を直接書き換えることによりポートを制御し各モータを駆動するものである（ＣＭ１〜ＣＭ４、ＦＭ１〜ＦＭ４）。
【００３６】
印字バッファエリア１００２は、印字に必要なデータ領域を設定するもので、開始アドレス（ＰＢ  ＳＴＡＲＴ）と終了アドレス（ＰＢ  ＥＮＤ）を設定することにより、その範囲内で印字バッファコントローラ２４Ｃによって開始アドレスから順番に印字データを読み出し、終了アドレスに至るまでＲＡＭ２３から印字データを読み出し、ヘッドドライバ２５に制御信号を送出する。この時、印字データアドレスポインタ（ＰＢ  ＰＯＩＮＴ）は現在データ送出中のデータアドレスを示している。
【００３７】
受信データバッファエリア１００３でも同様に、受信に必要なデータ領域を設定するもので、開始アドレス（ＩＢ  ＳＴＡＲＴ）と終了アドレス（ＩＢ  ＥＮＤ）を設定することにより、その範囲内で受信バッファコントローラ２４Ｂによって開始アドレスから順番に受信データを書き込み、終了アドレスに至るまでＲＡＭ２３へ受信データを書き込む。この時、受信データアドレスポインタ（ＩＢＰＯＩＮＴ）は現在データ受信済になっているデータアドレスを示している。
【００３８】
図１１は上記動作におけるＲＡＭ２３上での印字バッファ（ＰＢ）と受信バッファ（ＩＢ）のアドレス領域をおのおの示している。各アドレスは、図１０に示す様に、プリンタＩ／Ｏレジスタ２４において指示されている。インターフェイス領域１００４は、ホストコンピュータ１とプリンタ２の間でデータのやり取りを行う共通使用するＩ／Ｏ領域である。ホストコンピュータ１においてはパラレルインターフェイスのボートに相当する。
【００３９】
インターフェイス領域については、ホストコンピュータ１とプリンタ２のインターフェイス領域における相関関係を示した図１２で説明する。
【００４０】
ホスト側におけるＩ／Ｏデータ、Ｉ／Ｏステータス、Ｉ／Ｏコントロールのレジスタが、プリンタ側のＩ／Ｏデータ、Ｉ／Ｏステータス、Ｉ／Ｏコントロールのレジスタと同一のアドレスを示す様に、ホスト側から見た（ｎ，ｎ＋１，ｎ＋２）のアドレスが、プリンタ側から見た（ｍ，ｍ＋１，ｍ＋２）のアドレスと対応が取れる様にアドレスマップが設定されている。
【００４１】
すなわち、この部分のアドレスは双方向で読み書きできるレジスタになっている。
【００４２】
なお、ホストコンピュータ１側にも、周辺機器を制御するためのＩ／Ｏレジスタを備えていて、ホストコンピュータ内でのＩ／Ｏ制御に使われている。すなわち図２で示した各ブロックのＩ／Ｏ領域をもっていて、その中のインターフェイスの制御領域についてのみがプリンタ側のＩ／Ｏレジスタのインターフェイス領域と共通になっているという構成になっている。図１２は、その関係を示すものである。
【００４３】
以下、ホストコンピュータ１側の電源投入後の各処理について図１３を参照して説明する。
【００４４】
電源投入時に図１３の手順が起動される。手順はまずステップＳ１０に進む。キーボードによるソフトリセット処理によっても電源投入と同様に、ステップＳ１０へ入って来る。ステップＳ１０でＰＯＳＴ処理（Ｐｏｗｅｒ  ｏｎ  ｓｅｌｆ−ｔｅｓｔ）すなわち各ハードウエアのテスト及び初期化を実行する。次に手順はステップＳ１１へ進みシステムプログラム起動のための、ブートプログラムのロードが行われる。ブートプログラムはＦＤ（フロッピディスク）あるいはＨＤ（ハードディスク）等に保存され、例えば、トラック０、セレクタ１に配置される。トラック０、セレクタ１をメモリ内に読み込むことでブートプログラムのロードが行われる。
【００４５】
ステップＳ１０からステップＳ１１までの処理プログラムはＢＩＯＳ  ＲＯＭ内に存在する。次に手順はステップＳ１２へ進み、ロードされたブートプログラムが実行される。なおブートプログラムは、ＦＤ、あるいはＨＤからＯＳ（オペレーションシステム）プログラムをロードするためのプログラムである。
【００４６】
次に手順はステップＳ１３へ進み、ＯＳロードプログラムロードする。次にステップＳ１４へ進み、ＯＳロードプログラムを実行する。
【００４７】
ＯＳロードプログラムは、ＯＳをメモリ内にロードするためのプログラムで、まずステップＳ１５でＩ／Ｏドライバをロードする。Ｉ／Ｏドライバというのは、Ｉ／Ｏを制御するためのプログラムで、Ｉ／ＯドライバによりＯＳは、各種Ｉ／Ｏとのデータのやり取りを行う。次にステップＳ１６へ進み、Ｉ／Ｏのテストと初期化を行う。次にステップＳ１７へ進みＯＳをメモリへロードする。ここまでのステップでＯＳが実行される準備がととのい次にステップＳ１８へ進んで、ＯＳが実行される。ＯＳは、キーボードからの入力を処理し、各種メッセージを表示器に表示し、操作者とのやり取りを行う。ＯＳは操作者の各種コマンドの入力に従って各種コマンド処理の実行を行う。
【００４８】
図１４は、図１３のステップＳ１０のＰＯＳＴ処理を詳細に説明するためのフローチャートで、ＣＰＵ（この場合、図２）のＦＰＵ（数値演算プロセッサ、コプロセッサ）のテストを行う（ステップＳ２０）。次にＲＯＭのテストを行う（ステップＳ２１）。次に電源、バッテリのチェックを行う（ステップＳ２２）、次にＬＣＤ，ＬＣＤアダプタのテストと初期化を行うＬＣＤアダプタには、ＲＡＭ，ＲＯＭを含みそれらのチェックも行う（ステップＳ２３）。次に割り込みコントローラのテストと初期化を行う（ステップＳ２４）。
【００４９】
次にタイマのテストを行う（ステップＳ２５）。次にＤＭＡコントローラのテストを行う（ステップＳ２６）。次にキーボード、キーボードコントローラのテストを行う（ステップＳ２７）。次にシリアルバラレルポートのテスト、初期化を行う（ステップＳ２８）。次にソフトリセットかどうかをチェックする（ステップＳ２９）。ソフトリセットならば、ステップＳ３０のＲＡＭのテストと初期化処理をスキップしステップＳ３１へ進む。ソフトリセットでない場合ステップＳ３０へ進みＲＡＭのテストと初期化を行う。次にＦＤ（フロッピーディスク）のテストを行う（ステップＳ３１）。次にＨＤ（ハードディスク）のテストを行う（ステップＳ３２）。
【００５０】
次にリアルタイムクロックのテストを行う（ステップＳ３３）。次にプリンタのテストを行う（ステップＳ３４）。プリンタのテストは各種プリンタポートのチェックとプリンタ接続のチェックを行う。次にＬＥＤのテストを行う（ステップＳ３５）。次に戻りとなる。以上の処理により図１３のＳ１０で示すＰＯＳＴ処理が行われ、各装置にエラー等があった場合、それらを知らしめる。
【００５１】
次にキーボード割り込み処理とキーコード取得処理について説明する。キーボード割り込み処理は、キーボードのキー押下に従ってキーボードコントローラから割り込みが発生した割り込みコントローラにより処理され、キーボード割り込み処理が実行される。キーコード取得処理は、キーボード割り込みにより保存された千一コードをキーバッファから取り出し、キーコードは必要とする処理に戻される。なお、キーバッファは不図示ではあるが、図２のＲＡＭ上のＢＩＯＳコモンエリア内に設けられる。キーボード割り込み処理は、各Ｉ／Ｏの割り込みマップ上（不図示）のハードウェア割り込みのエントリなどに割り当てられ、またキーコード取得処理は、ソフトウェア割り込みのエントリ等に割り当てられる。それぞれキーボードから割り込み、ソフトウェア割り込みの呼び出しにより実行に移される。
【００５２】
図１５は、キーボード割り込みが発生した場合の処理に関するフローチャートを示す。同図において、まずキーボード割り込みが発生すると、ステップＳ４０において、キースキャンコードをＩ／Ｏのキーボードに割り当てられたボードから読み取る。読み取ったコードはステップＳ４１においてソフトリセットに相当するコードであるかどうか判断され、判定がＹｅｓ（真）であればステップＳ４２で印字バッファクリアコマンド送信を実行し、実行後実際のソフトリセット動作を開始する。読み取ったコードがソフトリセットでない場合、ステップＳ４３においてキーボードバッファが一杯でないかどうかを確認する。
【００５３】
キーボードバッファが一杯であれば、ステップＳ４４によって警告のためＢｅｅｐ（ビープ）音を発生し、処理を終了する。一杯でなければ、ステップＳ４５によってキースキャンコードを文字コードに対応したキーコードに変換し、さらに変換されたキーコードをステップＳ４６によってキーバッファにセットして処理を終了する。以上説明したように、キーボード割り込み処理内でソフトリセット実行時にプリンタにバッファクリアコマンドが送信され、プリンタのバッファクリア処理が行われる。
【００５４】
図１６はキーコード取得処理に関するフローチャートを示す。同図において、キーコード取得が開始されると、まずステップＳ５０においてキーボードバッファにキーコードがあるかどうかチェックされる。なければステップＳ５０を繰り返し、キーコードバッファに入れられるのを待つ。キーコードが存在した場合、ステップＳ５１においてキーコードの変換が必要かどうかチェックされ、必要な場合、ステップＳ５２によってキーコードの変換が行われる（キーコードの変換は、主として国別にキーボードが異なる場合などに発生する）。キーコードの変換が必要でない時、また必要でステップＳ５２において変換が行われたあと、ステップＳ５３によってキーコードがキーコードを返すためのレジスタにセットされ、処理を終了する。
【００５５】
図１７は、本実施例における印刷処理の制御の方法を示すブロック図である。アプリケーションプログラム１７０は印刷を行う場合に、印刷コマンドをオペレーションシステム（ＯＳ）の中の描画制御プログラム１７１に渡す。描画制御プログラム１７１は、印刷すべきプリンタに対応するプリンタドライバ２００に対して、描画コマンドを発行する。描画コマンドを受信したプリンタドライバ２００は描画のためのメモリ（描画メモリ１７２）を用意して、描画制御プログラム１７１をコールバックする。コールバックされた描画制御プログラム１７１は描画メモリ１７２にアプリケーションからの要求を描画する。描画終了後プリンタドライバ２００は、描画メモリ１７２に描画されたビットマップをプリンタ２に対するコマンドデータに変換する。
【００５６】
次にこの変換について図１８を用いて詳細に説明する。プリンタドライバ２００は、図１９の印刷方向保存用フラグ（ｐｄｄｃ−＞ＤｒｉｖｅｒＤａｔａ．ｕｌＯｒｉｅｎｔａｔｉｏｎ）を用いて印刷方向、すなわちポートレート印刷か否かを判断する（ステップＳ６０）。判断がＹｅｓ（真）の場合には、図２０（ａ）で示されるラスタイメージデータ（斜線部分）をプリンタコントローラ５０４に転送する（ステップＳ７０）。この結果、プリンタ２では図２０（ｂ）のように印刷を行う。判断が（偽）の場合には図２１（ａ）で示されるバンドイメージデータをプリンタコントローラ５０４に転送する（ステップＳ８０）、この結果、プリンタ２では図２１（ｂ）で示すよう印刷される。以下転送データの取得方法について詳しく述べる。なお、印刷方向についてはユーザがホストコンピュータ１に対してキーボード等の入力装置を使用して指示してもよいし、デフォルトとして予め定めた方向を上記印刷方向保存用フラグに設定しておく。
【００５７】
図２２は、描画メモリ１７２に格納された１ページ分のイメージデータを示す図で斜線部がバンドイメージデータとなる。本実施例のバンドイメージデータの扱いはノズルの上がＭＳＢ（最上位ビット）となっているために描画メモリ１７２を時計回りに９０度回転させて印字したのと同様となる（逆に上方向がＬＳＢ（最下位ビット）の場合には反時計回りに９０度回転させれば同様に本発明が適応できる）。図２２に示すようにバンドの先頭はビットマップの最低位置に相当するので先ずポインタ（Ｐ）に以下の計算結果をセットする。
【００５８】
描画メモリ１７２の先頭アドレス＋（ｃＤａｔａＢｙｔｅｓ−１）＊  ＢｉｔＩｍａｇｅｗｉｄｔｈ
次にバンドイメージ転送コマンドヘッダ  ’ＥＳＣ  ［ｇ’  をプリンタコントローラ２０４に転送する。次にデータの長さとして（ｃＤａｔａＢｙｔｅｓ  ＊  ＢｉｔＩｍａｇｅｗｉｄｔｈ）  とモード用１バイトを加算した値（ｃｂＤａｔａＬｅｎｇｔｈに格納される）を転送する。次にプリントモードとしてファイン（１６ｈ）を転送する。次にポインタＰが指すアドレスからｃＤａｔａＢｙｔｅｓ分転送する。更にポインタＰをｃＤａｔａＢｙｔｅｓだけ減じてポインタＰが指すアドレスからｃＤａｔａＢｙｔｅｓ分転送する。以下この動作を描画メモリに先頭アドレスまで繰り返す。
【００５９】
このような処理を行うことによって図２１（ａ）に示すように描画メモリ１７２に格納された１ページ分のイメージデータの中のバンドイメージが読み出され、転送される。
【００６０】
本実施例では描画メモリ１７２のデータ読み出し方向を図２０（ａ）のＸ方向にして所定幅分だけイメージデータを読み出すと、ラスタイメージデータが得られ、図２０（ｂ）のＹ方向に所定幅分だけイメージデータを読み出すとバンドイメージデータが得られる。
【００６１】
従来では印刷用のイメージデータを縦横変換により作成していたので、印刷分のイメージデータ作成処理時間が短縮される。
【００６２】
以上の動作をＣ言語で記述したものを図２３に示しておく。
【００６３】
尚、バンド幅については、本実施例の場合ノズルの数は６４個であるが、縦方向の制御も考慮して６０ビットにしている。また、本実施例では（ｃＤａｔａＢｙｔｅｓ＝８）としている。
【００６４】
ノズルの上方向がＬＳＢである場合にはポインタＰの初期値として描画メモリ１７２の先頭アドレスをセットしポインタの更新はｃＤａｔａＢｙｔｅｓ加算していけばよい事は同業者であれば容易に理解できよう。
【００６５】
以上述べた実施例の構成と本発明の対応箇所を参考のために記述しておく。請求項１の記憶手段は描画メモリ１７２に相当する。印刷用の描画メモリを専用に有していない場合には表示装置用のイメージを格納するメモリを本発明の記憶手段として使用することができる。
【００６６】
請求項１の制御手段は図１８の内容を実行するプリンタドライバ２００に対応する。このプリンタドライバをソフトウェア構成にして中央処理装置ＣＰＵにおいてこのソフトウェアを実行することでも本発明の制御手段を実現できる。請求項３の指示手段はＲＡＭ上に設定された印刷方向保存フラグが対応する。なお、キーボードＫＢから指示を与えた場合にはキーボードＫＢが指示手段となる。
【００６７】
以上述べた実施例の他に次の例を実施できる。
【００６８】
１）本実施例ではプリンタ２がホストコンピュータ１に内蔵されている例を示したがプリンタ２をホストコンピュータ１に対して外部接続する例に対しても本発明をできようできる。
【００６９】
２）印刷対象のイメージを記憶しておくメモリはビデオメモリのように専用的に設けてもよいし、他のメモリと共有使用してもよい。
【００７０】
【発明の効果】
以上、説明したように、請求項１の発明によれば、ランドスケープ印刷の場合、縦横変換処理が必要なく、印刷に要する時間を短縮させることができる。
【００７１】
請求項２の発明によれば、ランドスケープ印刷の場合、縦横変換処理が必要なく、印刷に要する時間を短縮させることができる。
【図面の簡単な説明】
【図１】本発明を適用したプリンタ一体型パーソナルコンピュータの斜視図である。
【図２】ホストコンピュータとプリンタの概略構成を示すブロック図である。
【図３】図１のプリンタ（ユニット）２の内部構成を示す斜視図である。
【図４】プリンタ２の制御系を示すブロック図である。
【図５】記録ヘッド及びヘッドドライバの構成図である。
【図６】ヘッド駆動のタイミングを示すタイミングチャートである。
【図７】キャリッジモータ及びモータドライバの構成図である。
【図８】図７のドライバの駆動タイミングを示すタイミングチャートである。
【図９】プリンタコントローラ２４の内部構成を示すブロック図である。
【図１０】プリンタＩ／Ｏレジスタのマップを表す説明図である。
【図１１】印字バッファと受信バッファのアドレス領域を示す説明図である。
【図１２】ホストコンピュータ１とプリンタ２のＩ／Ｏ領域における相関関係を示す説明図である。
【図１３】電源投入時の処理内容を示すフローチャートである。
【図１４】ＰＯＳＴ処理内容を示すフローチャートである。
【図１５】キーボード割り込み処理内容を示すフローチャートである。
【図１６】キーコード取得処理内容を示すフローチャートである。
【図１７】描画における機能ブロック図である。
【図１８】プリンタドライバの処理内容を示すフローチャートである。
【図１９】印刷方向保存用フラグを示す説明図である。
【図２０】ポートレート印刷とラスタイメージデータを示す説明図である。
【図２１】ランドケープ印刷とバンドイメージデータを示す説明図である。
【図２２】描画メモリにビットマップデータを示す説明図である。
【図２３】印刷用イメージデータを作成する処理をＣ言語で示す説明図である。
【符号の説明】
１  ホストコンピュータ
２  プリンタ（ユニット）
１０１  装置本体
１０２  キーボード
１０３  表示部
１０４  上カバー
【図１】
0003542443.tif 000002
【図２】
0003542443.tif 000003
【図３】
0003542443.tif 000004
【図４】
0003542443.tif 000005
【図５】
0003542443.tif 000006
【図６】
0003542443.tif 000007
【図７】
0003542443.tif 000008
【図８】
0003542443.tif 000009
【図９】
0003542443.tif 000010
【図１０】
0003542443.tif 000011
【図１１】
0003542443.tif 000012
【図１２】
0003542443.tif 000013
【図１３】
0003542443.tif 000014
【図１４】
0003542443.tif 000015
【図１５】
0003542443.tif 000016
【図１６】
0003542443.tif 000017
【図１７】
0003542443.tif 000018
【図１８】
0003542443.tif 000019
【図１９】
0003542443.tif 000020
【図２０】
0003542443.tif 000021
【図２１】
0003542443.tif 000022
【図２２】
0003542443.tif 000023
【図２３】
0003542443.tif 000024