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