[HOME]  [リストへもどる]
一括表示

  konnoさん版 拡張 *Funckey 出力 - おうら 07/09/03-18:43 No.2709
  ┗ Re: konnoさん版 拡張 *Funckey 出力 - konno 07/09/04-00:52 No.2714

(2709) 2709konnoさん版 拡張 *Funckey 出力  投稿者:おうら   2007/09/03(月) 18:43
   コメント数 1

今日は勢いよく書いてます。こんばんわ、おうらです。

さて、konnoさん版になってから *Funckey の拡張が行われました。
編集モード(s=0 SYS_EDIT)以外でもファンクションキーが出るようになったと
ドキュメント http://homepage3.nifty.com/tamaneko/VZK.TXT
にも書かれてます。
しかし、dosemu 上で実行したところ 編集モード以外(s!=0)ではファンクションキーの表示が行われませんでした。いろいろとトレースしていったところ keyibm.asm の checkfkey プロッシージャにおいて call checkfp → cmp cs:fp_on,0 → jz → ret となっていました。
keyibm.asm 521行目の fp_on 変数の定義をみると 0 で初期化。しかし、grep FEP_ vz.inc として出てくる値を見ると FEP_ON equ 0 で FEP_OFF equ 1,... となっています。どうやら 初期値から FEP が ON と誤判定していたようです。

試しに fp_on の初期値を FEP_OFF にしてみました。そうすると dosemu 上で FEP を組み込めない環境での Vz でも、一行入力モード(s=1 SYS_GETS),ファイラーモード(s=3 SYS_FILER), 一文字入力モード(s=4 SYS_GETC)でのファンクションキー出力は行われました。
fp_on 変数は FEP_OFF が初期値であって欲しいと思いました。

逆に言うと、DOSモード(s=2 SYS_DOS)ではファンクションキーの表示が行われません。トレースして行くと、DOSモード時には checkfkey が呼ばれてないことが判りました。dos.asm に grep してみると getdoskey, setdoskey は呼ばれています。一方で idle と名の付くサブルーチンはコールされてませんでした。なるほど keyibm.asm の idle5 で SYS_DOS の判定をしているのに、ここには通らない様子。罠です。
っと、今日はここまでで頭がいっぱい。トレースはここまでにすることにしました。

ということで、また何か見つけたら書き込もうと思います。
      - No.2709 -    このTreeへ           [リストへもどる] soft

(2709) 2714Re: konnoさん版 拡張 *Funckey 出力  投稿者:konno   2007/09/04(火) 00:52
    2709 番 おうら さんへのコメント

おうらさん、連続の解析ありがとうございます。

> fp_on 変数は FEP_OFF が初期値であって欲しいと思いました。

ちょっと忘れていましたが、これはFEPとの連携を試行錯誤していたときに
追加したものですね。副作用が多いなら無くした方が良いかもしれないですが、
とりあえず、初期値に 1 を入れてみますね。

> 逆に言うと、DOSモード(s=2 SYS_DOS)ではファンクションキーの表示が行われません。トレースして行くと、DOSモード時には checkfkey が呼ばれてないことが判りました。dos.asm に grep してみると getdoskey, setdoskey は呼ばれています。一方で idle と名の付くサブルーチンはコールされてませんでした。なるほど keyibm.asm の idle5 で SYS_DOS の判定をしているのに、ここには通らない様子。罠です。

う〜む、これって、DOSのキー入力ルーチンでしたっけ? ここは調べてみます。
別のところで呼ばれているような気がしますが。
コマンドラインでのFキー表示自体は出来ていたんですが、スクロール制御が
分からなかったので今まで無効にしていました。

      - No.2714 -    このTreeへ    コメント元:2709 へ [リストへもどる] soft