経験にてらしてみれば、別に特別なことではなかったですね。(※) vtdos環境で、dirしたら、どんな結果になる? そこでcommand.com (ver.6.20)は使われてませんね。 C:\WK\01>dir /? /X このオプションは MS-DOS 形式以外のファイル名に対する短い名前を 表示します。長い名前の前に短い名前を表示する点を除けば、 /N オプションと同じです。短い名前がない場合は、ブランクに なります。 C:\WK\01>dir /X 2023/01/28 17:57 0 012345~1.TXT 0123456789.txt ほら、ちゃんとLFNも両方出てる。cmd.exeですよ。で、なんのための command.comか? DOSアプリはcmd.exeをコマンドインタプリタとしては 動けません。 そして、command.comの内部コマンドはcmd.exeに飛ばされる。 で、元々の話題のFコールは? ---------------------------------------------------------------------------- === Macrotmp by B ===; * M 50 ^^ "Macrotmp" ; dx="c:\wk\01\01234567.txt", ;SFN ↓ rename success ; di="c:\wk\01\0123456789.txt", ;LFN dx="c:\wk\01\0123456789.txt", ;LFN ↓ rename success di="c:\wk\01\0123456789000.txt", ;LFN ax=$5600, &i($21) ;Rename * というわけで、LFNファンクのあるものは、やっぱり飛ばされる。★ ------------------------------------------------- INT 21 - DOS 2+ - "RENAME" - RENAME FILE AH = 56h ------------------------------------------------- は、下へ飛ばされる。下は上を含みますからね。 ------------------------------------------------- INT 21 - Windows95 - LONG FILENAME - RENAME FILE AX = 7156h ------------------------------------------------- (※)経緯をおさらいすると、我々(konnoさんと僕)は、vtdosのDOS機能は DOS ver いくつか? とか、command.comのverを dos ver F_call が返すぞ、 とかやっていたものだから、>dir のいわば自然な振る舞い(cmd.exeのそれ)の ことを忘れてしまっていたのです。 どうでもいいことだけど、種明かしをすると、 #5293>dira0123456789.txt ; safe LFN はインチキだったのです。いえ、報告内容にはインチキはありません。 ただ、ここを書いたとき、>dir の結果を写してはいなかった。でも、こうなる のを知っていた。確かめてもいた。で、さっき眺めてて、あれ? dir も内部コマンド なんですけど? command.comがLFNとかレポートできちゃっていいわけ? と常識を 取り戻したという次第です。 というわけで、あったとしたら、新たな発見は、★の発見です。 追記:これも関連事項でした。そして、こういうことがすぐ連想でできないのが、 僕、文太です。 ren コマンドも同じ話です。vtdos環境で、ren がLFNを扱えるのなら、それは command.com の内部コマンドではないはずです。これも、cmd.exeに(と言っていい のか分からないけど。だって、その実態はFコールですから−−Fコールの実態とは 何かを追っかけてるのが、Undocumented DOS 2nd, see int 21h の正体 = DOS の「ヌード」みたいな実体。原書 p.266-, chap 6, "What is MS-DOS?"。Win32 system でも、我々が気にする部分は同じ。というか同じように作られてる)飛ばされる。 括弧の多い文章すいません。ふつう許されないと思います。難しい言葉でごまかすと 「意識の流れ」とか言います。
返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
- 以下のフォームから自分の投稿記事を修正・削除することができます -