スを返しているだけて、す。 0 TL 入力 コンド番号 . 3 , ioctlin) 常駐を確認するための手段として , ①常駐部のデバイスへッダアドレス ②常駐チェック用の Magic No. を返しています。常駐チェック用の Magic No. は "ESCP" て、す。 IOCTL 入力は DOS ファンクション 4402 h(Table 18 ) の IOCTL キャラクタデバイスか らの制御データの受信時に呼び出されます。 今回のケースとは異なりますが , TSR プ ログラムをあえてデバイスドライバとして 記述する場合があります ( したがって , Part 1 の CON 出力ファイル化ユーティリティ (eat- con. c, 付録ディスク収録 ) をデバイスドライ バとして記述することも可能て、す ) 。デバイ スドライバて、は IOCTL 入出力て、 , ここて、示 したようにほかのプログラムと簡単に通信 て、きるため , TSR プログラムをデバイスド ライバとして記述することには十分なメリ ットがあります。普通に TSR プログラムと して記述して , 常駐を確認するための手段 を提供しようとすれば INT 2Fh システムコ ール (TabIe 4 ) に割り込む必要があります。 0 TL 出力 ゴンド番号 . 12 , ioctlout) 漢字モードと ANK モードの指定データ ( 俗 にいう漢字 IN / 漢字 OUT のコマンド ) を切り 換える機能て、す。スイッチー E の 8 通りの機能 は IOCTL 出力を呼び出して切り換えていま トヨ 〒 H 十十十十十十十十 十十十十十十十十 す。データの並びは TabIe 19 のように合計 32 バイトて、す。指定コマンドが 15 バイト未 満の場合は残りにダミーデータ ( たとえば 00 h) を追加してください リクエストヘッダの転送バイト数 が 32 バイト以外の場合は Table 20 が指定さ れたものとしてコマンドをプリンタへ直接 出力しています。これはプリンタの簡単な コマンドを直接プリンタへ出力することを 想定した機能て、す。 IOCTL 出力は DOS ファンクション 4403 h(Table 21 ) の IOCTL キャラクタデバイスへ の制御データの送信時に呼び出されます。 刀期設定 ( コマンド番号 .0 , prninit) 初期設定はスイッチー E て、指定されたプリ ンタモードに応じてプリンタを初期化して , フリーメモリ開始アドレスを返しているだ けて、す。 Turbo C/C 十十て、は _heapbase の内容 ( ワード値 ) が near ヒープ領域の先頭アドレ スを示します ( Fig. 8 ) 。また , MS ー C て、は変 数 end がスタック領域の先頭を示しています (Fig. 9 ) 。したがって , この値を指定して near ヒープとスタック領域を切り離します。 MS ー C て、は疑似変数が使用て、きないため , se gread 関数て、取得したセグメント値を使用し ただし , escptc. c ( 付録ディスク収録 ) の tsr exit 関数て、は TSR プログラムの参考のため に , 初期化処理て、返されたフリーメモリ開 始アドレスは使用せず , 直接 heap base(Turbo C / C 十十 ) または end(MS (C) まて、を常駐させています。 main 関数以降ては次のことを行っていま す。 ・前述の Fig. 13 のようにして , デバイスド ライバの追加と除去を行う。このとき内 部 FCBI ロック内のデバイスへッダのア ドレスも切り換えている。 ・常駐の確認は , DOS ファンクション 4402 h(TabIe 18 ) て、返される情報によって行 ・常駐後の再起動て、は DOS ファンクション 4403h(Table 21 ) て、スイッチー E て、指定され たモードに切り換える ( 自作プログラムて、 モードを切り換える場合はリストを参考 にしてください ) 。 ・ Turbo C/C 十十と MS ー C て、異なる部分は 常駐終了のための tsr exit 関数て、す。 MS ー C て、は疑似変数が使用て、きないため , se gread 関数て、取得したセグメント値を使用 イ main 関数以降 する。 PC59801 版 ESC[P 丿ンタドライバの説明 Turbo C/C 十十 tcc -w -mt escptc. c イルしてください TurboC / C 十十ては以下のようにコンパ TabIe 15 NEC 漢字の罫線コード ( シフト』 S : 86a2h ~ 86edh ) Table 16 新 J 旧の罫線コードと特殊記号 J 旧 2C20 2C30 2C40 2C50 2C60 0 シフト』 S E 1 F ト 2 0 ト 3 1 ト 4 2 ト 5 3 ト 6 4 ト 1 7 5 8 6 869E 86AE 86BE 86CE 86DE 9 7 ヨ A 8 L ヨ B 9 L ヨ C A ヨ D B ヨ E C ヨ F D ヨ JIS 2840 2830 2820 2260 2250 2240 0 シフト』 S E 1 F L 2 0 ト 3 1 4 2 ト 81 B E 81 CE 81 D E 849E 84AE 84BE 5 6 3 4 亠十 7 8 9 A B C D E F 5 6 7 8 9 A B C D ト丁ヨ亠十一一「 1 ト〒ヨ亠十ト T H 亠 Z 亠 十 56 C MAGAZINE 1991 7