グラフィック画面のモード設定 g ー S C r e n g ー s e nd グラフィックパターンを得る グラフィックパターンを得る g—send 1 文字列のグラフィック出力 g ー S t r 描画領域の指定 g ー VI e W ka i t e n 回転変換を行う 2 点間の角度を得る f t pal— パレットの初期化 s s f ー k 記号を線文字で描く 大文字 ( A ~ Z ) を線文字で描く s s f 数字 ( 0 ~ 9 ) を線文字で描く s s f n u m 小文字 ( a ~ 2 ) を線文字で描く s s f 文字列を線文字 ( べクター ) s s f S t r 枠組みの作成 ( 25 行モード時 ) t a い e 25 枠組みの作成 ( 20 行モード時 ) t a い e 20 w s f ー k 記号を箱文字で 大文字 ( A ~ Z ) を箱文字で描く w s f ーー 数字 ( 0 ~ 9 ) を箱文字で描く W S f ー nu m 小文字 ( a —z ) を箱文字で描く W S f ー S 文字列を箱文字で描く W S f ー s t r 補助人力 ( R S ー 232 C ) aux_lnp 文字列の簡易入力 input 数値 (double ) の簡易人力 input_d 数値 (int ) の簡易人力 input キーポードからの 1 文字入力 i n ー ke y 数値入力 (i n t 値 ) n u m ーーー n p 数値入力 ( d 。 u い e 値 ) n u m ーー n p 数値入力 (unsigned 値 ) u n S ー g ーー n 開発環境の充実 / c ー FUNC 0N98 全関数リスト カレントディレクトリーの変史 c h ー di r クリック音を鳴らす c ⅱ c k c r t のモードを得る C r t ー s t a t テキストカーサーの位置を得る C S r ー PO S double を 3 桁の位取りを行な dd ー 3 い高速表示 ディスクの残りパイト数を得る d s k f r e e F D D の状態をセンスする fd_chk クロック周波数を得る cl k get c p u ネームを得る g e t ー c P u dir カレントディレクトリーを得る get ディスクの接続状況を得る di s k get d rv カレントドライプファイルの属 get 性を得る k m 0 d キーポードのモードを得る get メモリーの実装容量を得る g e t m e m セグメントとオフセットを得る ge t ー s e g マシン名を得る ge t ー s y s テキストのカラー属性を得る tCOl get do s のバージョンを得る g e t ー V e r ポリュームラベルを得る vol get H D の状態をチェック hd_chk ディレクトリー存在チェック i S di r k b ー cl キーポードバッフアのクリア ソフトキーの内容を取得 key—get ファンクションキーを表示 key—on key—off ファンクションキーを非表示 ソフトキーへの文字列登録 key—set ソフトキーバッフアのポインター化 kp t r s e t デフォルトキーコードの割付 k_save ソフトキーのセープ k ー S e t ソフトキーのロード ドライプの接続数を得る maxdrv ディレクトリの作成 m k ー di r H D のヘッドを退避させる r e t r a C t rm_dir ディレクトリの削除 日付をセットする set_date カレントドライプを変更する S e t _d r V ファイルの属性をセットする s e t ー fat t キーパッフアに文字列をセット s e t ー kbu f する ポリュームラベルをセットする set_vol プリンターの状態をセンス p r n ー s ta t ァータ変換 数値処理 dtok g t ー po s ltcvs ltOS 半角数値文字列を全角に変換 グラフィック座標値をテキスト 座標に変換 ファイルタイム (long ) を文字列 に変換 文字列中の大文字を小文字に変 換 10 進整数を 10 進文字列へ変換 3 桁位取りをし文字列に変換 テキストカラーを指定 カーソルを表示する カーソルを表示しない カーソルの右移動 カーソルの左移動 指定領域内をスクロールする テキストカーサーの位置を指定 テキスト画面をクリアーする テキストの属性の変更 テキスト画面の読み込み テキストの属性を得る vram への直接出力 保存されたテキスト画面を復帰 テキスト画面の保存 bin bin_init 2 進→ 10 進の変換 2 進データェリアの初期化 補助出力 ( R S 232 C ) a u X ー 0 u t 1 文字出力 cprintc 整数桁揃え出力 C p r ー n い コンソールへの文字列出力 C p r i n t S 1 文字直接出力 dc ー c h r コンソールへの文字列直接出力 dC _s t r double,float 3 裄の位取り出 di s p ー 3 カ 標準プリンターへの出力 l—print コンソールへ高速文字列出力 p u t S t r 文字列の任意部分を表示する sdisp ファイル名検索 ( 1 回目 ) ファイル名検索 ( 2 回目以後 ) ファイル名のリストを得る 最大値の検索 ( int ) 最小値の検索 ( int ) 1 文字の検索 文字列の照合 文字列の検素 i n t の値による検索 int の値による範囲指定検索 文字列の検索 ( 漢字対応 ) 出力 S t C i d t h r e e ー S 画面制御 color C S r ー 0 n c a r ー 0 f f C s r ー f C S r ー b d_roll locate s cl v—chgatt V ー g e t a t t v—poke V r C V f ー s c h 1 f ー s c h 2 fnam ge t ー s c h ー 1 s c h ー 2 S e a r C h search_i s e a r C h ー t S t r ー S C h ファイル以外の入力 ファイル ファイルポインターのセット ファイルのコピーを作成 ファイルの確保 ファイルの大きさを得る ファイルのオープン ファイルサイズの取得 ランダムファイルのリード ランダムファイルのライト 漢字処理 文字列処理 文字列の n 番目の漢字属性を得る 文字の漢字属性の取り出し シフトⅱ s を j i s に変換 knj—chk knj—icd SJCVJ C h r ー ou t 文字列から指定文字の除去 dcvs_3 do u 制 e を 3 桁の位取り 文字列変換 d t 0 b 10 進整数の 2 進文字化 d t 0 h 10 進整数の 16 進文字化 f S t r double,float の文字列化 f t 文字列の左から n 文字の取り出 し m i d 文字列の st 番目から n 文字の 取り出し 文字列の st 番目から文字の代 文字列の置換 replace 文字列の右から n 文字の取り出 right し 空白文字列を得る space 空白を n 個画面に出力する s P C 文字列中の空白文字を 0 に変換 spcvz 文字列からスペースを除去 s p ー 0 u t 文字列の文字数指定比較 S t r C m p n 文字列を n 個連結 string 文字列の分割 div S t r 文字人力 ( 書式付き ) S t r ーー n P 文字の左揃え ー S e t S t r 文字の左揃え ( 空白文字指定 ) 2 ー S e t S t r 文字列のコビーを作成 S t r mov 文字列から指定の文字列を除去 0 u t S t r 文字の右揃え S t r r se t 2 文字の右揃え ( 空白文字指定 ) r S e t S t r ブザーを鳴らす b e ll ビープ音を止める b e Ⅱー 0 f f ビープ音を鳴らし続ける bell_on chg—key ソフトキーの登録 メモリー ( ウインドウ ) 画面を指定したアドレスに保存 V ー m OVe 1 画面分の領域を解放する wd_elose 1 画面分の領域を確保する w d ー op e n メモリー上に退避された画面を W ー r C V 復帰 指定領域内のテキスト画面を保 w_send 存 グラフィック g_circle 惰円乂は円を描く グラフィック画面のクリア ディスプレイ画面各部の色指定 g_color パレットカラーの変更 g ー c 引 0 r 2 g ー c 引 0 r 3 グラフィックカラーの設定 パレット内容の変更 g ー c 制 0 r 4 グラフィック画面のコピー g ー c PY グラフィックパターンを得る g ー ge t グラフィックスの初期化 g ー ini t ポリゴンの内タ」定 g ー iOC k g—kanji 漢字フォントを表示 直線又は矩形を描く g_line XOR モードで直線を描く g_linexor 指定領域の塗りつぶし g ー p a ー n t 指定領域の塗りつぶし g—paint2 ( タイルバターン ) 図形を描く g—pline ドットのパレット番号を得る g—point ドットのパレット番号を得る g—pointv ポリゴンを描く g—poly ドットを消去する g ー p r e S e t グラフィック画面に文字列を表 g ー p r in t ドットを表示する g ー p S e t ドットを表示する g ー p S e t V グラフィックパターンを表示 g ー pu t グラフィックパターンを表示 g ー r C V グラフィック画面のスクロール g_roll 送信レディの判別 (both ) 受信レディの判別 ( b 。山 ) 送信バッファ工ンプテの判別 (both ) パリティエラーの判別ん。 th ) オ - バ - ランエラ - の判別 ( both ) フいミングエラ - の判別 ( both ) デ - タセットレディの判別 ( b 。 th ) 受信キャリア検出の判別 ( both ) 送信許可の判別 ( b 。 th ) 拠平表示の判別 ( b 。 th ) 時関関係 指定年月日から n 日後の日付を after—day 得る 日付け文字列を得る d a t e 指定日まで日数計算 day_count ファイルタイムの取得 f ー t i m e 日付を得る g e t ー da t e ・ 曜日を得る get—day 時刻を得る g e t ーい m e 指定年月の終日を得る max—day 時刻をセットする S e t ー t i m e 日付文字列の取得 tOday 計算機の呼び出し 計算機の呼び出し ( 計算機表示 ) gcalc アナログ時計の表示 g—watch 年間カレンダーを表示する y—calend * バーソナル版には一部含まれない関数があり ます。 P()WER UP KIT マウス マウスカーソルの色設定 m C 0 ー 0 r マウスカーソルを表示する m C S r 0 n マウスカーソルを表示しない m ー c s r 0 f f マウスの移動距離を得る m di S t a n S マウスドライバーの初期化 マウスの左 S W の on , 。 ff 情報 left_free を得る 水平方向の移動範囲設定 m v el e マウスカーソルの位置設定 m ー 0 C a t e ミッキー / ドット比の設定 m—micky マウスカーソルの形状設定 m ー pa t t e r n マウスの右 SW の。 n , off 情報を nght_ free 得る マウスカーソル位置等の取得 m S t a t マウスの左 s w 情報を得る m s w 1 マウスの右 s w 情報を得る m s w 2 マウスによる数値人力 m t e n 垂直方向の移動範囲設定 m V e r t i C a ー マウスカーソルを十に設定 m X h e a r その他 システム関係 更に強化 / 拡張関数リスト POWER UP KIT オンラインマニュアル M A N E X E 付 / プリンター BIOS の初期化 プリン外に 1 バイトを出力 B IO S プリンター 1 パイト出力 i / 0 port グラフィック画面のハードコビー ( 大 ) テキストカ - ソルの形状、プリンク等の グラフィック画面のハードコビー ( 小 ) 設定 プリンタ - のステ - タスを得る 指定工リア内テキスト画面のクリア - 印字ヘッドの復帰を行なう グラフィックで角丸の枠を画く 指定ェリア内画面の上下左右スクロ - ル 改行を行なう グラフィックで影付 B 0 X を画く 漢字、 ANK 比を設定する 改行モードを設定する 改行を n / 1 加インチに設定 文字列を n 文字コビーする マウスカーソルのクリア 印字文字の設定 文字列中の小文字を大文字に変換 マウスカーソルを上向き矢印に設定 マウスカーソルを下向き矢印に設定 マウスカーソルを右向き矢印に設定 漢字人力モードに人る マウスカーソルを左向き矢印に設定 外字ファイルの読み込み フルバスのファイル名の分割 外字ファイルの作成 漢字人力モードから抜ける マウスカーンルを右上向き矢印に設定 フルバスファイル名を作る 外字を印字する その他のコントロール ーソルを右下向き矢印に設定 マウスカ フルバスでフィル名を得る ディレクトリを得る マウスカーソルを左上向き矢印に設定 使用可能な FEP ーソルを左下向き矢印に設定 マウスカ ATOK. VJE, 松茸 , NEC べリファイのモードを設定 マウスポタンが押されるまで待機 (MS-DOS ) → MS - D ( ) S ファンクシ べリファイのモードを得る マウスポタンが離されるまで待機 ョンコ - ル リトライの設定 (BIOS ) → BIOS コール テキスト画面でセレクトメニューを作成 (both ) → M S - D O S ファンクションコ グラフィック画面でセレクトメニュ - を作成 ール & B IO S コール 1 行内メニューを作成 プリンタ - に文字列を出力 B Ⅱ ) S N88BASIC の単精度を日。 at に変換 RS-232C を初期化する ( MS - DOS ) プリンタ - に文字列を出力 i / 。 port N 88BASIC の倍精度を d 。 u e に変換 RS ー 2C のバッフ内文字数を得る RS - c から 1 文孳人力 ( MS - DOS ) 文字列文字数指定の印字 ワ - ドの n ビットを 1 にセットする タイプ 1 の網かけ文字を出力 ワ - ドの n ビットを 0 にリセットする R S - C へ 1 文字出力 (M S - DO S ) ブザーの音程を設定 タイプ 2 の網かけ文字を出力 ワ - ドの上位バイトを int で得る RS - 2C を初期化する ( BIOS ) ブザーの周波数を設定 タイプ 3 の網かけ文字を出力 ワ - ドの下位パイトを int で得る R S - 2 C の使用を終了する (B 10 S ) 指定コードのフォントを得る タイプ 4 の網かけ文字を出力 RS - 2C へ 1 文字出力 ( BIOS ) 指定コードにフォントをセット ワ - ドの右ロ - テ - ト タイプ 5 の網かけ文字を出力 R S - C から 1 文字入力 ( 田 O S ) J A N 13 桁のチェックディジットを求め ワ - ドの左ロ - テート 任意の網かけを行なう R S - 2 C にコマンドを送る (B I OS ) る バイトの右ロ - テ - ト 強調印字を行なう RS - 四 2C パッフアドレスを得る ( b 。 th ) パイトの左ロ - テ - ト アンダーライン印字を行なう R S - 2 C バッフアのクリア ()o th ) ドットスペース印字を行なう RS - 2C のステ - タスを得る ( both ) コンソール関係 クラフィック関係 ート - 匚を」 - 口にを M ヨⅱ 1- : ヨ 1 工 N P ー 1 a u X ー 1 n p NAME : 廴 i 叩 S Y20 P S 工 S Äimlude ( cfum. h 》 rt = 測 X 」叩 ( D E S C R I P T I ON ーを 32C から 1 文字入力さ R E T U R N S 補助入力 ()S - 2 3 2 C ) aux— i 叩 ( i d ) : 文字列関係 マウス関係 : に工 0 リ 日本語入力制御 タ悖関係 入力文 ファイル管理関係 [ESC) 下 [ ↓ ] 文字コードを R S ー 2 3 2 C 関係 入力された文字コード 関数を選んで下さい 取消 = 上 ] ウインドウメニュー ① 00 0 工テイターなとからマニュアルを子プロセスで起動する ことができ、コーディング中に参照、出力可能。 2 プリンター、ファイルにマニュアルの出力が可能。 3 リファレンスマニュアルの EXAMPLES ソース ( サンプ ルプログラム ) のみファイル出力が可能になりコーディ ングが更に楽になりました。 4 強力な検索機能付。 プリンター関係 ( タイムアウト機能付 ) テータ変換関係 その他 ュの数 【ニル関 - マイ体 一フは ォルに はアル ルュイ ュマフ - ニとルす マーアま のュい ー X ニて トマれ ッ - キ Z す込 ・プま組 ッれも ・ア「さル 一ト給ア - ワフ供ュ - 「ル態マ ※ア形の
特集 A 諸 SIC の現状Ⅱ てす。て、すから , 次の関数を実行した と同じになります。 set10ca1e()C ALL, "C") ; MuItibYte cha 「 acte 「 s 最低限のライプラリ関数がスタンダード C の このふたつをサポートするために必要な の両方が利用て、きます。 ルチバイトキャラクタとワイドキャラクタ 両方使えるようになっています。つまりマ は両方とも重要て、すから , スタンダード C は 漢字を表す方法て、す。これらのテクニック 表すやり方と 16 ビットのような大きな数て、 数のバイトて、構成される文字として漢字を として , おもなものがふたつあります。複 日本て、使われている一般的なアプローチ にしたのがマルチバイトの技術てす。 生まれていますが , これを利用て、きるよう るために日本て、独特のコードテクニックが の漢字という大きな文字セットを付け加え トサポートを加えることがて、きました。 スタンダード C に漢字を , とくにマルチバイ ありました。日本からの多大な協力を得て , 大量の漢字を抱えているため特別な要求が 日本の場合は , 文字セットとして非常に イルて、プログラムすることが可能になりま 非常に込み入ったものて、も洗練されたスタ こうしたものを付け加えることによって , り替える機能を付け加えたわけて、す。 えることがてきるように , 簡単なものに切 け加えました。その国独自の文化などを伝 locale(" ' locale ) にスイッチする能力を付 次には , 10Ca1 locale, あるいは no て、きました。 いますが , 非常に簡単なものにすることが リケーションの場合にとくに良い例だと思 これは 16 ビット CPU の組み込み型のアプ 時刻などが仕様どおりに扱えます。 これて、特別なコード変更なして、も日付 , ライプラリには入っています。 SUMMARY C の落とし穴 S e c t i 0 n Ⅲ Whitesmiths C が生成した実行可能なオプ いることがひとつの指標て、す。それから , ドが , だいたい 2 倍ぐらいの大きさになって Whitesmiths の C コンノヾイラのソースコー あげたいと思います。 いのて、すが , その指標になる数字を 3 つほど もちろん言語のサイズを測ることは難し に比べて , 約 2 倍の大きさになりました。 カーニハン & リッチーが作った最初の C 言語 たかということてすが , スタンダード C は , 化を行ってきて , 最終的にどうなっ ヾは , 最後の要約て、す。いろいろ標準 ジェクトコードも 2 倍になっています。コン パイラと同時に提供される C マニュアルもや はり 2 倍になっています。 おそらく将来に対してももっとも重要な 変更点は , C 十十から機能をもってきた だと思います。とくに関数プロトタイプ ( Functi on prototypes) や型修飾 ( Type qualifiers) が入ったことて、す。 また , これまて、あまり重点をおいて説明 しませんて、したが , タイプチェッキングが 強化された点も注目に値します。 結論としては , スタンダード C は , いい 語になったと思います。昔の形よりも大き くなっていますが , いわゆるビッグランゲ ージにはまだなっていません。 円 TFALLS STANDARD C 解決されなかった点 の問題点について説明していきます。 まず最初の項目は , どういう問題が 解決されていないかについて説明します。 C は , 皆さんもご存じのように , いろいろ な意味て複雑な言語て、す。ここては C 言語に 関して , 現在どのような問題があるかを見 ていきますが , こに取り上げられている 問題は , 必ずしもそれほど大きな問題だと は考えていません。この点は強調しておき ます。 ては , どういう問題を片づければ , もっ と状況を改善することがてきるかについて , それぞれ述べていきたいと思います。 ・浮動小数点 まず , 最初の問題て、すが , 浮動小数点の 処理のほとんどが , double 型て、ある点を指 摘したいと思います。古いプログラムとの コンパチビリティを保っため , 3.0 のような 単純な浮動小数点定数と記述しても , それ が double 型になるという問題が残っている わけて、す。 ・ストリングリテラル もうひとつコンパチビリティの点から考 えられる問題として , ストリングリテラル の問題をあげたいと思います。委員会の多 くのメンバは , ストリングリテラルを変数 てはなく , 文字列定数 , つまり変更てきな い文字列として扱いたかったのてすが , ス トリングを文字列定数として扱うようにす るには , それを代入するポインタの宣言を すべて変更するという大きな仕事が発生し 特集 ANSI C の現状Ⅱ 63
五ロ 用 応 nxtype が漢字第 1 バイトのとき 第 2 バイトを格納するときに , そこが漢字 第 1 バイトの場合には , その次の文字 ( 第 2 バイト目 ) を空白て、クリアする (Fig. 5 ) 。 ③カーソル位置が漢字第 2 バイトで , 格納 する文字が漢字第 2 バイトでないとき カーソル位置が漢字第 2 バイトならば , そ の前の第 1 バイトも空白て、クリアする。 ただしすて、に格納した漢字第 1 バイトと は区別する必要があります ( Fig. 6 ) 。 ・文納と表示 現行ポインタ * curptr へ文字を格納しま す。格納文字が ANK か漢字第 2 バイトのと きだけ , 文字を表示します。 ・カーソルと現行ポインタの叫斤 カーソル X 座標 xposit と現行ポインタ cur ptr を更新します。 2 バイトコードて、も 1 バイ ト単位て、処理を行うのて , 2 バイト目を処理 するときには , 第 2 バイト目を格納すべき場 所を指しています。 カー男レ後退 —backward 関数ー カーソル位置がバッファ先頭てはない場 合には , カーソルと現行ポインタを 1 減じま す (List3)0 ただし , 減じた結果 , カーソル が漢字第 2 バイトになる場合には , もう 1 回 減じます。 List 7 21 : #define KHEAD4 22 : #define HANKJI 23 : #define HANKJ2 24 : #define HANKJ3 25 : #define HANKJ4 26 : #define CONSTI 27 : #define CONST2 28 : #define CONST3 29 : 30 : #define B し ANK 31 : #define FWD 32 : #define BACK 33 : #define INS 34 : #define DE し 35 : #def ine ESC 36 : #define CR 37 : #define bE しし 38 : #defiae HOME_CLR 39 : 40 : #def'ine ANK 4 i : #define KANJI 1 42 : #define KANJ12 43 : 44 : static Char 45 : static Char 46 : static Char 47 : static Char 48 : static int 49 : static i nt 50 : static int 51 : static int 52 : casel ( ) : 53 : VO i d case2() : 54 : VO i d case3() : 55 : V 0 ー d case4 ( ) : 56 : VO i d key-asgn(int mode) : 57 : VO i d get-key-str(int x, int y, char *buffer, 58 : i nt int mode) : int max, char-set(unsigned char *ichr) : 59 : VO i d backward() : 60 : VO i d forward ( ) : 61 : VO i d insert() ; 62 : VO d delete() : 63 : VO i d get-lchar(unsigned char *ichr) : 64 : i nt test_str(unsigned char *buf, unsigned 65 : int *testptr) : Char 66 : int get_strln(unsigned char *buf, int cnt) : 67 : cls(); V 0 i d 68 : clearl(int y); VO i d put-str(int x, int y,char *buf, int count) : 69 : VO i d 70 : V 0 i d csr-posit(int x, int y); put-chr(int x, int y, char chr) : 71 : V 0 i d 72 : buzzer() : V 0 i d 73 : csr_fwd() : V 0 i d csr-back() : 74 : VO i d color(char *attr, char *colorno) : 75 : VO i d 76 : 77 : / * main 78 : main() 79 : VO i d str[60], ichr[2]; Char 82 : int workno, X, y, cnt; 83 : key-asgn( の : 85 : 88 : 89 : 90 : 92 : / * 漢字第 1 バイト境界 ( 最終 ) * / / * 半角漢字第 2 バイト境界 ( 先頭 ) / * 半角漢字第 2 バイト境界 ( 最終 ) / * 半角漢字第 2 バイト境界 ( 先頭 ) / * 半角漢字第 2 バイト境界 ( 最終 ) / * 半角漢字定数 for HÅNKJ3 * / / * 半角漢字定数 for HANKJ4 * / / * 半角漢字定数 for その他 * / / * SPACE * / / * DE し * / / * Return * / / * BUZZER Asci i control COde / * HOME_CLR * / / * 漢字第 1 バイト * / / * 漢字第 2 バイト * / / * カーソル位置のポインタ * / / * データの最後のポインタ * / / * 入力域の最後のポインタ * / / * 入力可能文字数 ( 半角単位 ) / * 挿入モードフラグ 0 = 上書き / 1 = 挿入 * / / * 文字タイプ * / / * カーソル座標 * / 0xfe 0x3f 0xde 0x7f 0x9e 0x 1 f 0X20 0X02 0x0c 0X08 0x 12 0x7f 0x1b 0x0d 0X07 0x1e 0 1 2 *chr; *curptr; *maxptr; *endptr; maxcnt; insmode; ctype : xposit, yposit; カーソル前進 ー fo a 「 d 関数ー カーソル位置がバッファ末端てはない場 合には , カーソルと現行ポインタを 1 増やし ます (List4)0 ただし , カーソル位置が漢字 第 2 バイトにある場合には , 漢字第 1 バイト になるように調整します。 キー処理 —insert 関数ー / * キーポード定義 * / c I s ( ) : color (REV, SKY) : put-str(21,2,"*** キー入力ルーチンテスト ☆☆☆” , 38 ) : c010r(0RG, WHITE) : put-str(30.4," 1 : 1 文字入力 & 表示 " , 2 の : put-str(30,6,"2 : 文字列種別の取得 " , 2 の : put-str(30,8,"3 : パイト数の取得 ". 18 ) : put-str(30, 10 , " 4 : 文字列入力 " , 14 ) : put-str(30, 12. " 9 : 終了 " , 8 ) : c010r(0RG, SKY) : 応用 C 言語 105
へずらすだけなのて、 , 上書きよりも考え方 は単純て、す。 まず , バッファ末端に 1 バイトの余白があ るかをチェックします。余白がない場合に は , ェラーを返してはじきます。なお , 挿 入モードにおいて 2 バイトコードを格納て、き る余白があるか否かは , あらかじめ get_key str て、チェックされています。これは c れ ar set が 1 バイト単位の処理を行うようになっ ているからて、す。 次に , カーソル位置から後方の文字列を 1 バイト後ろへずらします。カーソル位置の 文字を空白 ( 0X20 ) て、クリアします。 なお , 転送は最後の文字から行います。 先頭文字からすらすと , すべての文字が同 じ文字になってしまいます。文字列の最後 を示すポインタ maxptr を更新します。バッ フア内容を表示して , カーソル位置を設定 します。 ・上書きモード 上書きモードて、は , 入力文字と上書きさ れる文字の種類の組み合わせによって , 処 理が違います。まず , 文字を格納する場合 の考え方を見てみましよう。 ◆ ANK を格納するとき上書きされるバッ フアの文字種によって , 処理が次のように 違います ( Fig. 1) 。 ① ANK へ上書き そのまま , 格納します。 ②漢字第 1 バイトへ上書き 漢字第 2 バイトがゴミになるのて、 , 第 2 ノヾ イトを空白て、クリアします。 ③漢字第 2 バイトへ上書き 漢字第 1 バイトがゴミになるのて、 , 第レヾ イトを空白て、クリアします。 ◆漢字を格納するとき上書きされるバッ フアの文字種によって処理が違うのは ANK と同じて、すが , 第 2 バイトを格納するための バッフアもチェックする必要があります。 漢字第レヾイトを格納するバッフアの文字 List 2 ^ 0 ー 8 0 、 1 C•a ′ 0 ) -. 0 戸 0 ^ 0 curptr 十十 : xposit 十十 : return; カーソル後退 backward 1 : backward 3 : backward ( ) 4 : VO i d 6 : top: 7 : 8 : 9 : 13 : 14 : 16 : } List 3 if(curptr!=chr) / * カーソルポインタ後退 * / curptr--; xposit- csr-back() : / * カーソル後退 * / if(test_str(chr, curptr)==KANJ12) goto tOP ; return; カーソル前進 forward 1 : forward * / 3 : forward ( ) 4 : VO i d 6 : st=0; 7 : 8 : top: 9 : 12 : 20 : 22 : 23 : 24 : 26 : 27 : end: 29 : } List 4 int if(curptr>=endptr-l) if(st==KANJ12) curptr- xposit- csr-back() : buzzer() : else { curptr 十十 : xposit 十十 : csr_fwd() : st=test str(chr, curptr) : if(st==KANJ12) goto top; return; INS キー処理 insert 1 : ー nsert 3 : 4 : insert() VO i d 6 : 7 : 8 : 9 : List 5 1 ワ】 種第第 字字字 文熱漢漢 0 1 よワ】 type; int 102 CMAGAZINE 19 5
0 ℃ PARTS 」は C 言語で様々なアプリケーションを開発するために必要 な関数を提供します℃ PARTS 」の関数を組み合わせて使用するだけ で通常業務に必要な殆どの機能を満足することができます。 0 ℃ PARTS 」は AN 規格対応の関数を用いて作成されているので、 MS—C 、 Lattice C 、 Turbo C 、 Quick C の各 C コンパイラーで使用 可能です。 ( またメモリーモデルについてもほとんどサポートしています。 ) 0 ℃ PARTS 」はすべてソースコードで提供しておりまた、ライセンスフリー です。 0 ℃ PARTS 」にはそれぞれのパッケージに含まれた関数を用いた実用 ついての説明が記されています。 0 付属マニュアルには各関数についての仕様及びサンカレプログラムに PC -9801 シリース ( 対応機種 ) P A R T S 的な参考プログラムが付属しています。 - 、にン罵 タイトル等を自由に変更できます。また、罫線についてもフォーマットファイル上で指 し、帳票を印字します。従って、プログラム作成後でも、帳票のレイアウト、印字本行数、 本ライプラリーでは、市販工テイターを使用して作成したフォーマットファイルを使用 本ライフラリーでは帳票作成時に必要な関数を提供しています。 印字位置指定 ( 左寄せ、右奇せ、センタリンク ) 印字形式の編集機能 ( カンマ付き数字編集等 ) 提供する関数の主な機能は次のとおりです。 定できます。 サンプルプロクラム・・・・・宛名印字プロクラム、住所録管理プログラム ※印字位置、印字桁数についてはフォーマットファイル上で指定 ヒットイメージ出力 改行ピッチ、文字間ピッチ変更 特殊印字機能 ( 罫線、アンターライン、網掛け、倍角、強調、 4 倍角 ) 売中 1 0 サンプルプログラム・・・・・・ノヾーコード印刷プログラム 八一コード印刷後に対応するコードを縮小印字可能 ても使用可能。ただし、印字精度の高いプリンターを使用して下さい ) 使用可能プリンターは P 日 201 系のプリンター ( 印字処理を変更すれは他のプリンター >JAN 、 ITF 、 NW7 、 CODE39 の各八一コードをサホート 提供する関数の主な機能は次のとおりです。 供します。 本ライフラリーでは、パソコン用プリンターで / ヾーコードを印刷するための関数を提 対応プリンタ・ ・ P 日 201 系 ¥ 19 月発売 対応プリンタ ・ P 日 2 田系 ソ—スーラリー 3 月末発売予定¥ 14 本ライプラリーでは画面表示、キーホード入力サポート関数を提供します。 本ライフラリーでは、市販工テイターを使用して作成したフォーマットファイルを使用 し、画面を表示し、入力を行います。従って、プログラム作成後でも、画面のレイアウ ト、表示桁数、入力桁数、タイトル等を自由に変更できます。 提供する関数の主な機能は次のとおりです。 文字表示属性の指定 ( シークレット、プリンク、リバース、アンターライン、八一チィ サンプルプログラム・・・・簡易顧客管理プログラム ウインドーのサポート ( ウインドー数はメモリー容量に依存 ) 文字列の入力編集 ( アルファベット、カナ、漢字、数値 ) カルライン、色指定 ) 本ライプラリーでは一 SAM 形式のデータベース構築用関数を提供します。 B + t 「 ee 構造のテータベースなのでテータの高速検索か可能です。 提供する関数の主な機能は次のとおりです。 同時オープンファイル数は最大 10 ファイル 1 ファイルに設定可能なキー数は 45 キー 同時アクセス可能キーは川キー キーテータの最大長は 128B キー名称の最大長は 16B 最大レコード長は 32KB 次候補、前候補テータの呼び出し キータイプは文字及び数値 ( int 、 long 、 double) 最大レコード数は約 10 億件 サンプルプログラム・・・・簡易テータベース アイセル株式会社 〒 171 東京都豊島区池袋 2 丁目 53 番 8 号秋島ピル 5F TEL. 03 ( 9 ) 6973 ( 代表 )
種をチェックします ( Fig. 2 ) 。 ① ANK へ上書き そのまま , 格納します。 ②漢字第 1 バイトへ上書き 漢字第 2 バイトがゴミになりますが , 実際 には第 2 バイトも格納するのて、 , 何もしま せん。 ③漢字第 2 バイトへ上書き 漢字第 1 バイトがゴミになるのて、 , 第 1 バ イトを空白て、クリアします。 こて、①と③のパターンて、は , 第 さて , 2 バイトを格納するためのバッフアもチェッ クする必要があります。以上の処理をまと めると次の 3 パターンに分かれます (Fig. ① ANK へ上書き そのまま , 格納します。 ②漢字第 1 バイトへ上書き 漢字第 2 バイトがゴミになるのて、 , 第 2 バ イトを空白て、クリアします。 ③漢字第 2 バイトへ上書き 漢字第 1 バイトがゴミになりますが , 実際 には , すて、に第 1 バイトを格納しているの て、 , 何もせずに第 2 バイトを格納します。 上記のパターンをまとめると , 次のよう な処理になります。 ・上書きモードの格納準備 まず入力文字が漢字第 1 バイトの場合に は , カーソル位置の次の文字種をチェック します ( → nxtype) 。 nxtype は , 静的変数に しています。漢字第 1 バイトを処理するとき だけしか設定しないのて、注意します。第 2 バ イトを処理するときには , 第 1 バイトを処理 するときに得た値をそのまま利用します。 次に , カーソル位置の文字種を得ます ( → type) 。 そして上書きのためのバッフアのクリア を行います。それぞれに分けて考えます。 ①カーソル位置が漢字第 1 バイトのとき (type= =KANJII) カーソル位置の次の文字 ( 第 2 バイト目 ) を 空白て、クリアして , 表示する ( Fig. 4 ) 。 ②格納する文字が漢字第 2 バイトで , 104 CMAGAZINE 19 5 LiSt 5 0 1 ↓っ 0 っ 4 ・ -. 0 ^ 0 7 ー type=test_str(chr, curptr) : if(type==KANJ12) backward ( ) : insmode=l&(-insmode) : return; モード切替 * / DEL キー処理 delete 1 : delete 3 : delete() 4 : VO i d 6 : 7 : 9 : 12 : 20 : 22 : 23 : 24 : 26 : 28 : 29 : 30 : 32 : 33 : 34 : 35 : 36 : end: 38 : } 0 11 0 乙 / * 文字種 / * ANK / * 漢字第 1 バイト / * 漢字第 2 バイト int type : int j=endptr-curptr; if(get-strln(curptr, j)== の goto end : type=test-str (chr, curptr) : i f (type==KANJI 2 ) backward ( ) : i =maxptr-curptr : i f (type==ANK) for(j=0;j く i;j + + ) *(curptr 十 j)=*(curptr 十 j 十 1) : / * 入力データなし * / else { for(j=0;j く i;j + + ) * (curptr 十 j) = * (curptr 十 j 十 2) : / * blank clear *maxptr=BLANK : maxptr- *maxptr=B し ANK; if(maxptr>chr) maxptr-- : i 十十 : put_str(xposit, yposit:curptr, i) : csr-posit(xposit,yposit) : return; サンプルプログラム List 7 1 : #include く stdio. h> 2 : #include く dos. h> 3 : #include く string. h> 4 : 5 : #define ORG 6 : #define REV 7 : #define UNDER 8 : #define BLINK 9 : 10 : #define RED 11 : #define BLUE 12 : #define PURP し E 13 : #define GREEN 14 : #define YE しし OW 15 : #define SKY 16 : #define WHITE 18 : #define KHEADI 19 : #define KHEAD2 20 : #define KHEAD3 0 ー・ 0 叮ー 8 0 , 1 ワ】っ 0 8 0 ー -4 ・ 0 1 ↓ 1 よ 11 っ乙ワ 0 っ 0 ワ 0 頭終頭 先最先 界界界 境境境 イイ ' づ -1 よ 1 1 第第第 字字字 漢漢漢
五ロ 用 応 Fig. 4 = KAN 』 1 のとき type = Fig. 1 ANK を格納 カーソル位置 ↓ ANK カ - ソル位置 ↓ 2 漢字第 1 ノヾイトの場合 第い第 2 空白 ( クリア カ - ソル位置 xx 第 1 第 2 3 漢字第 2 ノヾイトの場合 空白てクリア ( 1 ) ANK の場合 カーソル位置 ↓ 第 1 第 2 空でクリア 空白 AN K → 第 1 空白 ここへ文字を格納する ↓ 空白 AN K ー→ Fig. 2 漢字第 1 バイトを格納 Fig. 5 ctype==KANJ12&&nxtype==KANJ11 のとき 設定した漢字第レヾイト カーソル位置 x x 第 1 第一第 2 カーソル位置 xx ANK ? ? カーソル位置 2 漢字第 1 バイトの場合 x x 第 1 , 第 2 ( 1 ) ANK の場合 第巳ノヾイト用工リアもチェック 空白てクリア 第 1 第 2 → 第 1 第 1 空白 x x ここへ第 2 バイトを格納する カーソル位置 3 漢字第 2 バイトの場合 第 1 第 2 ? ? 空白でクリア x x 空白 第 1 ? ? → 第 2 ノヾイト用のエリアもチェック Fig. 3 漢字第 2 ノヾイトを格納 Fig. 6 tYPe==KNAJ12&&ctype!=KANJ12 のとき カーソル位置 第 1 第 2 空てクリア 第 2 ノヾイト用工リア 第 1 ANK ( 1 ) ANK の場合 第 1 第 2 第 2 バイト用工リア 2 漢字第 1 バイトの場合 第 1 第 1 第 2 空白 第 1 第 2 空白 ここへ第 1 バイトまたは ANK を格納する ただし . カーソルの前の文字が格納した第 1 バイトの場合を除く 設定した漢字第 1 ノヾイト カーソル位置 xx 第 1 第 2 ここへ第 2 バイトを格納する 空白でクリア 第 2 バイト用工リア 3 漢字第 2 バイトの場合 第 1 第 2 第 1 第 2 103 応用 C 言語
五ロ 用 応 TbI.2 get key st ″ヾラメータ 変数タイプおよび変数名 int 画面上の入力域の先頭 X 座標 int 画面上の入力域の Y 座標 Char *buffar 文字列テータを返すためのポインタ int 入力可能最大文字数 ( バイト単位 ) max int mode 入力 / 訂正モード入力 = 0 / 訂正 = 1 TbI.3 char set 用変数 静的変数 変数タイプおよび変数名 int type int nxtype 続くメモリ領域を破壊してしまいます。ま た , 2 バイトコードの文字を消去するときに 2 バイト目を消すような場合には , いっしょ に 1 バイト目も処理しないと , ゴミが残って しまいます。 上書きモードて、の注意は , 格納用の関数 char set に任せています。 ・デ明性を求めるために get_key str て、は , 内部バッフアの関係 上 , 最大 60 バイトまて、しか入力て、きません。 汎用的に使うには , この制約を取る必要が あります ( もっとも 1 画面の横桁数を超える と , 横スクロールまたは n 行の制御という特 殊な処理が必要になります ) 。制約を取るた めには , 作業用のバッファ work [ n ] を呼び 出し側て、もっことと , 扱える最大文字数を 完全に引数 max て、制御するようにします。呼 び出し側て、バッフアをもっ場合 , 新たに引 数を設けるか , 現在の文字列引渡し用のポ インタ * buffer を使用するかのいずれかの 方法を用いることになります。 7 文字格納処理 —char set 関数ー 入力された文字は , すべて char set て、格 納します (List2)0 char set て、は , 1 バイト 単位て、文字を格納しています。つまり , 2 バ イトコードの場合には 2 回呼び出されるよう になっています。このため , 2 バイトコード の処理は難しくなっていますが , そのかわ りにバッフアへ格納する際のバッフアの動 きをつかむことがて、きます。 char set て、は TbI. 3 のような変数を使用 します。いずれもバッフアのカーソル位置 の文字とその次の文字の種類を記憶するた めの変数て、す。静的変数なのは , 2 バイトコ ードを 2 回に分けて処理しているからてす。 挿入モードと上書きモードては処理を分 けます。 ・挿入モードでの格備 挿入モードは , バッフアの文字列を後方 応用 C 言語 101 変数の内容 変数の内容 カーソル位置の文字種 0 = ANK / 1 = 漢字第 1 バイト / 2 漢字第 2 バイト カーソル位置の次の文字種 ( 意味は , type と同じ ) 1 文字格納処理 char_set 1 : char set 3 : 4 : char_set(unsigned char *ichr) V 0 i d 6 : / * 文字種 int type; 7 : / * ANK 8 : / * 漢字第 1 バイト 9 : / * 漢字第 2 バイト / * カーソル位置の次の文字種 * / 12 : 13 : 14 : 15 : 16 : 17 : 19 : 20 : 22 : 23 : 24 : 25 : 26 : 28 : 29 : 30 : 32 : 33 : 34 : 35 : 36 : 39 : 40 : 42 : 43 : 44 : 46 : 49 : 50 : 52 : 53 : 54 : 55 : List 2 static static int if(insmode==l) 挿入モード * / if(*(endptr-l) !=B し ANK) buzzer() : goto end; i=get_str ln (curptr, maxptr-curptr 十 1) : *(curptr 十 j 十 1) =*(curptr 十 j) : / * brank c lear *curptr=BLANK; if(maxptr く endptr-l) maxptr 十十 : i 十十 : put-str(xposit, yposit, curptr, i) : csr_posit(xposit, yposit) : int nxtype; e lse { if(ctype==KANJ11) nxtype=test-str(chr, curptr 十 I) : type=test-str(chr, curptr) : if((type==KANJI 1 ) Ⅱ (ctype==KANJ12&&nxtype==KANJI 1)) * (curptr + I)=B し ANK; / * 漢字第 2 バイト消去 * / put-chr(xposit + l,yposit, BLANK) : else if((type==KANJ12)&&(ctype!=KANJ12)) *(curptr-1)=B し ANK; / * 漢字第 1 バイト消去 * / put-chr(xposit-l, yposit, B し ANK) : *curptr=* ichr; if (ctype==KANJI 2 ) put-str(xposit-l. yposit, curptr-l csr-posit(xposit 十 l,yposit) : if(ctype==ANK) put-chr(xposit, yposit, *curptr) : if(curptr>maxptr) maxptr=curptr; if(curptr く endptr-l)
ッフアへのポインタ ( 変数 curptr ) を同時に 更新しなくてはなりません。 カーソルは , 文字を入力すると自動的に 1 桁ずっ進みますが , 必ず自分て、カーソル位 置を設定するようにしましよう。 ・入力モードと訂正モード get key str て、は , 入力と訂正を行える ようにしています ( 引数 mode) 。内部に作業 用に 80 バイト分のバッファ ( 配列 work ロ ) を抱えているのて、 , まず関数の頭て、配列を プランク ( 0X20 ) て、クリアします。入力時に はそのまま入力を開始しますが , 訂正時に は訂正用の文字列を配列 work へ転送します ( 訂正用の文字列は引数 * buffer にありま なお , 一律 80 バイトを転送しているのて、 , 呼び出し側のバッフアは最低て、も 80 バイト 確保しておきます。 ・挿入モードと上書きモード 初期値は , 挿入モードになっています。 この処理は , キーを押すことて、切 り換えます。挿入モードて、注意する点は , ふたつあります。 ①文字の格納時の処理 文字をバッフアに格納する際に , カーソ ル位置のバッフア内容を後方へずらしま す。詳細は , 格納用の関数 ( 曲 ar set) て、 説明します。 ②バッフアの余白のチェック カーソル位置から後ろの文字をずらすた めの余白がバッフアにあるか否かをチェ ックします。 仕様としては , 余白がなくても無視して , 後方の文字から消去してしまう方法もあり ます。しかし , 今回は最大入力文字数を設 定しているのて、 , バッファ末端の余白をチ ェックして , 余白がない場合にはエラーを 返すようにしています。 余白がないときに後方の文字を消去する よう改造する場合には , 転送文字数の確認 と 2 バイトコードの処理が必要て、す。転送文 字数をきちんと計算しないと , バッフアに 100 CMAGAZINE 19 5 List 1 / * 全角文字 * / ニ 1 ) & & ( * (endptr-2) ! = B し ANK ) ) / * 挿入余地なし * / / * 入力不可能 * / / * 漢字第 1 バイト格納 * / / * 漢字第 2 バイト格納 * / / * A N K 文字 * / / * 右矢印 * / / * 左矢印および B S * / / * リターン * / case KANJII : if((insmode buzzer ( ) : i f ( curptr buzzer() : 引 se { char_set(&inchr[0]) : ctype=KANJI 2 : char_set(&inchr[l]); break; case ANK: char-set(&inchr[0]) : break; case FWD: forward() : break : case BACK : backward() : break : case ESC : rc=l; case CR: rc=0; for(i=0;i く max;i + + ) *(buffer + i)=work[i] : case INS: insert() : break; case DE し : delete(); break : default: buzzer() : while( ctype!=CR & & ctype!=ESC ) : return (rc) : 8 0 1 よっ 0 っ 0 •< ・ -. 0 《 0 ー 8 0 11 ワ 0 っ 0 -4 ・ -. 0 《 0 ー 8 0 11 ワっ 0 -4 ・ - -0 ^ 0 7 ー 8 0 11 ワっ 0 -4 ・ - -0 ^ 0 -4 : 4 戸 0 戸 0 口 - -0 ′ 0 ) L.n LO ′ 0 ^ 0 《 0 C-O cD C-D C-D れ 0 0 ーーーーっーーーーーー 8 8 8 8 8 8 8 ニ endptr-l ) TbI. 1 get key st 「用変数 モジュール内共通変数 変数タイプおよび変数名 char *Chr Char * curptr Char * maxptr Char * endptr int maxcnt int lnsmode int Cty P e 変数の内容 文字列バッフアへのポインタ 現在のカーソル位置を示す文字列バッフアへのポインタ バッフア最後の文字へのポインタ 最大入力位置の次を示すポインタ ( ここには , 入力不可 ) 最大入力文字数 モードフラグ挿入 = 1 / 上書き = 0 入力文字 / 設定文字タイプ ANK = 0 / 漢字第 1 バイト = 1 / 漢字第 2 バイト = 2 現在のカーソル X 座標 現在のカーソル Y 座標 xposit yposit 変数および変数名 int int 内部変数 変数の内容 char WO 「 k [ 70 ] char inchr[2] 文字列用作業バッファ 入力文字用パッファ
マ多 最近目についた癶、れもの 拡張メニュー自動起動 作者 : 近藤嘉雪さん ( AS NET PCS : 「 H D PAT 」 PCS27081 ) ネット : ASCII NET PCS ほか 作者 : 内崛義信さん (ASCII PCS : ファイル名 : TCODE009. LZH PCS30850 , MSA- NET : MSA01895 , JUNET : uchibori@etl.junet) なんだかすごいて、す , これは / この ネット : ASCII NET PCS, MSA MET, 最初に紹介した、、 KANJI" 、、 TCODE" は , JUNET ほか とは対称的に , ただひたすら漢字入力のス ファイル名 : HDPAT. LZH ピードを上げるための漢字 FEP て、す。左右 20 鍵ずつのキーの左右順番の打鍵位置によ ずーっと不思議に思っていたけど , あえ って漢字を入力するものて、す。リズミカル オンライン漢字コード表などといってし て聞かなかったことってありますよね。聞 に左右の連打を続けられるのて、 , 習熟度に まうと , LUNATIC さんに怒られるかもし くのが恥ずかしいとか , 不思議だけどそー 比例して入力スヒ。ードが速くなります。 れません ( ソースて、は、、 Full screen kanji ゅーものだと思いこんて、いたことって。そ 実際 , 速く正確に漢字を入力するにはこ selecter") 。コード表には違いありません ういう「不思議」のひとつに MS-DOS 拡張メ の、、 TCODE" のような無連想式の漢字入力 が , 漢字や記号の選択・入力もて、きる便利 ニューの「自動起動」があります。「自動起動 がいちばんだと思います。原稿をワープロ なツールてす。この、、 KANJI" を使えば , に設定する」を選ぶと , 意味ありげに * マー 入力するとすれば , オペレータは目て、追う フルスクリーンから目的の「形」をした漢字 クがっくだけて、 , なーんにもしてくれない 原稿を体が覚えた反射として入力すること を拾えます ( 読みはそれて、もわからないが ) 。 ちっとも自動起ち上げしてくれないのて、 , がて、きるのて、す。 この小さな、、 KANJI クさえあれば ( 大きさは 不思議に思ってました 以上は、、 TCODE 〃のイントロダクション 約 8K バイト ) , もうあのワープロ漢字辞典は それはそれて、 , 今て、も不思議のままなの の受け売りと , 私の理解の範囲内て、の話て、 いらないて、しよう。 て、すが , この、、 HDPAT" さえあれば自動起 す。実際にヾ TCODE 〃て漢字を入力しよう 使い方は簡単て、 , 動に設定て、きます。、、 HDPAT" を起動し としても , そう簡単にはいきません。 A> KANJI とするとメモリに常駐します。十 て , パッチをあてると , MD-DOS は * マー まず , 打鍵位置による漢字コード表を覚 クのついたノヾーティションからシステムを ー + 囚て、呼び出すと , フルスクリー えなくてはなりません ( 体て、反応するまて、 ) 起動します。「これこそ , あのメニューに求 し , コード表にない文字の入力についても ンて、漢字コード表が出てきますから , そこ めていたことなのだ / 」と , この PDS を入手 考慮しなければなりません ( 私には無理て、し て、目的の漢字を探して入力します。フルス したときに思いました。使い方は簡単て、す。 よう ) 。 クリーンて見られるのて、 , 早☆◆など A > HDPAT ところて , 私が実際に見た中て、速かった をやたらに文書に使いたがる記号依存症の とすれば , パッチをあててくれます。自動 のは , 連想 2 ストローク入力をするキーパン 方にもよく効きます。 起動に設定するのは , パッチをあてる前て、 チャーとコード入力するキーパンチャーて、 このソフトはすべて TurboC て書かれてい も後て、もよく , 次回から * マークのついた した。これはもう目から入った文字を指先 ます。 TSR を C て、書いてみようという人には パーティションから起動します ( * マークが のキーに変換するパイププロセスみたいな よいお手本になるかも知れません。圧縮フ なければ自動起動しない ) 。パッチの解除も ものて , ディレイなんかないも同然て、す。 ァイルを解凍すると , *KANJI" の TurboC 簡単て、す。 あれより速くなるとすると , もはや最後 のソースと , テキスト VRAM アクセス関数 A>HDPAT —n は運動神経の勝負となってしまうような気 *TEXTVRAM. C" などが出てきます。 これて、パッチは解除されます。 がします。 れらを参考にすると , いろいろとおもしろ パッチ可能なシステムは MS ー DOS 以上 , なにも具体的な紹介がてきません いものを作ることがてきるような気がしま Ver. 3.1 , Ver. 3.3 となっています。私は てしたが , 、、 TCODE" についての詳しい解 す。 Ver. 3.3A と Ver. 3.3B にパッチして使用し 説や入力方法については , 付属のドキュメ T コード装置駆動機 てますが , 今のところ問題ありません。 ントを参照してください ( 私には手に負えま TCODE しかし , やつばり不思議だ ? せん ) 。 22 CMAGAZINE 19N 5 野口雄平 今回は , 最近目についたものを紹介しま す。みんな比較的新しいものばかりて、す。 常駐型オンライン漢字コード表 「 KANJI 」 作者 . LUNAT ℃さん ( 日経 MIX :lunatic, ASCII NET PCS : PCS33772 ) ネット : 日経 M Ⅸ , ASCII NET PCS ほか ファイル名 : KANJ1104. LZH