no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | en:docs:dos:api:int21:33:06 [2020/12/09 06:34] (current) – created prokushev | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | {{page> | ||
+ | |||
+ | ====== Int 21H, AH=33H, AL=06H ====== | ||
+ | |||
+ | ===== Version ===== | ||
+ | |||
+ | 5.0 and higher | ||
+ | |||
+ | ===== Brief ===== | ||
+ | |||
+ | GET TRUE VERSION NUMBER | ||
+ | |||
+ | ===== Family API ===== | ||
+ | |||
+ | |||
+ | ===== Input ===== | ||
+ | |||
+ | AX = 3306h | ||
+ | |||
+ | ===== Return ===== | ||
+ | |||
+ | BL = major version | ||
+ | BH = minor version | ||
+ | DL = revision (bits 2-0, all others 0) | ||
+ | DH = version flags | ||
+ | bit 3: DOS is in ROM | ||
+ | bit 4: DOS is in HMA | ||
+ | AL = FFh if true DOS version < 5.0 | ||
+ | |||
+ | ===== Macro ===== | ||
+ | |||
+ | |||
+ | ===== Notes ===== | ||
+ | |||
+ | this function always returns the true version number, unlike AH=30h, | ||
+ | whose return value may be changed with SETVER | ||
+ | because of the conflict from the CBIS redirector (see next | ||
+ | entry), programs should check whether BH is less than 100 (64h) | ||
+ | and BL is at least 5 before accepting the returned BX as the true | ||
+ | version number; however, even this is not entirely reliable when | ||
+ | that redirector is loaded | ||
+ | Under MS-DOS/PC DOS, DR DOS, PTS-DOS, S/DOS this function does not | ||
+ | use any of the DOS internal stacks and thus is fully reentrant | ||
+ | OS/2 v2.1 will return BX=0A14h (version 20.10) | ||
+ | Windows 95 and Windows 95 SP1 return version 7.00; Windows 95 OSR2 | ||
+ | and OPK3 (OSR2.5) return version MS 7.10. | ||
+ | the Windows NT DOS box returns BX=3205h (version 5.50) | ||
+ | Novell DOS 7 returns IBM v6.00, which some software displays as | ||
+ | IBM DOS v6.10 (because of the version mismatch in true IBM DOS | ||
+ | mentioned for INT 21/AH=30h); versions through Update 15 all | ||
+ | return revision code 00h | ||
+ | Windows95 and Windows95 SP1 return version 7.00; Windows95 OSR2 returns | ||
+ | version 7.10 | ||
+ | Heiko Goeman' | ||
+ | revision 0. | ||
+ | Novell DOS 7, OpenDOS 7.01, DR-OpenDOS 7.02, DR-DOS 7.02, DR-DOS 7.03 | ||
+ | all return IBM 6.00, which some software displays as IBM DOS 6.10 | ||
+ | (because of the version mismatch in true IBM DOS mentioned for | ||
+ | INT 21/AH=30h); versions through Novell DOS 7 Update 15.2 (01/1996) | ||
+ | all return revision code 00h. The DOS revision is stored in bits 7-0 | ||
+ | of the " | ||
+ | IBMDOS.COM file (see also INT 21/AX=4452h !!!). The version | ||
+ | flags (DH) are stored in bits 15-8 of " | ||
+ | at runtime to reflect the actual status. " | ||
+ | reported as DX in INT 21/ | ||
+ | Unlike MS-DOS, under Novell DOS 7+ IBMDOS.COM will also allow to | ||
+ | SETVER the returned " | ||
+ | and INT 21/ | ||
+ | DR-DOS 7.02+ IBMDOS.COM (since 1998-01-10) now recognizes optional | ||
+ | paths to filenames stored in the SETVER list. Previously such | ||
+ | entries were never found. This enables a three staged model of | ||
+ | SETVERed versions: | ||
+ | highest priority = entry with path is matching. | ||
+ | middle priority = entry without path is matching. | ||
+ | lowest priority = use global version (SETVER /G). | ||
+ | The DR-DOS 7.02+ SETVER 1.01+ (1998-01-12) has also been enhanced to | ||
+ | allow BDOS and DOS version faking (see INT 21/ | ||
+ | a set sub-version of y = 128..255 will be reported as 0..127 DOS | ||
+ | sub-version, | ||
+ | value as BDOS version (64h..7Fh) with INT 21/AX=4452h instead while | ||
+ | bits 6-0 of the DOS revision stored in PCM_HEADER in the IBMDOS.COM | ||
+ | file will be used to report the BH DOS sub-version 0..127 (usually | ||
+ | this holds 0, but it can be patched to other values). | ||
+ | DR-DOS SHARE 2.05 (1998-01-05) has relaxed version checking now, and | ||
+ | will install on any DOS revision 0..127 (formerly it was bound to | ||
+ | DOS revision 0 only), as long as run on a DR-DOS 72h or 73h BDOS | ||
+ | kernel. | ||
+ | without changing the BDOS version, DR-DOS SHARE 2.05 can still be | ||
+ | stopped from installing by changing the DOS revision in PCM_HEADER | ||
+ | to something in the range 128..255. | ||
+ | Under Novell DOS 7+, the version SETVERing also affects the version | ||
+ | number WORD stored at offset +40h in each program' | ||
+ | Table xxxx at INT 21/AH=26h). This holds true even for special | ||
+ | sub-versions of 100..255 (see INT 21/ | ||
+ | S/DOS 1.0 (1995) returns a DOS revision of 9, while its own PTS OEM | ||
+ | revision still defaults to 0 (see also INT 21/ | ||
+ | BUG: DR DOS 5.0 and 6.0 return CF set/ | ||
+ | subfunctions other than 00h-02h and 05h, while MS-DOS returns AL=FFh | ||
+ | for invalid subfunctions | ||
+ | |||
+ | ===== See also ===== | ||
+ | |||
+ | AH=30h,INT 2F/ | ||
+ | |||
+ | ===== Note ===== | ||
+ | |||
+ | Text based on [[http:// | ||
+ | |||
+ | {{page> | ||
+ | |||
+ | {{page> | ||
+ | |||