|目次|前ページ|次ページ| ───────────────────────────────────── ◆ MS−DOSファンクリョンリクエスト ━━━━━━━━━━━━━━━━━━━━ ★★★リターン値でキャリーフラグが返されるものは、キャリーフラグオンで AX=0が返された場合はリターン値は255となります。 (1)リセットディスク(WINDOWS版では動作しません) ───────────────────────────────── <ESC>%113 sp F リターン値 = "0"<CR>(WINDOWS版でも値を返します。) 常に正常 ───────────────────────────────── (2)セレクトディスク(WIN32対応) ───────────────────────────────── <ESC>%114;drive sp F リターン値 = "論理ドライブの番号"<CR> drive : ドライブ番号(0:A,1:B,C:2,...) ───────────────────────────────── (3)カレントディスク(WIN32対応) ───────────────────────────────── <ESC>%125 sp F リターン値 = "現在選択されているドライブの番号"<CR> (0:A,1:B,C:2,...) ───────────────────────────────── (4)日付の取得 ───────────────────────────────── <ESC>%142 sp F リターン値 = "年:月:日:曜日"<CR> ───────────────────────────────── (5)日付のセット ───────────────────────────────── <ESC>%143;yyyy;mm;dd sp F リターン値 = "0"<CR> : 有効な日付 "255"<CR> : 無効な日付 ───────────────────────────────── (6)時刻の取得 ───────────────────────────────── <ESC>%144 sp F リターン値 = "時:分:秒"<CR> ───────────────────────────────── (7)時刻のセット ───────────────────────────────── <ESC>%145;hour;minute;second sp F リターン値 = "0"<CR> : 有効な時刻 "255"<CR> : 無効な時刻 ───────────────────────────────── (8)ベリファイフラグのセット/リセット (WINDOWS版では動作しません) ───────────────────────────────── <ESC>%146;flag sp F リターン値 = "0"<CR>(WINDOWS版でも値を返します。) flag : 0 ==> ベリファイを行わない flag : 1 ==> ベリファイを行う ───────────────────────────────────── 9−11 ───────────────────────────────────── (9)MS−DOSのバージョン番号を得る (WINDOWS版では整数部:小数部のみ正しく返します。) ───────────────────────────────── <ESC>%148 sp F リターン値 = "整数部:小数部:OEMのシリアル番号: 24bitのユーザ番号(シリアル)の上位ワード: 24bitのユーザ番号の下位ワード"<CR> ───────────────────────────────── (10)ディスクのフリースペースを得る(WIN32対応) ───────────────────────────────── <ESC>%154;drive sp F リターン値 = "使用可能なクラスタ数: 1ドライブ当たりのクラスタ数: 1セクタ当たりのバイト数: 1クラスタ当たりのセクタ数"<CR> drive : ドライブ番号(0:カレント,1:A,2:B,3:C,...) ───────────────────────────────── (11)ディレクトリの作成(WIN32対応) ───────────────────────────────── <ESC>%157;pathname sp F リターン値 = "0"<CR> : 正常 "3"<CR> : 無効なパス "5"<CR> : アクセスの否定 pathname : パス名 ───────────────────────────────── (12)ディレクトリの削除(WIN32対応) ───────────────────────────────── <ESC>%158;pathname sp F リターン値 = "0"<CR> : 正常 "3"<CR> : 無効なパス "5"<CR> : アクセスの否定 "16"<CR> : 現在のディレクトリ pathname : パス名 ───────────────────────────────── (13)カレントディレクトリの変更(WIN32対応) ───────────────────────────────── <ESC>%159;pathname sp F リターン値 = "0"<CR> : 正常 "3"<CR> : 無効なパス pathname : パス名 ───────────────────────────────── (14)ディレクトリエントリの削除(WIN32対応) ───────────────────────────────── <ESC>%165;pathname sp F リターン値 = "0"<CR> : 正常 "3"<CR> : 無効なパス "5"<CR> : アクセスの否定 pathname : パス名 ※※※長いファイル名の時 <esc>%%165;\Program Files<ctrl/A>F ver2.422a/ver3.522a以降で有効に動作します。 ───────────────────────────────── ───────────────────────────────────── 9−12 ───────────────────────────────────── (15)ファイル属性を得る ───────────────────────────────── <ESC>%167;pathname sp F リターン値 = "リターンステイタス:ファイル属性"<CR> リターンステイタス "0" : 正常 "3" : 無効なパス "5" : アクセスの否定 pathname : パス名 ───────────────────────────────── (16)ファイル属性をセット ───────────────────────────────── <ESC>%168;attribute;pathname sp F リターン値 = "リターンステイタス"<CR> リターンステイタス "0" : 正常 "3" : 無効なパス "5" : アクセスの否定 attribute : 属性 0 : 普通のファイル ......... : 1 : 読み出し専用 ......... : 2 : 隠しファイル ......... : 4 : システムファイル ......... : 8 : ボリュームID ......... : 16 : サブディレクトリ ......... : 32 : アーカイブ(保存)ファイル ボリュームラベル以外の全てを検索するには、38(16H)をセットします。 pathname : パス名 ───────────────────────────────── (17)カレントディレクトリを得る(WIN32対応) ───────────────────────────────── <ESC>%171;drive sp F リターン値 = "リターンステイタス:パス名"<CR> [例]0:SUBDIR の様に返されます。 リターンステイタス "0" : 正常 "15" : 無効なドライブ drive : ドライブ番号(0:デフォルト,1:A,2:B,3:C,...) ───────────────────────────────── (18)子プロセスからリターンコードを得る ───────────────────────────────── <ESC>%177 sp F(WINDOWSでは常に0をリターンします) リターン値 = "抜けだしコード"<CR> ───────────────────────────────── (19)最初に一致するファイル名の検索(WIN32対応) ───────────────────────────────── <ESC>%178;attribute;pathname sp F リターン値 = "リターンステイタス: ファイル属性: 時刻(hour):(minutes):(second): 日付(year):(month):(day): ファイルサイズ: 0: ファイル名"<CR> ※※[例1]<esc>%178;myfile*.txt sp F <- [27-may-99] ※※[例2]<esc>%178;myfile??.txt sp F <- [27-may-99] ※[仕様変更]ファイルサイズは32bitで表せる値に変更 %%%21-apr2001%%% ──────────────────────────────────── 9−13 ───────────────────────────────────── ───────────────────────────────── リターンステイタス "0" : 正常 "3" : ファイルがない [15-nov-2002] 2->3に訂正 "18" : これ以上ファイルがない "255" : 例外発生など 日付 : 1989 の様に西暦4桁で返します。 ───────────────────────────────── (20)つぎに一致するファイル名の検索(WIN32対応) ───────────────────────────────── <ESC>%179 sp F リターン値 = "リターンステイタス: ファイル属性: 時刻(hour):(minutes):(second): 日付(year):(month):(day): ファイルサイズ: 0: ファイル名"<CR> ※[仕様変更]ファイルサイズは32bitで表せる値に変更 %%%21-apr2001%%% ───────────────────────────────── リターンステイタス "0" : 正常 "18" : これ以上ファイルがない "255" : 例外発生など ───────────────────────────────── (21)ディレクトリエントリの変更前のパス名の指定(WIN32対応) ───────────────────────────────── <ESC>%185;pathname sp F リターン値 = "0"<CR> pathname : 変更前のパス名 ───────────────────────────────── (22)ディレクトリエントリの変更(WIN32対応) ───────────────────────────────── <ESC>%186;pathname sp F リターン値 = "リターンステイタス"<CR> リターンステイタス "0" : 正常 "3" : ファイルが存在しない [15-nov-2002] 2->3に訂正 "5" : アクセスの否定 "17" : 装置の不一致 pathname : 新規のパス名 ───────────────────────────────── ◆ MS−DOS環境変数取得(WIN32対応) ━━━━━━━━━━━━━━ <ESC>%88;name sp F リターン値 = 環境変数の内容の文字列<CR> <ESC>%88;PATH F とすれば、環境変数PATHの内容を取得 ───────────────────────────────── ◆ MS−DOSファンクリョンリクエストのリスポンスオプション ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ★★★ファイル転送およびRS232C拡張ポート、プリンター では意味を持ちません。 (1)直前のリスポンスを再送 ───────────────────────────────── <ESC>%98sp F リターン値 = 直前の"リターンステイタス"<CR> ───────────────────────────────── ───────────────────────────────────── 9−14 ───────────────────────────────────── (2)直前のリスポンスの文字長を送信 ───────────────────────────────── <ESC>%99sp F リターン値 = 直前の"リターンステイタス"の文字長<CR> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ◆ 日本語変換制御(dos/v,pc98版との互換) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <ESC>%220;func;param sp F リターン値 = "キャリーフラグ:リターンAX値"<CR> ────────────────────────────────── func(機能コード) ────────────────────────────────── 0(WINDOWS版で動作) 2バイト文字セットの状況モードを設定 param ビット7=0 非漢字モード =1 漢字モード ビット6=0 ローマ字オフ =1 ローマ字オン ビット5〜3 予約済み(0) ビット2,1=00 英数シフト =01 カタカナ・シフト =10 ひらがな・シフト※※記述変更※※ =11 予約済み ※※記述変更※※ ビット0=0 半角 =1 全角 <リターン1:2>キャリーフラグとリターンAX値は常に0 ─────────────────────────────────── 1(WINDOWS版で動作) 2バイト文字セットの状況モードを読み取り param は無し <リターン1>キャリーフラグは常に0 <リターン2>リターンAX値は読み取られた2バイト文字セットの状況 モード ─────────────────────────────────── 2 (WINDOWS版で動作)画面最下行のキーボードシフト状況の表示 ※※※ 2 では 変換が使用可能となる(dos/vのシステム窓が表示) 239(EFH) ※※※かな漢字変換をオープン※※※ param は無し 8[22-nov-97](ver3) dosv機において変換窓をグレー表示から有効にする <リターン1:2>キャリーフラグとリターンAX値は常に0 ─────────────────────────────────── 3 (WINDOWS版で動作)画面最下行のキーボードシフト状況の消去 ※※※ 3 では 変換が使用不能となる(dos/vのシステム窓が消去) 240(F0H) ※※※かな漢字変換をクローズ※※※ param は無し 9[22-nov-97](ver3)dosv機において変換窓をグレー表示にする(直接モード) <リターン1:2>キャリーフラグとリターンAX値は常に0 ─────────────────────────────────── 4 (WINDOWS版で動作)画面最下行のキーボードシフト状況の取得 param は無し ※※※追加仕様です。※※※ ※※※ 4 では 変換が使用可能/不能状態を取得 %%%04-jan-97%%% <リターン1>キャリーフラグは常に0 %%%04-jan-97%%% <リターン2>リターンAX値はシフト状況 0= 表示(使用可能) 1= 消去(使用不能) ─────────────────────────────────── ───────────────────────────────────── 9−15 ───────────────────────────────────── ──────────────────────────────── ※※※以下WINDOWS版では動作しませんので注意してください。 ──────────────────────────────── 17(11H) プリンターモード(WINDOWS版では無意味) [コール] AX=0 ドットスペースを行わないモード [コール] AX=1 ドットスペースを行うモード [コール] AX=32 偶数回目のCTRL+PでプリンタにCR/LFコードを ..... 出力しない [コール] AX=33 偶数回目のCTRL+PでプリンタにCR/LFコードを ..... 出力する 224(E0H) 日本語入力機能をアプリケーションプログラム への開放(WINDOWS版では無意味) [コール] AX=0 [リターン] AX=1 日本語入力機能を使用できます [リターン] AX=0 日本語入力機能を使用できません 225(E1H) アプリケーションプログラムからの使用禁止 (WINDOWS版では無意味) [コール] なし [リターン] キャリーフラグセット ...... AX=1 アプリケーションプログラムに開放されて ...... いません [リターン] キャリーフラグセットされていない 正常に終了しました ──────────────────────────────── 226(E2H) キーボードからの日本語入力機能の禁止・許可 (WINDOWS版では無意味) [コール] AX=0 許可 ..... AX=0以外 禁止 [リターン] キャリーフラグセット ...... AX=1 アプリケーションプログラムに開放されて ...... いません [リターン] キャリーフラグセットされていない ...... 正常に終了しました ──────────────────────────────── 227(E3H) 学習機能の有無(WINDOWS版では無意味) [コール] AX=0 学習機能の無 ..... AX=0以外 学習機能の有 [リターン] キャリーフラグセット ...... AX=1 アプリケーションプログラムに開放されて ...... いません [リターン] キャリーフラグセットされていない ...... 正常に終了しました ...... AX=0 設定前は学習機能無しでした ...... AX=1 設定前は学習機能有りでした ──────────────────────────────── ※239(EFH) 日本語入力モードに入る(Windows版で動作) [コール] なし [リターン] キャリーフラグセット ...... AX=1 アプリケーションプログラムに開放されて ...... いません ...... AX=13 キーボードからの日本語入力が禁止されています [リターン] キャリーフラグセットされていない ...... 正常に終了しました ──────────────────────────────── ───────────────────────────────────── 9−16 ───────────────────────────────────── ──────────────────────────────── ※240(F0H) 日本語入力モードから抜ける(Windows版で動作) [コール] なし [リターン] キャリーフラグセット ...... AX=1 アプリケーションプログラムに開放されて ...... いません [リターン] キャリーフラグセットされていない ...... 正常に終了しました ──────────────────────────────── ※241(F1H) 日本語入力モードのセット(Windows版で動作) [コール] AX=b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0 ..... b0 : 0 直接 1 間接 ..... b1 : 0 英数 1 カナ ..... b2 : 0 カタカナ 1 ひらがな ..... b4b3 : 00 全画 01 半画 10 1バイトコード ..... b5 : 0 1 JIS ..... b6 : 0 1 部首 ..... b7 : 0 逐次 1 連文 ..... b8 : 予約 ..... b9 - b15 : 未使用 [リターン] キャリーフラグセット ...... AX=1 アプリケーションプログラムに開放されて ...... いません [リターン] キャリーフラグセットされていない ...... 正常に終了しました ...... AX= 実際にセットされたモード ──────────────────────────────── ※242(F2H)日本語入力のモード取得(Windows版で動作) [コール] なし [リターン] キャリーフラグセット ...... AX=1 アプリケーションプログラムに開放されて ...... いません [リターン] キャリーフラグセットされていない ...... 正常に終了しました ...... AX= 現在のモード ...... b8 : 0 1 AI変換 ──────────────────────────────── 247(F7H) 逐次/連文節変換ドライバの有無取得 (WINDOWS版では無意味) [コール] AX=0 [リターン] キャリーフラグセット ...... AX=1 アプリケーションプログラムに開放されて ...... いません [リターン] キャリーフラグセットされていない ...... 正常に終了しました ...... AX=0 AI変換はインストールされていません ...... AX=1 AI変換が使用可能です param = 拡張機能呼び出し時のAX値 ──────────────────────────────── ◆ 日本語変換窓表示位置の設定 <ESC>%48;sw sp F sw = 0 :間接変換窓(変換窓とを重ねなければグラフィックスは保持される) sw = 1 :直接変換窓(グラフィックスが消える) リターン値 = 無し ───────────────────────────────────── 9−17 ───────────────────────────────────── ◇◇◇ファイル転送のプログラミングについて◇◇◇ ◆ BCCとCRCの計算式とメッセージシーケンス番号 ━━━━━━━━━━━━━━━━━━━━━━━━━ (1)BCCは各データバイトを加算して得られた符号無し1Wバイナリを 下位4ビットずつ4バイトの16進数アスキー表現に変換 (2)メッセージシーケンス番号は1から始まり可変長です。 メッセージ長も可変長です。 0の場合はチェックしません。0以外のとき直前の値+1でないと <NCK>を返します。 (3)CRC計算式(<CR>の前までを*buffに格納してある場合) ※<STX>から<EOT>まで両端を含む。 ※バイナリ変換後ではなく通信メッセージに対して計算する。 calc_crc(buff) char *buff; { unsigned int crc; int i,j,gx; crc = 0xffff; gx = 0xa001; while(*buff != 0) { i=(unsigned int) *buff++; crc =crc ^ i; for(j=0;j<8;j++) { if(crc & 1) { crc = crc >> 1; crc = crc ^ gx; } else crc = crc >> 1; } } for(j=0;j<4;j++) { i = crc & 0xf; i = i + 0x30; if(i>=0x3a) { i = i + 7; } } *buff = '¥0'; return; } } ───────────────────────────────────── 9−18 ───────────────────────────────────── ◆バイナリファイル転送プロトコルについて ━━━━━━━━━━━━━━━━━━━━ (1)※[1メッセージ単位]のアップロードの時フォーマット ★CRCモード <STX><メッセージシーケンス番号><LF> <16進表現アスキー文字列>※<EOT><CRC4バイト><CR> ※ファイルの終端では<control/z>が含まれます。 (アップロードの時のみ) ※メッセージシーケンス番号は1からカウントアップ 10進表現アスキー文字列 ※CRCは16進表現アスキー4文字 ★BCCモード <STX><メッセージシーケンス番号><LF> <16進表現アスキー文字列>※<EOT><BCC4バイト><CR> ※BCCは16進表現アスキー4文字 ★メッセード長モード <STX><メッセージシーケンス番号><LF> <16進表現アスキー文字列>※<EOT><メッセージ長><CR> ※メッセージ長は<STX>から<EOT>まで ★ノーオプション <STX><メッセージシーケンス番号><LF> <16進表現アスキー文字列>※<EOT><CR> ★CRC&メッセード長モード <STX><メッセージシーケンス番号><LF> <16進表現アスキー文字列>※<EOT><CRC4バイト><CR> <メッセード長><CR> (2)※[1メッセージ単位]のダウンロードの時フォーマット ★CRC付きのモード <STX><メッセージシーケンス番号><LF> <16進表現アスキー文字列><EOT><CRC4バイト><CR> ★ノーオプションモード <STX><メッセージシーケンス番号><LF> <16進表現アスキー文字列><EOT><CR> ※16進表現アスキー文字列はバイナリ変換後で256文字以内 (3)タイマー値の設定 ──────────────────────────────── <ESC>%30 ; timervalue sp F ──────────────────────────────── ※タイマー値は、デフォルト10秒 ※3秒から192秒まで指定可能 ※ファイル転送モードに移る前に設定してください。 ※CRCを受け取るまでとメッセージシーケンス番号0のfilename レコードを受け取るまでのタイマー値となります。 (4)[1メッセージ単位]の終了に<ETX>を付加するオプション 複数の情報を取得する場合に便利です。 例えば、CRC,メッセージ長の両方をリスポンスとして欲しい場合 <ETX>または<SOH>でメッセージの終了の判定が出来ます。 ───────────────────────────────────── 9−19 ───────────────────────────────────── ──────────────────────────────── <ESC>%40 ; 0 sp F [<ETX>を付加しない] <ESC>%40 ; 1 sp F [<ETX>を付加する] <ESC>%40 ; 2 sp F [<SOH>を付加する] ──────────────────────────────── ※デフォルトは<ETX>を付加しないモード (5)アップロードの時代表的なファイル転送プロトコル(CRCモードの時) ─────────────────────────────────── ホスト側 PC側 ─────────────────────────────────── @→→→→→→ <ESC>%31;4;filename sp F ←←←←←←←A <STX><0><LF><filename><CRC><CR>※※ ※メッセージシーケンス番号は0 ※filenameが日本語の場合は シフトインシフトアウトが含まれる場合が あります。(シフトJIS以外) EUCコードの時で1バイトのカタカナ のとき<SS2>が含まれます。 B→→→→→→ <※ACK/NCK/CAN> ※NCKの時は上記メッセージの再送 ※CANはキャンセル ※設定タイマー値以内に<ACK>又は <NCK>を受信できないとタイムアウト で端末エミュレータモードに戻ります。 ←←←←←←←C <0><CR>※※ ※正常時 <1><CR>※※ ※エラー時 ※実際にファイルオープンを試みた結果。 ※このメッセージは再送しない。 ※エラー時端末エミュレータモードに戻ります D→→→→→→ <L><1メッセージ単位のバイナリ変換時のバイト長><CR> ※デフォルト80バイト(この値を大きく指定すれば1回で終了) 1から65535まで指定できます。 ※その都度指定が可能です。省略すれは直前の値が使用されます。 ※ただし、ホスト側の受信フロー制御(端末側の送信フロー制御)が必要です。 <A><次に読み込むバイトアドレス><CR> ※直接次に読み込むバイトアドレスが指定できます。指定しなければ順次 アクセスとなります。 E→→→→→→ <※ACK/NCK> ※次のレコード要求が再送要求(繰り返す) ←←←←←←←F ※[1メッセージ単位]※※ ※メッセージシーケンス番号は1からカウントアップ G→→→→→→ <ESC>%4 sp F ※クローズ終了 ←←←←←←←H <0><CR>※※ ※正常時 ※このメッセージは再送しない。 ─────────────────────────────────── ※※印は<ETX>オプション時<ETX>が含まれる。 ───────────────────────────────────── 9−20 |目次|前ページ|次ページ|