From bc2223a77d5dca698afa185435570432857f5b4a Mon Sep 17 00:00:00 2001 From: "E. C. Masloch" Date: Tue, 19 May 2026 22:20:53 +0200 Subject: [PATCH 1/2] 21.4301: list attribute bit 6 as character device --- .../INT 214301 DOS 2 CHMOD SET FILE ATTRIBUTES.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/Interrupt List/INT 21 DOS Function Calls/INT 214301 DOS 2 CHMOD SET FILE ATTRIBUTES.txt b/source/Interrupt List/INT 21 DOS Function Calls/INT 214301 DOS 2 CHMOD SET FILE ATTRIBUTES.txt index 88bf7c43c..2aef49373 100644 --- a/source/Interrupt List/INT 21 DOS Function Calls/INT 214301 DOS 2 CHMOD SET FILE ATTRIBUTES.txt +++ b/source/Interrupt List/INT 21 DOS Function Calls/INT 214301 DOS 2 CHMOD SET FILE ATTRIBUTES.txt @@ -32,7 +32,7 @@ Bitfields for file attributes: Bit(s) Description (Table 01420) 7 shareable (Novell NetWare) 7 pending deleted files (Novell DOS, OpenDOS) - 6 unused + 6 unused (character device for AH=4Eh) 5 archive 4 directory 3 volume label @@ -40,4 +40,4 @@ Bit(s) Description (Table 01420) 2 system 1 hidden 0 read-only - + From dbeb3c28d8836bb3b4617bcff37fa790a6f5e66f Mon Sep 17 00:00:00 2001 From: "E. C. Masloch" Date: Tue, 19 May 2026 22:31:16 +0200 Subject: [PATCH 2/2] 21.4E: update character device size, v3/v4 label search bug --- ... 214E DOS 2 FINDFIRST FIND FIRST MATCHING FILE.txt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/source/Interrupt List/INT 21 DOS Function Calls/INT 214E DOS 2 FINDFIRST FIND FIRST MATCHING FILE.txt b/source/Interrupt List/INT 21 DOS Function Calls/INT 214E DOS 2 FINDFIRST FIND FIRST MATCHING FILE.txt index 3f13369d4..1e8d44b54 100644 --- a/source/Interrupt List/INT 21 DOS Function Calls/INT 214E DOS 2 FINDFIRST FIND FIRST MATCHING FILE.txt +++ b/source/Interrupt List/INT 21 DOS Function Calls/INT 214E DOS 2 FINDFIRST FIND FIRST MATCHING FILE.txt @@ -22,7 +22,8 @@ Notes: for search attributes other than 08h, all files with at MOST the this call also returns successfully if given the name of a character device without wildcards. DOS 2.x returns attribute 00h, size 0, and the current date and time. DOS 3.0+ returns attribute 40h and - the current date and time. + the current date and time. MS-DOS v4.01 and v5.00 (at least) return + the file size equal to the character device header's segment. immediately after an INT 2F/AX=B711h (APPEND return found name), the name at DS:DX will be overwritten; if AL = 00h on entry, the actual found pathname will be stored, otherwise, the actual found path @@ -38,6 +39,14 @@ BUGS: under DOS 3.x and 4.x, the second and subsequent calls to this function directory search without the volume-label bit. Such implicit searches are performed by CREATE (AH=3Ch), OPEN (AH=3Dh), UNLINK (AH=41h), and RENAME (AH=56h) + the above bug is actually the fact that the *first* call with the label + attribute and a character device name will find the character device, + whereas it is intended that a label search should only ever match a + label. MS-DOS v5.00 fixes this case by internally setting the Attrib + variable to the value from SAttrib (Search Attribute), so that the + DEVNAME function is able to detect the fact that a label search is in + progress, causing it to not match any character device. lDOS picked + this patch to its source text as of 2026-05-19. DR DOS 3.41 and 5.0 return the Directory attribute for the volume label SeeAlso: AH=11h,AH=4Fh,AX=4301h,AX=714Eh,AX=71A1h,AX=F257h/SF=02h SeeAlso: INT 2F/AX=111Bh,INT 2F/AX=B711h