In DOS 4.0x the version number returned by INT 21h function 30h is subject to an internal version "lie" table (the basis for SETVER) which returns fake version numbers for specific programs using a list embedded in IBMDOS.COM/MSDOS.SYS.
ある種のプログラムがDOS ver checkをする場合、やはり、MSDOS.SYS(カーネル)の 中を覗くものらしい。 ということは、vtdosがcommand.comのverを返すというのは、vtdosの特殊事情と 言えるのかもしれない。
In DOS 5.0 and later if AL=1 on entry to INT 21h function 30h then a version flag indicating whether DOS is in ROM (08h) or not (00h) is returned in BH instead of the OEM number.
実験したら面白い?
INT 21h function 3306h was added in DOS 5.0 which always returns the true DOS version. 「常に」「真の」? vtdosではどうなるか? 僕はvtdosの仕様みたいなのを あまり深くまで追うつもりはないのですが。
This function returns the major version in BL, the minor version in BH, the revision in DL, and the version flag in DH. Only PC DOS 5.00.1 and PC DOS 2000 return a non-zero revision. The version flag indicates whether DOS is in ROM (bit 3 set) or loaded in the HMA (bit 4 set).
from IBM PC BIOS information Versions of MASM later than 4.0 cannot be used to build the IBM BIOS source code since older constructs and macros are used.