最近の野ざらし言#6084 あたりの話題です。
DrvSpc2.def
拡張ファンクションコールint21_7303を利用した2GBを超えるドライブ情報取得
めざら資源>VZ Macro FAQ>コマンドラインに有りました。
https://mezala.la.coocan.jp/vz/faq/index.html#command
うちのDEFファイルを見たら、DSKSPC2.DEF というのがあって、あれぇ?
DrvSpc2.def
> 2000/12/18 0.10 int21_3600を利用したdskspc.def初版
> 2000/12/25 0.20 int21_7303を利用した2GB超のドライブ情報取得 dskspc2.def
> 2003/02/01 drvspc2.defに改称
dskspc2.defを改名したのがDrvSpc2.defだったのですね。
FGALDC13 07662 00/12/25 が初出だったようです。すっかり忘れていました。(^^;
DrvSpc2.defを起動して Cドライブを指定すると
[C:\] 全容量:243,195,812KB / 使用済:178,524,744KB / 未使用:64,671,068KB
こう表示されます。
VTDOSのVZファイラー ※ VTDOS.CFGで DISKFREE=K と指定して kbytes 単位で表示
1094 files 64,667,648 bytes free (kbytes 単位で表示)
DIR C: 66,222,354,432 バイトの空き領域
66,222,354,432 / 1024 = 64,670,268 kbytes 合っていますね。
他の DOSエミュでも見てみました。
MS-DOS Player FreeCOM v7.00
DrvSpc2.def
[C:\] 全容量:243,195,812KB / 使用済:178,551,176KB / 未使用:64,644,636KB
DIR C: 268,431,360 バイトの空き容量があります.
このDIRは DOSのFコールを使用しているようですね。
MS-DOS Player Win95 v7.00
DIR C: 268,431,360 バイトの空きがあります
MS-DOS Player Win98 v7.10 (OSR2?)
DIR C: 63,132.05 メガバイトの空きがあります.
MS-DOS Player WinME v8.00
DIR C: 63,129.92 MB の空きがあります.
こうしてみると Win95までは DOSのFコール、Win98から拡張Fコールに見えますね。
DOSVAXJ3
DrvSpc2.def
[C:\] 全容量:524,240KB / 使用済:268,240KB / 未使用:256,000KB
DIR C: 262,144,000 バイトが使用可能です
あれ? なんだか少ないですね。まるで DOSのFコールのような。
DSKSPC.DEF (DOSのFコール)
C: 536,821,760−274,677,760=262,144,000 [ax=32,bx=16000,cx=512,dx=32765]
これはやっぱり DOSのFコールのようですね。
df
Device kbytes used avail capacity mounted on
C: 243,195,812 178,551,700 64,644,112 73.41% C:\
げげ、DF だと kbytes で正しく表示されているようです。なんで違う?
ちなみに DFは MS-DOS Playerでも DOS Verに関係なく正しい表示のようです。
うーん、拡張Fコール自体は対応しているということでしょうか。
でもマクロでは DOS Ver依存のような? 謎です。
ハッ! DFはCMD.EXEで実行しているのか。なるほど。
DOSBOXX でも見てみました。
DIR 66,195,353,600 Bytes free
うーん、DOSVAXJ3の挙動は謎すぎるので明日 軟式さんに聞いてみようかしら。