|目次|前ページ|次ページ|
─────────────────────────────────────
◆ 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
|目次|前ページ|次ページ|