MSX Datapack wiki化計画

21章 その他マネージャ

※
※ このページは書きかけです。以下の可能性があります。
※ ・誤字、脱字等のチェックをおこなっていません。
※ ・テキスト、表などフォーマットがされていない。
※ ・画像が抜けている。
※

 この章では、今まで解説した以外のマネージャの各ファンクションについて説明します。その他のマネージャとしては、以下のものがあります。

  • システムマネージャ
  • キーマップマネージャ
  • サウンドマネージャ
  • メモリマネージャ
  • プリントマネージャ

 21.1 ファンクション一覧

 その他のマネージャには、以下のファンクションがあります。

 21.2 ファンクションの説明

 以下では、その他のマネージャの各ファンクションについて説明します。

21.2.1 表記法

 ファンクションの説明では、次のように表記します。

21.2.2 システムマネージャ

 システムマネージャは、どのマネージャにもあてはまらないルーチン群です。

21.2.3 キーマップマネージャ

 キーマップマネージャは、キーマップを管理するマネージャです。

21.2.4 サウンドマネージャ

 サウンドマネージャは、PCMの録音・再生を管理するマネージャです。

21.2.5 メモリマネージャ

 メモリマネージャは、メモリを管理するマネージャです。

21.2.6 プリントマネージャ

 プリントマネージャは、プリンタ出力を管理するマネージャです。プリンタマネージャは、指定されたデータをプリンタドライバに私、プリンタドライバが、本体に接続されているプリンタに応じたプリンタ制御コマンドをプリンタに送ります。

21.2.7 プリンタドライバ

 プリンタドライバとは、プリンタとアプリケーションの間に入り、どのようなプリンタが接続されているかを、アプリケーションが意識しなくても印刷できるようにするためのオーバーレイプログラムです。
 プリンタドライバはプリンタごとに用意され、ユーザーが「プリンタ.DA」を使用して、接続されたプリンタ用のドライバを設定します。
 アプリケーションが_pd()を実行すると、現在設定されているプリンタドライバが呼び出されるので、どのプリンタが接続されているか(どのプリンタドライバが設定されているか)をアプリケーションは意識しないで印刷することができます。

21.2.8 プリンタドライバの変更

 _chpd()により、アプリケーションプログラムから、どのプリンタドライバを使用するかを設定できます。しかし、通常は「プリンタ.DA」によってユーザーが設定するので、むやみに変更してはいけません。

21.2.9 プリンタドライバの呼び出し

 プリンタドライバを呼び出すには_pd()を使います。_pd()には機能番号を渡して、どのような処理をするかを指定します。機能番号とその内容は以下のとおりです。

表3.35 プリンタドライバの機能番号

機能番号名前処理内容
0PD.INITプリンタドライバの初期化
1PD.OPENプリンタの印刷開始宣言
2PD.CLOSEプリンタの印刷終了宣言
3PD.PRINT印刷の実行
4PD.MENU用紙の設定
5PD.START開始ページ、終了ページ、印刷枚数の設定
6PD.PAGE印刷開始メッセージの表示

 アプリケーションは以下の手順で印刷します。

  1. PD.INITでプリンタドライバを初期化します。
  2. PD.MENUで用紙を設定します。PD.MENUでは、プリンタドライバがダイアログを表示し、ユーザーの設定を記憶します。用紙の設定は、アプリケーションのメニューで印刷の前に行なってもかまいません。
  3. PD.STARTで開始ページ、終了ページ、印刷枚数を設定します。PD.MENUでは、プリンタドライバがダイアログを表示し、ユーザーの設定を記憶します。
  4. PD.PAGEで用紙セットのメッセージを表示します。
  5. PD.OPENで印刷の開始を宣言します。
  6. PD.PRINTで印刷を実行します。印刷開始ページや終了ページ、印刷枚数などはアプリケーションが_printinfo()を呼び出してPRINT構造体へのポインタを取得し、構造体内部のstartp、endp、copyを調べて決定します。構造体内部のoptの最下位ビットが1のときは、カットしの設定になっているので、アプリケーションは1ページ印刷するごとに、PD.PAGEを呼び出して用紙のセットの表示をしなくてはなりません。
  7. PD.CLOSEで印刷の終了を宣言します。

 プリンタドライバの各機能について、以下で説明します。

表3.36 プリンタドライバの機能

