DR DOS 9.0 Change Log --- 9.0 rev 921 - 2026-07-11 --- * Add SET as a COMMAND.COM built-in (display, assign, and remove variables; batch assignments propagate to the master environment) * Add ANSI.SYS loadable driver for ANSI/VT100 escape sequences (cursor movement, positioning, erase, and SGR colors) on CON * Add CONFIG.SYS directives INSTALL=, NUMLOCK=, COUNTRY=, SWITCHES=, and REM comment lines * Add CONFIG.SYS DOS=[HIGH|LOW][,UMB|,NOUMB] to link the upper-memory-block chain for AH=48h allocation * Add multiple-partition mounting so primary partitions and logical drives in extended partitions receive drive letters * Add /? and /H help screens to CLS, DATE, DIR, TYPE, MORE, MEM, MOVE, EDIT, FORMAT, FDISK, REBOOT, MOUSE, and other utilities * Add INT 25h/26h Absolute Disk Read/Write (legacy and DOS 4.0+ packet forms) * Add INT 15h AH=87h Move Extended Memory Block * Add INT 21h AX=5D0Ah Set Extended Error Information * Add INT 21h AH=58h AL=02h/03h Get/Set UMB Link State * Add real AUX (COM1) and PRN (LPT1) character I/O via BIOS INT 14h/INT 17h * Add EMM386 upper-memory-block provider for DOS=UMB * Add EMS 4.0 functions: Reallocate Pages (51h), Alter Page Map and Jump/Call (55h/56h), Move/Exchange Region (57h), Mappable Physical Address Array (58h), Get Hardware Configuration (59h) * Add VCPI DE08h/DE09h debug register access and DE0Bh PIC vector mapping * Improve the master environment to default 256 bytes with SHELL= /E:nnn sizing so SET has room to grow * Improve sequential file writes to O(1) via cached cluster position instead of restarting the FAT walk * Improve XMS driver to report revision 2.60 so Windows 3.0 WIN /S no longer rejects HIMEM * Improve MEM summary and /B block tables with dynamic column widths and correct device-driver area sizing * Fix COPY corrupting a file when the source and destination resolve to the same file * Fix the shell loader truncating COMMAND.COM (or a replacement shell) larger than 8KB * Fix EDIT corrupting text when moving the cursor left * Fix FORMAT to refuse the boot drive and current drive and to return proper errorlevels * Fix AH=31h TSR closing file handles and freeing the environment and extra memory blocks * Fix AH=3Dh Open succeeding on directories and returning wrong metadata beyond the first directory cluster * Fix AH=57h Get/Set File Date/Time on large-cluster volumes * Fix AH=2Bh Set Date to validate the year, month, and day and reject invalid dates * Fix FCB rename (AH=17h) accepting an existing target name * Fix FCB create (AH=16h) failing when a subdirectory's cluster chain is full * Fix non-DOS floppy media poisoning the DPB by validating the BPB before mounting * Fix the FAT16 allocator producing phantom clusters beyond the volume maximum * Fix XMS Move (AH=0Bh) for transfers larger than 64KB * Fix EMM386 hanging on a double load * Fix EMM386 faulting on LGDT/LIDT/LMSW in V86 mode so drivers loaded after it work, and reflect V86 page faults to the guest * Fix INT 2Fh AX=1605h advertising WINA20.386, which caused Windows enhanced-mode corruption * Match INT 2Fh, XMS, INT 21h AH=33h, IF EXIST, and explicit-extension command behavior to the DR DOS 6.0 / HIMEM 2.60 baseline * Route CON output through INT 29h and dispatch INT 28h while idle so ANSI.SYS and TSRs can hook 9.0 rev 792 - 2026-06-27 --- * Add FDISK utility for interactive and non-interactive hard disk partitioning * Add FORMAT utility with quick format (/Q), volume labeling (/V), and system file transfer (/S) * Add INSTALL.BAT installer for floppy-to-hard-disk setup * Add floppy disk boot support with FAT12 bootloader * Add CONFIG.SYS directives: FILES, SHELL, LASTDRIVE, and BREAK (BUFFERS, STACKS, FCBS parsed but reserved) * Add directory rename and move support to INT 21h AH=56h * Add volume serial number display in DIR output and generation in FORMAT * Add build-time localization system with English and German language support * Add per-language release artifacts (HDD and floppy images per language) * Add AH=29h Parse Filename AL flag bits 0-3 * Improve EMS pool sizing to scale with available extended memory (up to 1024 pages) * Improve AH=58h to accept UMB allocation strategy values 0x40-0x82 * Improve MCB name field population for MEM /C program name display * Fix floppy DMA boundary handling for unaligned buffers and add write-path DMA checking * Fix multi-sector floppy I/O to split at track boundaries and guard CHS sector count overflow * Fix FAT chain walker to guard cluster range and treat free/bad markers as end-of-chain * Fix AH=3Fh to return partial read count on corrupt FAT12 chain * Fix EXEC to reject corrupt FAT markers mid-chain and propagate disk read errors * Fix CON device read to use line-buffered cooked input instead of single raw byte * Fix IOCTL AH=44h/00h to return device information from SFT instead of hardcoded table * Fix write-handle reentrancy corruption under nested DOS calls * Fix boot drive detection and environment variable drive letter initialization 9.0 rev 741 - 2026-06-13 --- * Add INT 2Fh AX=1605h enhanced-mode startup broadcast handshake for Windows 3.0 * Add EMS 4.0 handle names (AH=53h), handle directory (AH=54h), partial page map (AH=4Fh), and standard/raw page allocation (AH=5Ah) * Add EMS handle 0 (OS system handle) for EMS 4.0 compliance * Add dot and dotdot resolution in AH=60h Truename canonicalization * Add dedicated disk I/O stack for programs with small caller stacks * Improve VCPI page allocator with bitmap tracking and page recycling * Improve EMS allocation atomicity with two-pass validation and rollback * Fix EMMXXXX0 device appearing without EMM386.SYS loaded * Fix XMS entry point returning HMA address unreachable with A20 off * Fix XMS AH=04h/06h A20 disable not returning spec-compliant status * Fix MEM /A hang when walking device driver chain * Fix FCB create and delete not properly freeing file cluster chains * Fix FAT chain operations accepting reserved clusters 0 and 1 * Fix DPB FREE_SEARCH returning invalid cluster hint below 2 * Fix DUP/FORCEDUP accepting SFT facade indices * Fix EMM386 DE0Ch mode-switch loading descriptor tables after CR3 switch * Fix EMM386 arena unprotected from DOS memory allocations * Fix DEVICE= loader accepting driver break address below header minimum 9.0 rev 717 - 2026-05-30 --- * Add Ctrl-C detection in character I/O functions and INT 23h handler invocation; COMMAND.COM echoes ^C and aborts on Ctrl-C * Add extended break checking (BREAK=ON via AH=33h): Ctrl-C checked on all INT 21h calls, not just character I/O * Add date/time timestamp columns to DIR command output (MM-DD-YY H:MMa/p) * Add standard INT 22h program termination: EXEC saves return address in child PSP+0Ah and IVT, terminate FAR JMPs to handler * Add Ctrl-C exit type (type 1) to AH=4Dh Get Return Code * Improve boot compatibility with Large/ECHS BIOS translation modes via CHS-first I/O and two-phase AH=42h LBA validation * Fix XMS AH=0Bh GDT descriptor base bits 31:24 for addresses above 16MB * Fix XMS bump allocator overrun when free_kb and alloc_ptr desynchronize after free * Fix child PSP JFT reset in AH=55h and AH=26h when parent expanded JFT via AH=67h * Fix large EXE load truncation on floppy when a sector crosses the 64KB DMA boundary * Fix FCB FindFirst/FindNext search state stored in FCB reserved bytes (0Ch-15h), matching DR DOS 6.0 * Fix EXEC to validate program-image cluster chain; out-of-range clusters fail with error 08h 9.0 rev 692 - 2026-05-16 --- * Add IOCTL subfunctions AL=02h/03h/04h/05h/0Ah/0Dh (AH=44h) * Add InDOS flag (AH=34h) as proper inc/dec counter for TSR compatibility * Add re-entrant fast-path handlers for AH=50h/51h/62h/25h/35h for TSR and interrupt safety * Expand SDA swap-in-DOS area for task-switching support * Improve SYSVARS/List of Lists conformance for Windows 3.x and disk utility compatibility (SFT entry size, device chain, FCB-SFT header, disk buffer stub, SFT device pointer/info) * Improve EXEC to store fully qualified program path in environment block per DOS 3.0+ spec * Improve EXE loader to handle MAXALLOC=0 (allocate entire largest free block) * Improve MCB allocator conformance and coalesce-during-allocation behavior * Fix CHDIR updating Current Directory Structure on wrong drive * Fix INT 15h AH=88h to return 0 when XMS is active per XMS 2.0/3.0 spec * Fix process termination handler misidentifying the exiting process * Fix AH=55h Create Child PSP not incrementing SFT reference counts for inherited handles * Fix JFT index underflow corruption in file handle operations * Fix AH=29h Parse Filename incomplete terminator check and uppercase corruption * Fix CALL command not auto-appending .BAT extension when omitted 9.0 rev 648 - 2026-05-02 --- * Add INT 24h critical error handler invocation on disk I/O errors with Retry/Fail support * Add INT 21h AH=5Dh (Get Swappable Data Area) for multitasker compatibility * Add INT 21h AH=4Bh AL=01h (EXEC Load But Don't Execute) for debuggers and program loaders * Add cached disk free space tracking via DPB FREE_COUNT/FREE_SEARCH for faster AH=36h and allocation * Migrate SFT to standard DOS 3.31 / DR DOS 6.0 55-byte entry format; AH=52h SFT pointer now live * Convert DPB to standard 32-byte MS-DOS 3.31 / DR DOS 6.0 layout * Fix INT 2Fh AX=1605h to zero CX before chaining (required by enhanced-mode startup protocol) * Fix SFT exhaustion from exec_psp_segment not restored after child process exit * Fix FCB-opened files leaking SFT entries on process termination without AH=10h close * Fix BATCH.COM errorlevel leak on command-not-found * Fix FCB block read/write drive byte write-back and CL register clobber * Reclaim 4KB kernel HMA space via dead EMS code removal and SFT right-sizing 9.0 rev 615 - 2026-04-25 --- * Fix DOS version reporting to match DR DOS 6.0 baseline; INT 21h AH=30h now correctly returns version 3.31 with OEM EEh, and AX=4452h provides proper DR DOS identification * Add INT 21h AH=DCh NetWare stub for Windows 3.0 compatibility * Reclaim 640 bytes of conventional memory through internal drive table consolidation 9.0 rev 550 - 2026-04-18 --- * Expand hard disk detection from 2 drives (C:-D:) to 16 (C:-R:) * Add INT 21h AH=32h (Get Drive Parameter Block) and AH=1Fh (Get Default Drive DPB) * Add List of Lists (INT 21h/52h) with proper DPB chain and CDS array; disk utilities now work * Add PSP default FCB population from command-line arguments during EXEC * Add CP/M CALL 5 compatibility stub at PSP+0x05 * Add caller SS:SP save to PSP+0x2E on INT 21h entry for TSR/debugger compatibility * Add PSP+0x38 initialization to FFFFFFFF for DOS extender compatibility * Add retry logic for CMOS RTC reads to handle Update-In-Progress conditions * Add batch file drive change commands (standalone "D:" now switches drives) * Fix PSP default FCB initialization to use space-padding instead of zeros * Fix Create PSP (AH=26h/55h) memory size off-by-one and JFT segment pointer bugs * Fix command tail buffer overflow by clamping length to 127 bytes 9.0 rev 487 - 2026-04-11 --- * Add retry logic to floppy disk operations (bootloader reads, kernel I/O, motor spin-up) for improved reliability on real hardware * Add DMA 64KB boundary checking for floppy multi-sector reads, preventing data corruption when transfers cross page boundaries * Improve floppy disk change detection to preserve current directory across media swaps instead of resetting to root * Improve CONFIG.SYS DEVICE= loader to find drivers beyond the first 16 root directory entries * Fix floppy disk change detection to handle corrupt BPB data without marking the drive as removed * Fix bare filespec floppy access (e.g., TYPE A:FILE.TXT) to trigger media check, preventing stale geometry usage * Fix MKDIR to reject duplicate directory names; returns error 5 (access denied) instead of corrupting the directory * Fix Set Default Drive (AH=0Eh) to accept any drive within LASTDRIVE range even if drive does not exist * Fix Create Child PSP (AH=55h) to update current PSP pointer after creating child PSP * Fix Parse Filename (AH=29h) FCB parsing for drive specifiers and wildcard characters * Fix file seek past EOF to zero-fill gaps when writing beyond current file length * Fix file handle operations to honor expanded Job File Tables from Set Handle Count (AH=67h) * Fix EMM386.SYS page fault handler to distinguish page faults from IRQ6 (floppy interrupt) when sharing vector 14 9.0 rev 442 - 2026-04-04 --- * Add floppy disk change detection; the kernel now detects disk swaps via INT 13h and automatically rebuilds the DPB, invalidates the FAT sector cache, and clears stale file handles, preventing data corruption when exchanging floppy disks * Add A:/B: drive aliasing for single-floppy systems; the physical drive is now shared between both drive letters as DOS convention requires, detected via the BIOS equipment word * Add FAT12 superfloppy support for D: drives without a partition table * Add Windows enhanced mode detection (INT 2Fh AX=1600h/1605h/1606h) with correct broadcast chaining; applications that probe for Windows enhanced mode now receive a proper "not running" response * Add save and restore of INT 22h/23h/24h vectors into the PSP on EXEC and restore them on child process termination, matching standard DOS behavior * Improve FAT12 I/O performance with an 8-slot LRU sector cache, eliminating redundant disk reads during file operations on floppy volumes * Fix FAT12 type detection to use the standard cluster-count algorithm rather than hardcoded heuristics, correctly identifying FAT12 on non-standard disk geometries * Fix FAT12 cluster allocator using incorrect EOF marker instead of the canonical 0x0FFF constant, which could cause file chain corruption * Fix Set Date (AH=2Bh) corrupting the month value when the current day is invalid for the target month (e.g., changing to February while day is 31) * Fix EXEC (AH=4Bh) not returning the error code in AX on failure; callers that inspected AX after a failed program launch received an indeterminate value instead of the correct DOS error code 9.0 rev 397 - 2026-03-28 --- * Add floppy drive support (A: drive, auto-detected at boot, full read/write) * Add FAT12 filesystem support on all drives (hard disk partitions and floppy disks) * Add EXE-format device driver support; DEVICE= in CONFIG.SYS now accepts .EXE files in addition to .SYS * Add attribute filtering to FindFirst/FindNext; hidden, system, and directory entries are now correctly included or excluded based on the search attribute mask * Fix FindFirst/FindNext search state not persisted in DTA, causing incorrect results from consecutive FindNext calls * Fix FCB FindFirst/FindNext (AH=11h/12h) using incorrect filename comparison * Fix DTA not initialized to PSP:80h for shell and child processes * Fix file writes larger than 512 bytes being silently truncated (AH=40h) * Fix incorrect error codes returned by file and directory operations when path resolution fails 9.0 rev 357 - 2026-03-21 --- * Add file and directory timestamp support (creation and modification times) * Add file locking support (INT 21h AH=5Ch) for database compatibility * Add IOCTL functions for removable media detection and network drive detection * Add support for 32KB cluster sizes for large FAT16 volumes (2GB+ partitions) * Fix IOCTL Get Input Status EOF detection for file handles * Fix MKDIR corrupting parent directory entries when extending directories * Fix cross-directory rename for multi-cluster subdirectories * Fix cross-directory rename to automatically extend full destination directories 9.0 rev 330 - 2026-03-14 --- * VCPI 1.0 interface in EMM386.SYS for DOS extender compatibility (DOS/16M, DOS/4GW) * Add EMS 4.0 function 50h (Map/Unmap Multiple Pages) for improved performance * Add INT 21h AH=4Bh AL=03h (overlay loading) for overlaid executables * Add INT 21h AH=40h CX=0 (file truncation) and AH=58h (memory allocation strategy) * Add superfloppy drive detection for FAT16 D: drives without partition table * Improve CONFIG.SYS boot feedback with per-driver loading messages * Improve CD command to support "CD..", "CD\", and "CD/" syntax without spaces * Improve error messages for failed DEVICE= driver loads * Fix cross-directory rename (INT 21h AH=56h) LBA and sector count calculations * Fix INT 21h AH=67h (Set Handle Count) register preservation 9.0 rev 291 - 2026-03-07 --- * EMM386.SYS driver for EMS compatibility * Add EMS 4.0 functions 47h-51h (handle directory, alter page map) * Add INT 33h functions 13h, 1Ch, 24h to mouse driver * Fix XMS move for extended memory blocks * Fix mkdir directory extension for multi-cluster directories * EMS no longer advertised when EMM386.SYS not loaded (MS-DOS compatible) 9.0 rev 265 - 2026-02-28 --- * Implement LIM EMS 4.0 (INT 67h) with XMS backend * Add BATCH.COM batch file processor * Add AUTOEXEC.BAT support on first boot * Add batch commands: ECHO, CD/CHDIR, DEL/ERASE, COPY, REN/RENAME, MKDIR/MD, RD/RMDIR * Add batch features: SHIFT, SET, CALL, %VAR% expansion, IF ERRORLEVEL * Add wildcard support for DEL command * Add IF EXIST support for device names (NUL, CON) * Implement INT 21h AH=67h JFT expansion * Properly implement . and .. directory entries * Set archive bit automatically on file creation and modification * Increase minimum system requirements to 386 * Fix CHS disk I/O reliability * Fix AH=69h crash by using bounce buffer for CHS disk read compatibility * Fix INT 21h AH=6Ch extended open action flags and register handling * Fix FAT cache stale data bug for multi-cluster files * Fix 16-bit overflow in FAT entry write for clusters >= 0x8000 * Fix multi-cluster directory support in EXEC, rename, MKDIR, and file lookup * Fix AUX device I/O (INT 21h AH=03h/04h) incorrectly routing to printer 9.0 rev 205 - 2026-02-21 --- * Add full-screen text editor (EDIT.COM) * Add PS/2 mouse driver (MOUSE.COM) with INT 33h API support * Add pipe support and output redirection (cmd | MORE, cmd > file) * Add MORE, DIR, JMP, PEEK, & POKE programs * Implement JFT/SFT file handle architecture * Implement INT 21h AH=04h,05h,0Dh,11h,12h,1Bh,1Ch,23h,24h,26h,2Dh,2Eh,34h,3Ah,45h,46h,54h,55h,57h,58h,59h,60h,63h,66h,67h,68h,69h,6Ch * Add extended key (scan code) support to console input functions * CHS fallback for systems without LBA support * Report DOS version 6.0 for compatibility * Fix day of week calculation in INT 21h AH=2Ah * Fix FAT entry lookup overflow for large volumes (clusters >= 0x8000) * Fix COM/EXE program exit via RET instruction * Fix FCB functions to search current directory instead of root * Fix EXEC to correctly calculate EXE load size from MZ header * Fix IOCTL file handle mapping and AH=43h attribute return 9.0 rev 126 - 2026-02-14 --- * Improved XMS memory allocation * Improved support for DOS extenders * Increased available conventional memory / Load kernel into HMA * Improved MEM output & behavior * Fixed "CD .." to correctly return to the parent directory * Implement INT 2Fh AX=4A01h * Support for second fixed disks (D: drive support) 9.0 rev 107 - 2026-02-07 --- * Implement INT 15h AH=88h * Implement INT 21h AH=03h,28h,4Bh,50h,51h, & 52h * Fix stack imabalance bug in EXEC * Expose CON & NUL devices in SYSVARS * Add CLS, MEM, HEXDUMP, & DATE programs * Improved conventional memory availability * Support for nested folders * Support for larger volumns beyond single sector FAT * Fix program ENV to be a proper copy & include program name * Support for reading larger files * Improved file I/O performance 9.0 rev 86 - 2026-01-31 --- * Initial public release