このエントリーをはてなブックマークに追加
スポンサーリンク

プリンタBIOS

J-3100で対応しているプリンタ

J-3100が発売された頃はプリンタの制御コードは特にこれといってシェアを勝ち取ったものはなく、東芝系、NEC系、エプソン系がしのぎを削っている状態でした。それなんで、OSの方で色々なプリンターに対応させる必要がありました。J-3100は本来なら東芝プリンタ専用としたかったのでしょうが、(実際、パソピア1600は東芝プリンタ専用でした)J-3100では東芝プリンタの他に、NEC PR201系プリンタ、ESC/Pプリンタに対応していました。

しかし、DOS/Vができた頃には制御コードはほぼESC/Pで固まっており、そのためDOS/VではESC/Pのみの対応となっています。

J-3100用にはNECPRT.SYSやEPSONPRT.SYSが用意されていましたが、これをVEMモードや東芝DOS/Vで使おうとすると、 イメージ印字等バイナリコードを送る際にシフトJIS→JISコード変換が働いてしまって 正常に印字する事ができませんでした。これはJ-3100用ドライバーにはJISコード変換無効という機能があり、アプリ側でバイナリコードを送る前には変換無効を指定していたのですが、DOS/Vではバイナリコードかテキストかをドライバー側で判断して切り替える必要があったためです。

そのため、VGAモードでNECや東芝プリンターを使う時には、このサイトで公開しているプリンタードライバーを組み込む必要があります。

プリンタ割り込み (INT 17H)

本来のプリンタBIOSでは、AH00、AH01、AH02、のみが対応しており、その他の機能は J-3100用ドライバーが独自に拡張したものです。 拡張機能を使うためには、DCGAモードではJ-3100用のプリンタドライバを、 VGAモードでは、このサイトで公開しているプリンタードライバーを組み込む必要があります。

以下、拡張機能には☆マークがついています。 ☆マークのついた機能は、DOS/Vに通常含まれるプリンタドライバでは使う事ができません。
AH=00H 1バイト印字

ALレジスタにセットしたコードを、DXレジスタの示すプリンタ(通常は0)に出力します。エラーコードはAHレジスタに返ります。また、シフトJISコードを受信すると、自動的に [漢字ON] JISコード [漢字OFF] に変換します。

DOS/V用プリンタードライバー集では、イメージ印字のコマンドや、外字登録コマンド、ダウンロード文字定義コマンドなど直接16進数を扱うコマンドがきたら、データーとして必要なバイト数分だけはJISコードに変換をしません。したがって、DOS/V版の一太郎Dashなどで罫線を印字しても正常に印字されます。
例)
NEC系のイメージ印字コマンドをNPRINTER.SYSで送る場合

ESC J n1 n2 n3 n4 データー(n1n2n3n4バイト)
                 ↑この部分が透過モードになります。
どのコマンドが来たらどれだけ透過にするかは、プリンターのメーカーごとに異なりますが、その辺は自動的に判断します。

ただし、LIPS-IIIとESC/Pageはコマンドが多すぎるため、透過の判断をしません。レーザープリンターでイメージ印字をする場合、AH=85Hでまず漢字変換を無効にしてから送ってください。
入力 出力
AH 00H
AL 出力する文字
DX 装置番号
AH ステータス
AH=01H 初期化

プリンターに初期化信号を送ります。
入力 出力
AH 01H
DX 装置番号
AH ステータス


AH=02H ステータスチェック

プリンターの現在の状態をAHレジスタに返します。
入力 出力
AH 02H
DX 装置番号
AH ステータス



AH=03H 文字列プリント☆

ES:BXレジスタの示す文字列を、CXレジスタに入れた数だけ、DXレジスタの示すプリンタに出力します。このモードでは、漢字変換は行われません。ただし、「じぇいさん」動作中は、「じぇいさん」内の独自ルーチンで漢字変換が行われます。
入力 出力
AH 03H
CX 文字列の長さ
ES:BX 文字列
DX 装置番号
AH ステータス
AH=84H 1バイト印字☆

ALレジスタにセットしたコードを、DXレジスタの示すプリンタ(通常は0)に出力します。エラーコードはAHレジスタに返ります。JISコードには変換しません。セットするレジスタは、AH=0と同じです。
AH=85H 漢字変換指定☆

ALレジスタに漢字変換の有効/無効を指定します。0で有効、−1で無効になります。ハードコピードライバーもこの機能を利用しています。
入力 出力
AH 85H
AL 0 漢字変換有効
FFH 漢字変換無効
なし
なお、ナツメ社のJ−3100ハンドブックに記載されている、AH=F0HとAH=F1Hには対応していません。J−3100のテクニカルマニュアルにも記載されていないので、おそらくAH=84HとAH=85Hの間違いではないかと思います。
AH=10H プリンタードライバーのエントリーアドレスを求める☆

プリンタードライバーのエントリーアドレスを返します。これは、このサイトで公開しているDOS/V用プリンタードライバー集専用の機能です。

ALレジスターに20Hが返ることで、この機能が有効であることが示します。また、DX:BXレジスタにエントリーアドレス、ドライバー名、バージョン等が返ってきます。この機能は、PRDRV [ON OFF]で利用しています。
入力 出力
AH 10H
DX 装置番号
AL=20H この機能のサポートあり
AL≠20H この機能のサポートなし

(AL=20Hの場合)
DX:BX プリンタードライバーのエントリーアドレス
DX:BX+3 ドライバー名
DX:BX+11 バージョン
DX:BX+16 一時停止フラグ (0:稼働中 1:停止中)

ハードコピー割り込み (INT 5H)

特に設定する必要のあるレジスタはありません。ハードコピーを実行したい所で、INT 5を呼んで下さい。ただし、プリンターのタイムアウトなどの監視はしていませんので、あらかじめINT 5を呼び出す前にプリンターのレディをチェックする必要があります。

ハードコピー実行後、プリンターは以下の設定になります。

・両方向印字モード
・改行単位=1/6インチ

参考文献
『J-3100解析ハンドブック』 1989年 土屋勝著 ナツメ社
『DOS/Vテクニカル・リファレンス・マニュアル』 1993年 芦達剛著 ソフトバンク
『J-3100シリーズ・テクニカルマニュアル』 1994年 南部武彦著 ソフトバンク
『ATOK読本』 1994年 山田祥平 ジャストシステム
『東芝パソコンハンドブック94年版』 平成6年3月1日
スポンサーリンク