名前機能
PD.INITプリンタドライバを初期化します。MSXViewカーネル内部にあるプリンタ用のワークエリアを、プリンタドライバが持っている値で初期化します。_pd()は正しく初期化できた場合OKを、初期化できなかった場合OK以外を返します。
PD.OPEN印刷の開始を宣言します。プリンタをリセットし、印刷ができる状態にします。_pd()は印刷が可能になったらOKを返します。プリンタ接続されていなかったり、プリンタがオンラインでなかったり、用紙がなかったりしたら、OK以外を返します。
PD.CLOSE印刷の終了を宣言します。_pd()は正しく終了できた場合にOKを、終了できなかった場合OK以外を返します。
PD.PRINT印刷を行ないます。PRINT構造体のbuffで示されるバッファの内容を解釈し、プリンタの制御コードに変換してプリンタに送ります。buffは、通常はMAILを示しています。MAILは080H〜0FFH番地までの128バイトしかないので、アプリケーションがもっと多くのデータを一度に印刷したいときは変更することができます。変更するときは、buffの示す番地がプリンタドライバと重ならないように十分大きくなければなりません。変更したときは、印刷が終了したらbuffがMAILを示すように戻してください。
データの終わりは00Hをおきます。
印刷中にGRAPH+STOPが押されると、印刷を中断してアプリケーションに戻ります。
_pd()は、印刷が正常に終了したらOKを、途中で中断されたらOK以外を返します。
PD.MENU用紙の設定をユーザーが行ないます。プリンタドライバがダイアログを表示し、ユーザーの設定を_printinfo()が返す構造体へのポインタで示される領域に記憶します。設定される値(PRINT構造体内部)は以下のとおりです。
用紙の設定は、アプリケーションのメニューなどで印刷の前に行ってもかまいません。
_pd()は、設定されたら0を、中止されたら1を返します。
PD.START開始ページ、終了ページ、印刷枚数を設定します。プリンタドライバがダイアログを表示し、ユーザーの設定を_printinfo()が返す構造体へのポインタで示される領域に記憶します。
設定される値(PRINT構造体内部)は以下のとおりです。
_pd()は、設定されたら0を、中止されたら1を返します。
PD.PAGE用紙セットのメッセージを表示します。プリンタドライバは、「用紙をセットしてRETキーを押して下さい」と表示してリターンキーが押されるのを待ちます。
_pd()はRETキーが押されたら0を、ESCキーが押されたら0以外を返します。

 プリンタドライバが解釈する制御コマンドは、以下のとおりです。大文字はその記号、小文字はパラメータを表します。ESCは01BH、CRは0DH、LFは0FH、FFは0CHです。

表3.37 プリンタ制御コマンド一覧

コマンド意味
ESC Rプリンタのリセット
プリンタをリセットします。
ESC V h vグラフィック印刷の拡大率の設定
画面のグラフィック印刷を行なうときの拡大率を設定します。横拡大率はhで、縦拡大率はvで設定します。どちらも1バイトで指定し、1を設定すると画面上の1ドットがプリンタ上での1ドットとなり、2を設定すると画面上の1ドットがプリンタ上での2ドットとなります。
ESC F fグラフィック印刷の左マージンの設定
画面のグラフィック印刷を行なうときの左マージンを設定します。fはワードで指定し、左端からのプリンタでのドット数となります。
ESC J j紙送りの実行
紙送りを実行します。jはワードでプリンタでのドット数となります。
ESC ! n area1 area2 area3 … arean画面のグラフィック印刷
画面のグラフィック印刷を行ないます。画面上のいくつかの範囲を一度に印刷できます。nはバイトでそのあとに続く画面の領域の個数を指定します。area1からareanはAREA構造体で印刷を行なう領域を指定します。画面上でパレットコードが1の画素がプリンタで黒として印刷されます。
ESC I patternアイコンパターンの印刷
12x12ドットのアイコンを印刷します。patternは、18バイトのビットパターンデータそのものを指定します。
ESC K x yテキスト印字の文字サイズの指定
テキスト印字での、文字のサイズを設定します。xはバイトでの横のサイズを、yはバイトで縦ののサイズを指定します。文字サイズの初期値は24x24です。
ESC P pテキスト印字の文字の横の間隔の指定
テキスト印字の文字の横の間隔を指定します。pはバイトです。文字ピッチの初期値は1です。
ESC Xアンダーラインテキスト印字の設定
アンダーラインテキスト印字を設定します。これ以降、ESC Yが送られて解除されるまでのテキスト印字は、アンダーラインつきで行われます。アンダーライン印字は、1行の印字が終了しても、解除されません。
ESC Yアンダーラインテキスト印字の解除
ESC Xで設定されたアンダーライン印字を解除します。初期化は、このモードになります。
ESC xプロポーショナル印字の解除
プロポーショナル印字を解除します。これ以降、テキスト印字は固定ピッチで印字されます。
ESC yプロポーショナル印字の設定
プロポーショナル印字を設定します。これ以降、テキスト印字はプロポーショナル印字されます。初期化時は、このモードになります。
CRキャリッジリターン
プリンタのバッファにあるデータを印刷し、プリンタヘッドを左端に戻します。
LFラインフィード
プリンタのバッファにあるデータを印刷し、用紙を1行分送ります。
FFフォームフィード
プリンタのバッファにあるデータを印刷し、用紙を1ページ分送ります。
00H印刷データの終わり
印刷データの終了を意味します。プリンタドライバはこのデータを読むと、アプリケーションプログラムに返ります。

 上記コマンド以外の文字がESCの後に続くと、プリンタドライバはそのESCおよび次の文字を無視して、更にその次の文字から解釈を実行します。
 上記プリンタ制御コマンド以外はテキスト印字として扱われます。漢字コードはシフトJISコードです。テキスト印字で、漢字を印字できないプリンタでは、プリンタドライバがMSXViewの持っている漢字フォントを展開して、ビットイメージで印字します。漢字プリンタではプリンタがプリンタに合わせて、漢字コードを変換して送ります。