From 3e80e7d6f3a12b0afcaf37328ffae27d888767e1 Mon Sep 17 00:00:00 2001 From: "E. C. Masloch" Date: Tue, 14 Apr 2026 17:06:33 +0200 Subject: [PATCH 1/2] 21.6C: note bit 0 DH and AL allowed any values, suggest CF set --- .../INT 216C00 DOS 40 EXTENDED OPENCREATE.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/Interrupt List/INT 21 DOS Function Calls/INT 216C00 DOS 40 EXTENDED OPENCREATE.txt b/source/Interrupt List/INT 21 DOS Function Calls/INT 216C00 DOS 40 EXTENDED OPENCREATE.txt index e58eaeba0..8772cf57a 100644 --- a/source/Interrupt List/INT 21 DOS Function Calls/INT 216C00 DOS 40 EXTENDED OPENCREATE.txt +++ b/source/Interrupt List/INT 21 DOS Function Calls/INT 216C00 DOS 40 EXTENDED OPENCREATE.txt @@ -20,6 +20,7 @@ INT 21 - DOS 4.0+ - EXTENDED OPEN/CREATE DL = action if file exists/does not exist (see #01770) DH = 00h (reserved) DS:SI -> ASCIZ file name + CF should be set on entry for better compatibility Return: CF set on error AX = error code (see #01680 at AH=59h/BX=0000h) CF unchanged, AL = 00h as DOS v1 style error (AX = 6C00h) @@ -39,6 +40,9 @@ Notes: the PC LAN Program only supports existence actions (in DL) of 01h, DOS v1 style error sets AL = 00h (thus AX = 6C00h) but leaves CF unchanged so it is good practice to initialise CF set before the int 21h call + MS-DOS v4.01 and lDOS accept bit 0 in DH set, all other bits must be + zero or an error 0001h is generated + MS-DOS v4.01 and lDOS accept any value in AL BUG: this function has bugs (at least in DOS 5.0 and 6.2) when used with drives handled via the network redirector (INT 2F/AX=112Eh): - CX (attribute) is not passed to the redirector if DL=11h, @@ -72,4 +76,3 @@ Bit(s) Description (Table 01770) 0000 fail 0001 open 0010 replace/open - From 9f36a7bdf410a74a5fe9c0e499a07cb881636db9 Mon Sep 17 00:00:00 2001 From: "E. C. Masloch" Date: Tue, 14 Apr 2026 17:40:22 +0200 Subject: [PATCH 2/2] change references with name "EMM386(.EXE)" to "Microsoft EMM386" A reference like INT 21/AX=4402h"EMM386.EXE" would lead to INT 21 U - Novell DOS 7+ EMM386.EXE - GET STATE RECORD instead of the intended reference to INT 21 U - Microsoft EMM386.EXE v4.45 - GET MEMORY MANAGER INFORMATION --- .../INT 214402SF00 Memory Managers GET API ENTRY POINT.txt | 3 ++- ...2SF01 Memory Managers GET EMM IMPORT STRUCTURE ADDRESS.txt | 2 +- ... 214402SF02 Memory Managers GET MEMORY MANAGER VERSION.txt | 2 +- ...INT 67FFA5 Microsoft EMM386EXE v420 INSTALLATION CHECK.txt | 4 ++-- .../INT 67FFA5BX4345 Compaq CEMM v510 PRIVATE API.txt | 4 ++-- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/source/Interrupt List/INT 21 DOS Function Calls/INT 214402SF00 Memory Managers GET API ENTRY POINT.txt b/source/Interrupt List/INT 21 DOS Function Calls/INT 214402SF00 Memory Managers GET API ENTRY POINT.txt index decab88dc..53902e0bd 100644 --- a/source/Interrupt List/INT 21 DOS Function Calls/INT 214402SF00 Memory Managers GET API ENTRY POINT.txt +++ b/source/Interrupt List/INT 21 DOS Function Calls/INT 214402SF00 Memory Managers GET API ENTRY POINT.txt @@ -21,7 +21,8 @@ Notes: this function is supported by Microsoft EMM386.EXE v4.45+ and "COMPAQ EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67 handler's segment; if present, the word at offset 12h contains the offset of the API entry point -SeeAlso: AX=4402h/SF=01h,AX=4402h/SF=02h,AX=4402h"EMM386",INT 67/AH=3Fh +SeeAlso: AX=4402h/SF=01h,AX=4402h/SF=02h,AX=4402h"Microsoft EMM386" +SeeAlso: INT 67/AH=3Fh Format of memory manager API entry point record: Offset Size Description (Table 01512) diff --git a/source/Interrupt List/INT 21 DOS Function Calls/INT 214402SF01 Memory Managers GET EMM IMPORT STRUCTURE ADDRESS.txt b/source/Interrupt List/INT 21 DOS Function Calls/INT 214402SF01 Memory Managers GET EMM IMPORT STRUCTURE ADDRESS.txt index e640fec5e..eff5abd3c 100644 --- a/source/Interrupt List/INT 21 DOS Function Calls/INT 214402SF01 Memory Managers GET EMM IMPORT STRUCTURE ADDRESS.txt +++ b/source/Interrupt List/INT 21 DOS Function Calls/INT 214402SF01 Memory Managers GET EMM IMPORT STRUCTURE ADDRESS.txt @@ -19,7 +19,7 @@ Notes: this function is supported by Microsoft EMM386.EXE v4.45+, as it starts up for QEMM-386, this call always returns an error if Windows3 support has been disabled with the NW3 switch -SeeAlso: AX=4402h/SF=00h,AX=4402h"EMM386",INT 2F/AX=D201h/BX=5145h +SeeAlso: AX=4402h/SF=00h,AX=4402h"Microsoft EMM386",INT 2F/AX=D201h/BX=5145h SeeAlso: INT 67/AH=3Fh Format of EMM import structure record: diff --git a/source/Interrupt List/INT 21 DOS Function Calls/INT 214402SF02 Memory Managers GET MEMORY MANAGER VERSION.txt b/source/Interrupt List/INT 21 DOS Function Calls/INT 214402SF02 Memory Managers GET MEMORY MANAGER VERSION.txt index 299fb97e9..203d60231 100644 --- a/source/Interrupt List/INT 21 DOS Function Calls/INT 214402SF02 Memory Managers GET MEMORY MANAGER VERSION.txt +++ b/source/Interrupt List/INT 21 DOS Function Calls/INT 214402SF02 Memory Managers GET MEMORY MANAGER VERSION.txt @@ -16,7 +16,7 @@ Return: CF clear if successful AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h) Note: this function is supported by Microsoft EMM386.EXE v4.45+ and CEMM v5.10+, and is intended for use by MS Windows as it starts up -SeeAlso: AX=4402h/SF=00h,AX=4402h"EMM386",INT 67/AH=3Fh +SeeAlso: AX=4402h/SF=00h,AX=4402h"Microsoft EMM386",INT 67/AH=3Fh Format of memory manager version: Offset Size Description (Table 01520) diff --git a/source/Interrupt List/INT 67 reserved for user interrupt LIM EMS multiple purposes/INT 67FFA5 Microsoft EMM386EXE v420 INSTALLATION CHECK.txt b/source/Interrupt List/INT 67 reserved for user interrupt LIM EMS multiple purposes/INT 67FFA5 Microsoft EMM386EXE v420 INSTALLATION CHECK.txt index 71b5d7f74..daa8e26a8 100644 --- a/source/Interrupt List/INT 67 reserved for user interrupt LIM EMS multiple purposes/INT 67FFA5 Microsoft EMM386EXE v420 INSTALLATION CHECK.txt +++ b/source/Interrupt List/INT 67 reserved for user interrupt LIM EMS multiple purposes/INT 67FFA5 Microsoft EMM386EXE v420 INSTALLATION CHECK.txt @@ -15,7 +15,7 @@ Notes: this call is available even if EMM386 is not providing EMS "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67 handler's segment; the word immediately preceding this string contains the offset of the API entry point -SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE" +SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"Microsoft EMM386" (Table 03666) Call EMM386.EXE API entry point with: @@ -41,4 +41,4 @@ Call EMM386.EXE API entry point with: AH = 05h print available report (the one shown when running EMM386 from the DOS prompt) SeeAlso: #01513 at INT 21/AX=4402h/SF=02h,#02617 at INT 2F/AX=12FFh/BX=0106h - + diff --git a/source/Interrupt List/INT 67 reserved for user interrupt LIM EMS multiple purposes/INT 67FFA5BX4345 Compaq CEMM v510 PRIVATE API.txt b/source/Interrupt List/INT 67 reserved for user interrupt LIM EMS multiple purposes/INT 67FFA5BX4345 Compaq CEMM v510 PRIVATE API.txt index 793bb1470..c9796fd97 100644 --- a/source/Interrupt List/INT 67 reserved for user interrupt LIM EMS multiple purposes/INT 67FFA5BX4345 Compaq CEMM v510 PRIVATE API.txt +++ b/source/Interrupt List/INT 67 reserved for user interrupt LIM EMS multiple purposes/INT 67FFA5BX4345 Compaq CEMM v510 PRIVATE API.txt @@ -20,6 +20,6 @@ INT 67 U - Compaq CEMM v5.10+ - PRIVATE API Return: AH = 84h AL = status (84h = error, FFh = success) Note: if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to - Microsoft's EMM386 (see AX=FFA5h"EMM386") -SeeAlso: AX=FFA5h"EMM386",#01513 at INT 21/AX=4402h/SF=02h,#03666 + Microsoft's EMM386 (see AX=FFA5h"Microsoft EMM386") +SeeAlso: AX=FFA5h"Microsoft EMM386",#01513 at INT 21/AX=4402h/SF=02h,#03666