You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Collecting here the vDos changes (from here, here and here) - in case some feature is relevant for porting into DOSBox-X.
Major/noticeable changes of version 2025.05.01.
•
New "_" option of WINDOW= directive. No icon is displayed and system menu disabled.
LPTx/COMx= accepts bare "CMD"... to directly execute CMD commands.
Order of print options is more relaxed.
•
ABOUT command caused vDos to terminate if no window was shown yet.
TYPE command didn't wrap (too) long text to the next line.
Setting an unsupported codepage (CHCP) defaults to 437.
Ctrl+Alt+C was reported as Ctrl+C.
Errorlevel is set for internal DOS commands.
•
CPU: MUL instruction sets some flags as unaffected instead of undefined.
CPU: PUSHAD didn't push the initial value of the ESP register.
FPU: Rounds loading 80-bit values.
XMS: More strict conformance with official specifications.
Checking CS:IP/SS:SP located in EMS was not conclusive (segment before, plus offset in EMS frame).
•
At the root of a (DOS) drive, the eventual parent (Windows) directory was exposed.
DOS API 21-36h (Get free disk space) adjusted to avoid some DOS programs faulty calculation.
DOS API 21-6C00h (Extended open/create) didn't respect DL = 0 (fail if file exists).
Offsets of program overlays loaded in EMS were not relocated.
•
Cached mouse actions were caried on to a new spawned DOS program.
Some WP 6.x extended (512 charset) characters displayed incorrectly.
More fluent WP 6.x Print Preview.
Major/noticeable changes of version 2024.05.01.
•
High resolution (256x256) vDos icon was missing in version 2023.05.01.
vDos can start minimized.
More colorful dark mode (it's now just darker colors).
Added CAPTION command to set the title bar of the vDos window.
Slightly narrower optional left/right window spacing and some refinements to the internal TTF fonts.
Writing 16- or 32 bit values directly to VGA graphic memory was incorrect, eventually causing vertical bars.
Scaling VGA graphics in steps of 10% instead of 100% (2x, 3x...) and supported at runtime.
•
Less aggressive idle detection.
Extended Ctrl+C/Break checking support (programs hooking INT 1B/23h).
Ctrl+ returned an ASCII value always based on the US International keyboard layout.
Fix for FoxProX and Clipper shadow keyboard buffers dropping characters at pasting text.
•
Dropped log entries of programs just probing several system services for a cleaner log file.
DOS API 4Eh-FindFirst returned an error if CX register didn't have bit 5 set.
DOS API 5Ah-Create temporary file set the error code inadvertently to 5.
More robust virtual memory paging TLB handling.
XMS version 2.0 updated to 3.0.
•
Windows variables substituted for CMD/START. %%%% dropped, %% passed on as-is.
Support of %0-%9 in autoexec.txt.
WINEXEC config.txt option added. Set to off, it disallows starting a Windows program.
Major/noticeable changes to version 2023.05.01.
•
Occasional “vdos.info” notice removed from printouts. About popup is shown every 3 hours if not registered.
Support of direct access to (virtual) parallel hardware ports dropped.
FPU emulation rewrite. Only FPUAWARE=0 (no FPU) is still effective.
Mouse clicks outside the content area in full screen are ignored.
•
Wide font variant (FONT = [-]WIDE) for a 1/8th wider window (mostly for 16:9 full screen).
SCALE= directive dropped.
Extended graphics mode for WP6.x.
Support of 8 text mode video pages (in 25x80).
Dark mode could miscalculate contrast of colors.
COLOR command to select a color theme or set a color at runtime (see Readme.pdf).
•
TIO: Also valid for non-printing (DUMMY, CLIP, Windows program).
HORZ: Default scaling was 100% instead of documented 95%.
HORZ:/VERT: Overrides eventual embedded PCL margin settings.
Forced page break didn’t account for the top margin.
•
Full program DOS path with execute was limited to 31, now 95 characters.
Environment size raised to 1 KB.
Programs that hook into INT 21h and start a second program could get messed up.
DOS API 21-36h (Get free disk space) returns 1.9 GB free space instead of 123 MB.
DOS API 21-57h (Get last-written date and time) returned current time (for files).
Major/noticeable changes to version 2022.05.01.
•vDos.exe is again smaller, with a (final?) speed boost for FoxProX based programs.
UMB (Upper Memory Block) support dropped.
•Support of external (non-Windows) code page definitions.
More comprehensive ASCII/Unicode conversions.
Support of UTF-8 encoded config.txt, autoexec.txt and batch files.
•Retrieving (pasting) text from the Windows Clipboard could in specific situations keep the Clipboard locked.
Finger tipping (touch screen) fix for some DOS programs.
Fix for DOS programs not keeping up with Windows key stuffers.
With NumLock off, Shift NumPad digit didn't return the correct ASCII value.
•Taskbar notification when vDos isn't focused and goes idle (DOS program awaits input).
Updated FreeType library to version 2.11.0.
Set of alternative icons (file icons.icl) to eventually replace that of vDos.
Faster rendering (displaying) text, though that already was real fast.
More accurate rendering/positioning of external fonts.
DOS beep is Windows standard sound.
•Support of UNC paths in DOS API if those resolve to a drive letter reference in vDos.
Config.txt directive FPUAWARE = 0-3 (0: None, 1: Conditional rounding (default), 2: Rounding off, 3: Rounding on).
•Support of additional PCL print commands, and more accurate positioning.
Changed syntax of HORZ and VERT options. To be more intuitive (see Printing.pdf).
Major/noticeable changes to version 2021.05.01.
•vDos.exe is once more smaller (for if you would question that). Some 15% CPU overall speed gain, though FoxProX code will run up to 50% faster. Priority of vDos.exe set to “High” to give it a slight advantage when competing with other programs for CPU attention.
Detection of extensive keyboard polling by a DOS program: vDos will then drop to idle mode sooner.
•Print processor passes on eventually set copies option and the like to the print driver.
Text is transferred as strings instead of individual characters, resulting in smaller Windows print jobs and PDF's.
Added a bold variant of the internal font (can also be used for display).
•Changed the DOS DTA based find file API to Windows search handles conversion strategy.
Support of extended ASCII characters like é and ö in directory and file names. Note: If such a name cannot be converted to the current code page in vDos, those are hidden/inaccessible.
•Switched from Windows GetBinaryType() API to examining the header bytes to determine a file type.
•Screen DPI awareness: vDos renders text at the (sharper) native resolution if Windows is set to scale content.
Added a simulated dark mode of the DOS screen (probably a gimmick?).
Changed WINDOW= to size%[,horz%:vert%] for more consistency and uniform positioning. “Set as default” system menu option added when the window is resized, saving the window size and position to config.txt.
•Some refinements to command line parsing. Redirecting output was 'sticky', it stayed active.
Redirection of Windows CMD or START command are no longer trapped by vDos command line processor.
•Forced pasting text in programs that bypass INT 16.
Extended functionality for select/copy text. See the last paragraph of Printing.pdf for details.
•Faulty EXEPACKed DOS programs will load/start correctly w/o external help or sacrificing the first 64KB DOS memory block.
Major/noticeable changes to version 2020.03.01.
•Machine code routines converted to C/C++, vDos is potentially CPU type (not Windows) independent. Loss of performance of the emulated CPU is limited to a few percent by squeezing out the last possible optimizations.
•There’s now also a 64-bit edition (vDos64), however not publicly available/advertised. That would mostly just be confusing: "I need that version since I have Windows 64-bit". vDos64 has a larger footprint and is slightly slower than its 32-bit counterpart, that runs in both Windows 32- and 64-bit.
•Unused FreeType options/extensions removed, some common code of the 3 CPU emulators merged, rarely used code compiled for size. vDos.exe lost weight, despite added functionality.
•Added KEYCODE= option, setting the reported scan and ASCII code of a specific key.
Alt+Space opens the vDos system menu, Win+Dn minimizes, Win+Up restores the window.
Ctrl+Mousewheel changes the font/window size. As with Windows CMD, the top left corner is fixed.
•The Windows command line processor (CMD) needs the current work directory set to a drive letter. With network/mapped Windows drive letters, this gave a problem since vDos always used the UNC paths.
Removed stripping double quotes from the command line to better support calling Windows CMD.
vDos will refuse to run if started elevated. There should be no need for that.
•The eventual nag couldn’t be clicked away if vDos was minimized.
As vDos went to 'Hibernate', it could become unresponsive.
•FreeType library updated to version 2.10.1.
Internal TTF font character positions vertically raised so they center better within the cells. Some other refinements to individual characters.
Line drawing characters of the internal font set to single points (more discreet lines) at all resolutions.
Added EXTEND= option to mask/hide on-screen text, like a silly (or even annoying ticking) clock.
COLORS= dropped in favor of the more convenient THEME= (0-9). System menu item added to cycle thru the themes (preview, if not explicitly set).
Default color of the DOS text cursor changed.
•Internal printing is handled by a separate thread to facilitate some HP drivers and Microsoft virtual printing.
Added timeout options to optimize faster printer response. Added PRIVATE option to skip creating print files.
Some improvements to the PCL printer code parser.
•'Turbo' text pasting reinstated. It was once disabled to overcome a Clipper bug. Now pasting in other programs should again be as fast as those can process input.
•Added BTRIEVE= option to connect to a Windows Pervasive/BTR2SQL interface. Mind, this extension/functionality doubles the vDos license fee.
•Fixed FPU rounding errors in specific situations. Added support of some obscure FPU instructions.
•Some (built-in) ANSI.SYS refinements.
Major/noticeable changes to version 2019.05.01.
•Switched to 3 distinct CPU mode emulators with a speed gain of 5 to 30%. Special DataPerfect (DP2.6Y) support will let it run nearly as fast as in NTVDM (same hardware), and comes with network optimization.
•DOS compatibility fixes like a system wide uniform BIOS/DOS date/time. Line endings in text files. DIR command counting directories as files. Create temporary file API not creating an actually random file(name), and worse, overwriting it if present.
•Some improvements to FPU emulation and printing.
•Long awaited fix of the occasionally (and illusive) Page Fault errors with FoxProX.
•Copy/paste in full screen.
•vDos is further silenced, a beep.wav file has to be supplied in the vDos directory to define the system beep.
•Idle detection scheme overhauled. The previous one especially let vDos go idle premature with file operations. vDos still attends to the DOS program in idle mode, though at a far lower rate. Will now go to hibernate after 5 minutes of continuous idle time. So vDos CPU usage should drop to zero, even on lesser hardware.
•If ASCII 0-31 characters were redefined in a codepage, the lower/original ones were still used.
•Support of key stuffers like AutoHotKey: Handling extended characters and BIOS keyboard buffer overflow.
•Some programs on exit set the VGA registries directly, this could mislead vDos the window was resized.
Major/noticeable changes to version 2018.05.01.
•The emulated CPU is up to 40% faster, though less in protected mode operation.
•Record locking was validated every host OS granted request, while an one-time-only confirmation per drive is conclusive. It slowed down multi-user database programs, especially when accessing network hosted files.
•Text copy/paste is now [Ctrl+Win+]left/right mouse click; Ctrl+Win+C/V are used by Windows itself since the Fall Creators Update.
•Simplified configuration by dropping directives from config.txt: "FRAME=" (window is always bordered), "XMEM=" (10MB of both XMS and EMS memory is provided), "LINS=" and "COLS=" (replaced by TEXT=x, "WINKEY=", and "EURO=". Added "CTRL+V=" to en/disable this pasting option.
•Dropped global "TIMEOUT=" config.txt directive in favor of "TIO:" per print device. Added default line character substitution for "---" and "===" sequences.
•F-Keys repeat, fixed pasting text in Clipper (now a bit slower in all apps).
•More accurate BIOS timer tick, servicing routines. Those were postponed and could even miss a tick. Added dedicated idle detection for protected mode operation.
•'Only' 16,384 memory address relocations were supported with .EXE files, if smaller than 480 bytes, they were not loaded. If the SP was 0xfffe, a RETF instruction didn't cause the SP to wraparound. REP LODSx (silly to repeat of course) with the DF flag set, returned the value of an incorrect memory address.
•The SFN filter is removed from file listings.
•More comprehensive logging for troubleshooting ("...vDos.exe" /log).
•Switched development to Visual Studio 2017. Its "Favor Speed" optimizing option actually favors "Size" sometimes, resulting in smaller, but slower code.
•vDos now comes in a 100% open source Base version, basically the 2017.08.01 version, w/o printing and executing Windows programs. These are closed source, as are further developments. vDosSetup will install the Base version and patch it to version 2018.05.01 if selected.
Major/noticeable changes to version 2017.08.01 – last opensource
•vDos won’t run anymore in Windows XP (it was then already somewhat crippled), it’s now “Windows 7 or later” to ease future Windows compatibility. vDos can however still be installed and used on Windows Vista.
•4DOS is no longer embedded as the default command processor. Hardly anyone used the 4DOS extra functionality, while it proved to be confusing to others. The previous internal command processor is reinstated, though largely revised. As a bonus vDos.exe is 28% smaller, vDos not executing the 4DOS 16-bit code, applications start slightly faster, while free conventional memory increases 4KB.
•A FPU (Floating-point unit) is added to the emulated CPU. Programs utilizing a FPU can run substantially faster.
•Protected mode support and bare extended memory (XMEM-EXT) usage is overhauled.
•More progressive idle detection (lowering the real CPU/core load) and responsive DOS mouse handling.
•The LOW= directive in config.txt is dropped. vDos detects faulty EXEPACKed programs itself, and applies the required memory adjustments to let them run properly.
•More robust and comprehensive pasting of Windows Clipboard text.
•Minor printing issues resolved. Added SEL = "" option to select the default Windows printer.
•Integrated WP Shell emulation to Windows Clipboard. Direct copy/append of WP’s selected text, paste text w/o the keyboard buffer roundabout and ASCII restrictions. Support of the VGA512 extended character set.
•COLS/LINS directive in config.txt accepts larger maximum values, determined by the formula COLS x LINS < 16,385 (a minimal font size is of course still enforced).
•[Win]+Ctrl+C copies text starting at the cursor (as long in the same fore/background color) to the end of the line. So it's now a more useful quick (to the end of) line or field copy.
•Loading a DOS COM executable, a free/available 64KB memory segment was just assumed at setting the initial programs SP value.
Major changes in version 2016.10.01:
•Calling 4DOS from within a program (shell command), vDos assumed the required free memory was the 4DOS executable image size. But 4DOS needs a bit more, so vDos could conclude no memory swapping was needed. In rare situations preventing 4DOS to load with insufficient memory (as it wouldn’t in “real” DOS).
With swapping, CPU registers were incorrectly restored on reentrance (documented DOS behavior, but…).
•If the extrabytes value (last page size) of an executable header was 0, vDos didn't load the actual last page (512 bytes).
•Due to a Windows bug, opening a file could return an incorrect error code when failing. If a DOS program explicitly tests for that code, it could go wrong (so far only reported with DataPerfect).
•The Windows API GetBinaryType function doesn't always return correct information for DOS executables hosted on non-Windows filesystems. This could cause vDos to let Windows handle those DOS programs.
•Establishing the "real" keyboard scan code, could result in an incorrect scan code being reported with specific key combinations and non-US keyboards.
•The CPU SHL byte-wise instruction didn't set the carry flag if needed. SAR was also incorrect due to a typo.
•Some protected mode programs were not supported anymore.
•The CMD command is enhanced (see 4DOS help text).
•The internal print processor also supports basic PCL printing directly. The bare SEL option is dropped, displaying the Windows printer selection dialog has become the default.
A SPOOL option is added to circumvent possible persistent print time-outs (or to collect DOS print jobs).
More accurate horizontal positioning, Windows fails in updating the position correctly at printing multiple characters.
•To improve readability, the vDos window has some extra white space (half a character) to the left and right. This can be turned off by the optional leading minus sign in the WINDOW = [-]… directive in config.txt.
•The internal font is replaced by an optimized/customized Cousine font. It now supports more characters (code pages) than any other font, and is also the default font for printing.
Major changes in version 2016.06.01:
An internal DOS-to-Windows print processor is added, mostly an external one won’t be needed anymore.
The emulated CPU is some 30% faster, though less with protected mode page mapping (FoxProX).
Even while accessing files, some DOS applications probe the keyboard that often, the vDos idle detection could kick in. Substantially degrading the performance of the DOS application.
A CMD command is added, linked to Windows CMD command line processor.
Enhanced executing Windows programs or opening files directly by a DOS program, the command line can be preceded with [WAIT][HIDE]. WAIT will suspend the DOS program until the Windows program is finished, HIDE will run the Windows program minimized.
DOS API CHDIR to file was accepted, FINDFIRST/NEXT files-only returned also directories.
If a program was swapped out of DOS memory, the MCB list could get corrupted on reentrance.
The function preventing open Windows search handles leftovers, could close an active DOS search.
Better/more complete support of (N)ANSI.SYS display escape sequences.
Some fine-tuning of the internal TTF font.
Improved text pasting from the Windows Clipboard.
Switched to development in Visual Studio 2015.
Minor changes in version 2015.11.01.
The 2015.10.01 version has a major bug; it stops working on November 1st !
4DOS help text updated.
Bit 18 (AC) of CPU flags masked out (486SX+ only detection).
Added Int 15-C9h: BIOS: Get CPU type and mask revision.
Int 2Fh-1A00h returns AL=FFh; fakes ANSI.SYS installed.
Added country code detection.
DOS API FindFirst (4Eh) returned code 02h (Windows FindFirst error code) if a file was not found, instead of 12h (DOS).
Right Alt key is reported as Left Ctrl + Right Menu by Windows. The fix for this prevented the Left Ctrl key status to be updated.
Satisfied search for command.com etc. if search attribute <> 7.
vDos didn't explicitly set the CPU flags register when a program exits.
Major changes in version 2015.10.01
vDos tests if the PC is joined to a domain, or a network drive is addressed. If so, and not registered, vDos will display a nag (the About popup).
The /log option is more informative, including invalid path references by a program.
Very rare to occur bug in memory optimization routines fixed.
Frequently switching the base address of page mapping in DOS protected mode didn't clear the TLB cache (intended, but it could cause problems). Enabling page mapping didn’t reset the CPU instruction cache.
The DOS API function Allocate Memory returned the size as the segment of the allocated memory block under some specific circumstances.
PIT controller is more accurate.
VGA graphics render routines consolidated in the final writes to the VGA memory banks.
Idle detection adapts to (successful) file reads and writes. The number of emulated CPU cycles is constant.
MS Visual C++ libraries are linked in (users with a fresh Windows 10 installation/system had to install these libraries by hand, if not already installed).
Functionality of SDL library is done by vDos itself, the external SDL.dll is no longer needed.
Localized keyboard support should be improved, screen updates faster (more, but technical stuff).
If a program hides the text cursor, its position wasn't always correct, resulting in pointless screen updates.
File operations use direct Windows API calls, instead of MS C++ runtime functions.
Opening files is faster, but only noticeable with slow drives or networks and massive openings of files.
“Ghost" files and folders could appear due to left behind open/active Windows search handles.
Multi monitor awareness.
Command processor replaced by 4DOS, tightly integrated in vDos. No changes should be needed to existing vDos installations, except that Windows environment variables have to be enclosed in a double %%.
Using XMS, 4DOS is swapped out of DOS (though it still reports swapping to XMS). Programs calling the command processor are also swapped out of DOS by vDos if needed.
The embedded FreeType library is updated to version 2.6.
Font size selection of external TTF files are in even point sizes and rounded pixel dimensions. Mostly to circumvent FreeType limitations in converting point sizes to fixed pixel dimensions.
Version 2015.04.10
This replaces version 2015.04.07 that had a major bug if EMS memory was used.
vDos crashed if no autoexec.txt file was present.
If a Windows GUI program is started, vDos doesn't wait for it to terminate as before. However, if non-GUI (CLI), it waits and returns the exit code of the program.
Version 2015.04.07
Configuration
Parsing config.txt checks for setting an option more than once.
Replaced the EMS = ON/OFF option by XMEM = [+] XMS|EMS|EXT. Defaulting to 4MB XMS, memory has to explicitly specified by the amount (max 63 MB) and kind.
New TIMEOUT = ON/OFF option defaulting to ON (the previous behavior of vDos). Setting it to OFF disables the timeout function with printing: vDos no longer regards the printjob to be completed after no data is received for 5 seconds. But instead relies on the DOS close device function to be called.
The Euro symbol is no longer by default assigned to ASCII value 128. There were too many exceptions, you have to specify EURO=ASCII (mostly 128) in config.txt.
DOS
The Z: drive is dropped. C: is initially set to the Windows vDos work directory. It can be changed (once) with USE. Command.com is faked to be in the root of C:.
Shell DIR would in some situations return LFN entries with a blank name.
And showed . (current) and .. (upper folder) entries for vDos drives assigned to Windows (non-root) folders.
The command shell checking for/getting keyboard input could damage DOS internal data.
DOS Execute set the flags in the stack of the newly loaded program. In some rare situations this could lead to malfunction of the new program.
Better detection of starting non-DOS (Windows) programs.
Device information returns EOF on input for LPT1-9. At least dBase IV checks for this.
Others
PIC controller essentially removed, PIT simplified, hardware interrupt scheme removed.
Internal TTF font extended to include code page 1252 and 862, thanks to Edward Mendelson.
FreeType library updated to version 2.5.5 and linked into vDos.exe (libfreetype-6.dll is no longer needed).
Added internal SDL_ttf library functionality (SDL_ttf.dll is no longer needed).
Displaying italic characters (WP and WS) temporary(?) dropped.
Support for localizing/translating messages in vDos removed, no one seems to use this.
Version 2014.10.19
“Hardware”
• XMS: included the first 64KB of extended memory (HMA).
• Corrected scan codes for Right Alt extended keyboard keys.
• Simplified and stripped down the video/VGA drawing routines, they are also a bit faster now.
• Further optimization of CPU memory access functions, vDos is in overall a 25% faster (a 10%
due to compiling for speed).
• CPU: added support for memory paging in protected mode (mainly to facilitate FoxProX).
• PIT controller stripped down to only channel/counter 0.
Config.txt
• Dropped HIDE=. The vDos window is hidden for 2.5 seconds or until keyboard input is expected.
• Added '-' switch to FONT= to display all lines/boxes for ASCII codes 176-223.
• Added MONO switch to COLORS= to fake a MDA card (underline mode etc.).
• Added LPTx/COMx= CLIP for reading from and writing to the Windows clipboard.
Interface
• Smoother switching between text and graphics mode, no ghosting of the previous mode contents.
• The title of the framed vDos window is set to the shortcut name it was started from.
• Added synchronization between an application accepting keyboard input and video refreshing.
• Simplified mouse driver routines and dropped the vDos text mouse pointer.
Printing
• The .asc and .txt files are supposed to be stripped of trailing white space. Eventually these were
however transported to the beginning of the next line.
DOS
• Added the CHCP (change code page) command.
• Set internal mediatype of Z: to hard disk.
• Int 21-67, set handle count: when called more than once the PSP file table could get messed up.
• Int 21-4409h (device) and 440Ah (handle) report drive being remote.
• Int 2F: Added function B800h (Network - installation check) and B809h (Network - get version).
• Int 2F: If XMS is converted to EMS, inquiring XMS is adjusted accordingly.
• Dropped throwing an exception when loading an executable with a SP value less than 4.
Version 2014.07.18
“Hardware”
• Major overhaul of the emulated CPU’s memory access functions.
• The emulated CPU gets more time to execute, so vDos will run faster. The idle detection function
is adjusted to work with this higher speed.
• The amount of XMS memory is enlarged to 63MB.
Config.txt
• umb = on/off
This option is dropped. 160KB upper memory is always available.
• ems = on/off (default off)
Converts all XMS to EMS 3.2 memory for applications that can use only EMS. If EMS 4.x is
needed, leave it off and use EMSMagic. Mind, EMS will then be much slower addressed.
Interface
• Sysmenu in framed window cleaned up from unused items.
• Better translating of non-ASCII characters from the Windows clipboard when pasting text
(Win+Ctrl+V).
• The 16 basic DOS text colors are locked and can’t be changed by a program.
Printing
• If the printer output would exceed 64KB characters, vDos got in an endless loop generating the
.txt Unicode text file.
• Converting Postscript printer output to PDF by pspcl6 had trouble with (very) large files. The use
of pspcl6 is replaced by gswin32c.
• A (Windows) program handling the printer output has now to be prefixed with ‘@’ to be hidden.
DOS
• The number of file handles is now standard the maximum of 255.
• Added DOS API int 21h-5Eh-AL=0, Network - get machine name.
• Reported space of any vDos disk is now 70MB free, 10MB used.
• Corrected handling of empty %1-%9 variables in batch files.
• Validation of filenames didn't strip trailing spaces from the base name.
• Something like "command /cfirst second" dropped second (all after the space).
• USE without a Windows drive/folder now returns the assignment of that DOS drive.
Version 2014.04.06
Config.txt
• color =
Replaced by the more versatile colors = <16 x color values> for the DOS text mode colors.
• lpt/com1-9 =
If at runtime the content is recognized as PCL or PostScript, #<lpt/com1-9>.pdf is created to be
used with something like:
LPT1 = pdfxcview.exe /print #lpt1.pdf.
That is handled by the Windows command interpreter.
If you want to start the program directly and to be hidden, enclose it with "":
LPT1 = "path\pdfxcview.exe" /print #lpt1.pdf.
• use
An eventual error message clarifies better why it didn’t work (when using Windows environment
variables).
• window =
Extended to window = [,x-pos:y-pos] to set the initial window position.
Embedded TTF font.
• Location of the underline position corrected.
WPDos
• Color values on screen are translated to text attributes (underline, italic if wp = .. > 0).
DOS
• COPY resulted in COPY , wiping out .
• A command like "test" and a found file "test" would try to execute that file.
• At the command line environment variables were not replaced by their values.
• Variables not found in the DOS environment are now looked for in the Windows environment.
• The VER command reports the vDos version.
• DOS API 21h-2Bh (Set system date) and 21h-2Dh (Set system time) always returned AL=FFh
(invalid date/time). It now validates the date or time and returns AL=0 if valid (date/time set, but
not really).
2014.03.14
Most of these changes were inspired by my communications with Edward Mendelson and so, to some
degree, related to WPdos.
Config.txt
• frame = on (default off)
Adds title bar and borders to the vDos window.
The system menu shows the [Win] commands and About…
The close button is active, but only terminates vDos if no files are open.
• font = filename
Replaces the vDos TTF font with filename.ttf.
The vDos font is preferred, it’s optimized for the DOS/VGA 8x16 raster font, but lacks localization.
It’s (again) embedded in the executable, no need for the external vDos.ttf file.
• lins = 24 up to 60 (default 25) and cols = 80 up to 160 (default 80)
Sets the numbers of lines and columns in text mode.
Any combination can be used, you have to see if this is useful for/supported by your application.
• window = 100
Starts vDos in “fullscreen” mode.
• hide = 0 up to 2^31 (default 5)
The vDos window remains hidden for this time in tenths of a second.
• wp = version (default 0)
WPdos: fixes an issue with device = clipboard, planned to show underlined/bold text etc.
Keyboard
• [Ctrl]+C/V and F11/12 have to be complemented by [Win].
Some applications needed the combination w/o [Win].
• [Alt][Enter] switches to/from “fullscreen”.
It’s still a window, set to the size of the desktop.
Note: [Alt] has to be released between switching (SDL bug).
• Fixed some incompatibility issues introduced with support of localized keyboards.
Copy/paste
• Text is exchanged with the clipboard using Unicode, so this should function for all code pages.
• The mouse can be used for copying text. Start selecting with [Win][Ctrl]+mouse click, releasing
the mouse button will copy the selected text to the clipboard.
Printing
• Added DOS support of output to PCL and PostScript printers.
Nothing to set, PCL/PostScript is determined by examining the output.
The (ps)pcl6.exe program is needed for this.
Output is converted to PDF and opened in the standard PDF viewer.
• Added device = clipboard, copies printer output to the Windows clipboard.
• Dropped device = , the files #device.asc (ASCII) and #device.txt (Unicode) are created
in the vDos working directory.
• Added device = <Windows command/program>, this is assumed if it’s not DOSprinter, dummy
etc. For instance “lpt5 = notepad #lpt5.txt” will open the output to lpt5 in notepad.
• Fixed issues with time-outs.
Miscellaneous
• vDos icon redesigned, unfocussed vDos window (top line).
• Extended/XMS memory is now 16MB (was 7MB).
• Localization of most messages (one has to make its own language.txt)
• Applications stalling when exiting from swapping out to DOS.
• Starting Windows programs with path: they don’t have to be in the current directory.
• Source code cleaned up, no fixed file paths.
Fixed some minor bugs.
Jos Schaars
2012, some 1.5 year before 2014.03.14
vDos’ first release there was 2014.03.14. Before that, it already ran fine for some 1.5 year on many Windows systems. So I thought to have published a largely finished product.
vDos highlights
The DOS application starts almost instantly in a scalable window and crisp TTF font (in text mode). Actually delayed (the almost) until it accepts input. The application is ready to be used.
Mature and no-nonsense, focuses exclusively on serious end-user programs, setup yours easily. No complex configuration to load drivers, set file handles, keyboard layout, language character set…
Run multiple DOS applications (simultaneously), if needed with their own specific configuration. No conflicts with eventual Windows NTVDM instances running alongside (like in a mixed network).
Also prints to Windows-only (GDI) printers, for instance a virtual printer to produce PDF’s.
Reliable, its DOS file system is (a subset of) that of Windows. No internal file caching/buffering corrupting data.
Secure, confines DOS applications to assigned local or network directories.
Network support with (verified) record locking, for multi-user DOS applications to function reliable.
Copy/paste Windows text to DOS and vice versa, transparent conversion of Windows Unicode-DOS ASCII text.
Fully portable, small footprint and little impact on Windows resources.
Knowledgeable actual support by a public forum or private email with swift responses.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Collecting here the vDos changes (from here, here and here) - in case some feature is relevant for porting into DOSBox-X.
Major/noticeable changes of version 2025.05.01.
•
New "_" option of WINDOW= directive. No icon is displayed and system menu disabled.
LPTx/COMx= accepts bare "CMD"... to directly execute CMD commands.
Order of print options is more relaxed.
•
ABOUT command caused vDos to terminate if no window was shown yet.
TYPE command didn't wrap (too) long text to the next line.
Setting an unsupported codepage (CHCP) defaults to 437.
Ctrl+Alt+C was reported as Ctrl+C.
Errorlevel is set for internal DOS commands.
•
CPU: MUL instruction sets some flags as unaffected instead of undefined.
CPU: PUSHAD didn't push the initial value of the ESP register.
FPU: Rounds loading 80-bit values.
XMS: More strict conformance with official specifications.
Checking CS:IP/SS:SP located in EMS was not conclusive (segment before, plus offset in EMS frame).
•
At the root of a (DOS) drive, the eventual parent (Windows) directory was exposed.
DOS API 21-36h (Get free disk space) adjusted to avoid some DOS programs faulty calculation.
DOS API 21-6C00h (Extended open/create) didn't respect DL = 0 (fail if file exists).
Offsets of program overlays loaded in EMS were not relocated.
•
Cached mouse actions were caried on to a new spawned DOS program.
Some WP 6.x extended (512 charset) characters displayed incorrectly.
More fluent WP 6.x Print Preview.
Major/noticeable changes of version 2024.05.01.
•
High resolution (256x256) vDos icon was missing in version 2023.05.01.
vDos can start minimized.
More colorful dark mode (it's now just darker colors).
Added CAPTION command to set the title bar of the vDos window.
Slightly narrower optional left/right window spacing and some refinements to the internal TTF fonts.
Writing 16- or 32 bit values directly to VGA graphic memory was incorrect, eventually causing vertical bars.
Scaling VGA graphics in steps of 10% instead of 100% (2x, 3x...) and supported at runtime.
•
Less aggressive idle detection.
Extended Ctrl+C/Break checking support (programs hooking INT 1B/23h).
Ctrl+ returned an ASCII value always based on the US International keyboard layout.
Fix for FoxProX and Clipper shadow keyboard buffers dropping characters at pasting text.
•
Dropped log entries of programs just probing several system services for a cleaner log file.
DOS API 4Eh-FindFirst returned an error if CX register didn't have bit 5 set.
DOS API 5Ah-Create temporary file set the error code inadvertently to 5.
More robust virtual memory paging TLB handling.
XMS version 2.0 updated to 3.0.
•
Windows variables substituted for CMD/START. %%%% dropped, %% passed on as-is.
Support of %0-%9 in autoexec.txt.
WINEXEC config.txt option added. Set to off, it disallows starting a Windows program.
Major/noticeable changes to version 2023.05.01.
•
Occasional “vdos.info” notice removed from printouts. About popup is shown every 3 hours if not registered.
Support of direct access to (virtual) parallel hardware ports dropped.
FPU emulation rewrite. Only FPUAWARE=0 (no FPU) is still effective.
Mouse clicks outside the content area in full screen are ignored.
•
Wide font variant (FONT = [-]WIDE) for a 1/8th wider window (mostly for 16:9 full screen).
SCALE= directive dropped.
Extended graphics mode for WP6.x.
Support of 8 text mode video pages (in 25x80).
Dark mode could miscalculate contrast of colors.
COLOR command to select a color theme or set a color at runtime (see Readme.pdf).
•
TIO: Also valid for non-printing (DUMMY, CLIP, Windows program).
HORZ: Default scaling was 100% instead of documented 95%.
HORZ:/VERT: Overrides eventual embedded PCL margin settings.
Forced page break didn’t account for the top margin.
•
Full program DOS path with execute was limited to 31, now 95 characters.
Environment size raised to 1 KB.
Programs that hook into INT 21h and start a second program could get messed up.
DOS API 21-36h (Get free disk space) returns 1.9 GB free space instead of 123 MB.
DOS API 21-57h (Get last-written date and time) returned current time (for files).
Major/noticeable changes to version 2022.05.01.
•vDos.exe is again smaller, with a (final?) speed boost for FoxProX based programs.
UMB (Upper Memory Block) support dropped.
•Support of external (non-Windows) code page definitions.
More comprehensive ASCII/Unicode conversions.
Support of UTF-8 encoded config.txt, autoexec.txt and batch files.
•Retrieving (pasting) text from the Windows Clipboard could in specific situations keep the Clipboard locked.
Finger tipping (touch screen) fix for some DOS programs.
Fix for DOS programs not keeping up with Windows key stuffers.
With NumLock off, Shift NumPad digit didn't return the correct ASCII value.
•Taskbar notification when vDos isn't focused and goes idle (DOS program awaits input).
Updated FreeType library to version 2.11.0.
Set of alternative icons (file icons.icl) to eventually replace that of vDos.
Faster rendering (displaying) text, though that already was real fast.
More accurate rendering/positioning of external fonts.
DOS beep is Windows standard sound.
•Support of UNC paths in DOS API if those resolve to a drive letter reference in vDos.
Config.txt directive FPUAWARE = 0-3 (0: None, 1: Conditional rounding (default), 2: Rounding off, 3: Rounding on).
•Support of additional PCL print commands, and more accurate positioning.
Changed syntax of HORZ and VERT options. To be more intuitive (see Printing.pdf).
Major/noticeable changes to version 2021.05.01.
•vDos.exe is once more smaller (for if you would question that). Some 15% CPU overall speed gain, though FoxProX code will run up to 50% faster. Priority of vDos.exe set to “High” to give it a slight advantage when competing with other programs for CPU attention.
Detection of extensive keyboard polling by a DOS program: vDos will then drop to idle mode sooner.
•Print processor passes on eventually set copies option and the like to the print driver.
Text is transferred as strings instead of individual characters, resulting in smaller Windows print jobs and PDF's.
Added a bold variant of the internal font (can also be used for display).
•Changed the DOS DTA based find file API to Windows search handles conversion strategy.
Support of extended ASCII characters like é and ö in directory and file names. Note: If such a name cannot be converted to the current code page in vDos, those are hidden/inaccessible.
•Switched from Windows GetBinaryType() API to examining the header bytes to determine a file type.
•Screen DPI awareness: vDos renders text at the (sharper) native resolution if Windows is set to scale content.
Added a simulated dark mode of the DOS screen (probably a gimmick?).
Changed WINDOW= to size%[,horz%:vert%] for more consistency and uniform positioning. “Set as default” system menu option added when the window is resized, saving the window size and position to config.txt.
•Some refinements to command line parsing. Redirecting output was 'sticky', it stayed active.
Redirection of Windows CMD or START command are no longer trapped by vDos command line processor.
•Forced pasting text in programs that bypass INT 16.
Extended functionality for select/copy text. See the last paragraph of Printing.pdf for details.
•Faulty EXEPACKed DOS programs will load/start correctly w/o external help or sacrificing the first 64KB DOS memory block.
Major/noticeable changes to version 2020.03.01.
•Machine code routines converted to C/C++, vDos is potentially CPU type (not Windows) independent. Loss of performance of the emulated CPU is limited to a few percent by squeezing out the last possible optimizations.
•There’s now also a 64-bit edition (vDos64), however not publicly available/advertised. That would mostly just be confusing: "I need that version since I have Windows 64-bit". vDos64 has a larger footprint and is slightly slower than its 32-bit counterpart, that runs in both Windows 32- and 64-bit.
•Unused FreeType options/extensions removed, some common code of the 3 CPU emulators merged, rarely used code compiled for size. vDos.exe lost weight, despite added functionality.
•Added KEYCODE= option, setting the reported scan and ASCII code of a specific key.
Alt+Space opens the vDos system menu, Win+Dn minimizes, Win+Up restores the window.
Ctrl+Mousewheel changes the font/window size. As with Windows CMD, the top left corner is fixed.
•The Windows command line processor (CMD) needs the current work directory set to a drive letter. With network/mapped Windows drive letters, this gave a problem since vDos always used the UNC paths.
Removed stripping double quotes from the command line to better support calling Windows CMD.
vDos will refuse to run if started elevated. There should be no need for that.
•The eventual nag couldn’t be clicked away if vDos was minimized.
As vDos went to 'Hibernate', it could become unresponsive.
•FreeType library updated to version 2.10.1.
Internal TTF font character positions vertically raised so they center better within the cells. Some other refinements to individual characters.
Line drawing characters of the internal font set to single points (more discreet lines) at all resolutions.
Added EXTEND= option to mask/hide on-screen text, like a silly (or even annoying ticking) clock.
COLORS= dropped in favor of the more convenient THEME= (0-9). System menu item added to cycle thru the themes (preview, if not explicitly set).
Default color of the DOS text cursor changed.
•Internal printing is handled by a separate thread to facilitate some HP drivers and Microsoft virtual printing.
Added timeout options to optimize faster printer response. Added PRIVATE option to skip creating print files.
Some improvements to the PCL printer code parser.
•'Turbo' text pasting reinstated. It was once disabled to overcome a Clipper bug. Now pasting in other programs should again be as fast as those can process input.
•Added BTRIEVE= option to connect to a Windows Pervasive/BTR2SQL interface. Mind, this extension/functionality doubles the vDos license fee.
•Fixed FPU rounding errors in specific situations. Added support of some obscure FPU instructions.
•Some (built-in) ANSI.SYS refinements.
Major/noticeable changes to version 2019.05.01.
•Switched to 3 distinct CPU mode emulators with a speed gain of 5 to 30%. Special DataPerfect (DP2.6Y) support will let it run nearly as fast as in NTVDM (same hardware), and comes with network optimization.
•DOS compatibility fixes like a system wide uniform BIOS/DOS date/time. Line endings in text files. DIR command counting directories as files. Create temporary file API not creating an actually random file(name), and worse, overwriting it if present.
•Some improvements to FPU emulation and printing.
•Long awaited fix of the occasionally (and illusive) Page Fault errors with FoxProX.
•Copy/paste in full screen.
•vDos is further silenced, a beep.wav file has to be supplied in the vDos directory to define the system beep.
•Idle detection scheme overhauled. The previous one especially let vDos go idle premature with file operations. vDos still attends to the DOS program in idle mode, though at a far lower rate. Will now go to hibernate after 5 minutes of continuous idle time. So vDos CPU usage should drop to zero, even on lesser hardware.
•If ASCII 0-31 characters were redefined in a codepage, the lower/original ones were still used.
•Support of key stuffers like AutoHotKey: Handling extended characters and BIOS keyboard buffer overflow.
•Some programs on exit set the VGA registries directly, this could mislead vDos the window was resized.
Major/noticeable changes to version 2018.05.01.
•The emulated CPU is up to 40% faster, though less in protected mode operation.
•Record locking was validated every host OS granted request, while an one-time-only confirmation per drive is conclusive. It slowed down multi-user database programs, especially when accessing network hosted files.
•Text copy/paste is now [Ctrl+Win+]left/right mouse click; Ctrl+Win+C/V are used by Windows itself since the Fall Creators Update.
•Simplified configuration by dropping directives from config.txt: "FRAME=" (window is always bordered), "XMEM=" (10MB of both XMS and EMS memory is provided), "LINS=" and "COLS=" (replaced by TEXT=x, "WINKEY=", and "EURO=". Added "CTRL+V=" to en/disable this pasting option.
•Dropped global "TIMEOUT=" config.txt directive in favor of "TIO:" per print device. Added default line character substitution for "---" and "===" sequences.
•F-Keys repeat, fixed pasting text in Clipper (now a bit slower in all apps).
•More accurate BIOS timer tick, servicing routines. Those were postponed and could even miss a tick. Added dedicated idle detection for protected mode operation.
•'Only' 16,384 memory address relocations were supported with .EXE files, if smaller than 480 bytes, they were not loaded. If the SP was 0xfffe, a RETF instruction didn't cause the SP to wraparound. REP LODSx (silly to repeat of course) with the DF flag set, returned the value of an incorrect memory address.
•The SFN filter is removed from file listings.
•More comprehensive logging for troubleshooting ("...vDos.exe" /log).
•Switched development to Visual Studio 2017. Its "Favor Speed" optimizing option actually favors "Size" sometimes, resulting in smaller, but slower code.
•vDos now comes in a 100% open source Base version, basically the 2017.08.01 version, w/o printing and executing Windows programs. These are closed source, as are further developments. vDosSetup will install the Base version and patch it to version 2018.05.01 if selected.
Major/noticeable changes to version 2017.08.01 – last opensource
•vDos won’t run anymore in Windows XP (it was then already somewhat crippled), it’s now “Windows 7 or later” to ease future Windows compatibility. vDos can however still be installed and used on Windows Vista.
•4DOS is no longer embedded as the default command processor. Hardly anyone used the 4DOS extra functionality, while it proved to be confusing to others. The previous internal command processor is reinstated, though largely revised. As a bonus vDos.exe is 28% smaller, vDos not executing the 4DOS 16-bit code, applications start slightly faster, while free conventional memory increases 4KB.
•A FPU (Floating-point unit) is added to the emulated CPU. Programs utilizing a FPU can run substantially faster.
•Protected mode support and bare extended memory (XMEM-EXT) usage is overhauled.
•More progressive idle detection (lowering the real CPU/core load) and responsive DOS mouse handling.
•The LOW= directive in config.txt is dropped. vDos detects faulty EXEPACKed programs itself, and applies the required memory adjustments to let them run properly.
•More robust and comprehensive pasting of Windows Clipboard text.
•Minor printing issues resolved. Added SEL = "" option to select the default Windows printer.
•Integrated WP Shell emulation to Windows Clipboard. Direct copy/append of WP’s selected text, paste text w/o the keyboard buffer roundabout and ASCII restrictions. Support of the VGA512 extended character set.
•COLS/LINS directive in config.txt accepts larger maximum values, determined by the formula COLS x LINS < 16,385 (a minimal font size is of course still enforced).
•[Win]+Ctrl+C copies text starting at the cursor (as long in the same fore/background color) to the end of the line. So it's now a more useful quick (to the end of) line or field copy.
•Loading a DOS COM executable, a free/available 64KB memory segment was just assumed at setting the initial programs SP value.
Major changes in version 2016.10.01:
•Calling 4DOS from within a program (shell command), vDos assumed the required free memory was the 4DOS executable image size. But 4DOS needs a bit more, so vDos could conclude no memory swapping was needed. In rare situations preventing 4DOS to load with insufficient memory (as it wouldn’t in “real” DOS).
With swapping, CPU registers were incorrectly restored on reentrance (documented DOS behavior, but…).
•If the extrabytes value (last page size) of an executable header was 0, vDos didn't load the actual last page (512 bytes).
•Due to a Windows bug, opening a file could return an incorrect error code when failing. If a DOS program explicitly tests for that code, it could go wrong (so far only reported with DataPerfect).
•The Windows API GetBinaryType function doesn't always return correct information for DOS executables hosted on non-Windows filesystems. This could cause vDos to let Windows handle those DOS programs.
•Establishing the "real" keyboard scan code, could result in an incorrect scan code being reported with specific key combinations and non-US keyboards.
•The CPU SHL byte-wise instruction didn't set the carry flag if needed. SAR was also incorrect due to a typo.
•Some protected mode programs were not supported anymore.
•The CMD command is enhanced (see 4DOS help text).
•The internal print processor also supports basic PCL printing directly. The bare SEL option is dropped, displaying the Windows printer selection dialog has become the default.
A SPOOL option is added to circumvent possible persistent print time-outs (or to collect DOS print jobs).
More accurate horizontal positioning, Windows fails in updating the position correctly at printing multiple characters.
•To improve readability, the vDos window has some extra white space (half a character) to the left and right. This can be turned off by the optional leading minus sign in the WINDOW = [-]… directive in config.txt.
•The internal font is replaced by an optimized/customized Cousine font. It now supports more characters (code pages) than any other font, and is also the default font for printing.
Major changes in version 2016.06.01:
An internal DOS-to-Windows print processor is added, mostly an external one won’t be needed anymore.
The emulated CPU is some 30% faster, though less with protected mode page mapping (FoxProX).
Even while accessing files, some DOS applications probe the keyboard that often, the vDos idle detection could kick in. Substantially degrading the performance of the DOS application.
A CMD command is added, linked to Windows CMD command line processor.
Enhanced executing Windows programs or opening files directly by a DOS program, the command line can be preceded with [WAIT][HIDE]. WAIT will suspend the DOS program until the Windows program is finished, HIDE will run the Windows program minimized.
DOS API CHDIR to file was accepted, FINDFIRST/NEXT files-only returned also directories.
If a program was swapped out of DOS memory, the MCB list could get corrupted on reentrance.
The function preventing open Windows search handles leftovers, could close an active DOS search.
Better/more complete support of (N)ANSI.SYS display escape sequences.
Some fine-tuning of the internal TTF font.
Improved text pasting from the Windows Clipboard.
Switched to development in Visual Studio 2015.
Minor changes in version 2015.11.01.
The 2015.10.01 version has a major bug; it stops working on November 1st !
4DOS help text updated.
Bit 18 (AC) of CPU flags masked out (486SX+ only detection).
Added Int 15-C9h: BIOS: Get CPU type and mask revision.
Int 2Fh-1A00h returns AL=FFh; fakes ANSI.SYS installed.
Added country code detection.
DOS API FindFirst (4Eh) returned code 02h (Windows FindFirst error code) if a file was not found, instead of 12h (DOS).
Right Alt key is reported as Left Ctrl + Right Menu by Windows. The fix for this prevented the Left Ctrl key status to be updated.
Satisfied search for command.com etc. if search attribute <> 7.
vDos didn't explicitly set the CPU flags register when a program exits.
Major changes in version 2015.10.01
vDos tests if the PC is joined to a domain, or a network drive is addressed. If so, and not registered, vDos will display a nag (the About popup).
The /log option is more informative, including invalid path references by a program.
Very rare to occur bug in memory optimization routines fixed.
Frequently switching the base address of page mapping in DOS protected mode didn't clear the TLB cache (intended, but it could cause problems). Enabling page mapping didn’t reset the CPU instruction cache.
The DOS API function Allocate Memory returned the size as the segment of the allocated memory block under some specific circumstances.
PIT controller is more accurate.
VGA graphics render routines consolidated in the final writes to the VGA memory banks.
Idle detection adapts to (successful) file reads and writes. The number of emulated CPU cycles is constant.
MS Visual C++ libraries are linked in (users with a fresh Windows 10 installation/system had to install these libraries by hand, if not already installed).
Functionality of SDL library is done by vDos itself, the external SDL.dll is no longer needed.
Localized keyboard support should be improved, screen updates faster (more, but technical stuff).
If a program hides the text cursor, its position wasn't always correct, resulting in pointless screen updates.
File operations use direct Windows API calls, instead of MS C++ runtime functions.
Opening files is faster, but only noticeable with slow drives or networks and massive openings of files.
“Ghost" files and folders could appear due to left behind open/active Windows search handles.
Multi monitor awareness.
Command processor replaced by 4DOS, tightly integrated in vDos. No changes should be needed to existing vDos installations, except that Windows environment variables have to be enclosed in a double %%.
Using XMS, 4DOS is swapped out of DOS (though it still reports swapping to XMS). Programs calling the command processor are also swapped out of DOS by vDos if needed.
The embedded FreeType library is updated to version 2.6.
Font size selection of external TTF files are in even point sizes and rounded pixel dimensions. Mostly to circumvent FreeType limitations in converting point sizes to fixed pixel dimensions.
Version 2015.04.10
This replaces version 2015.04.07 that had a major bug if EMS memory was used.
vDos crashed if no autoexec.txt file was present.
If a Windows GUI program is started, vDos doesn't wait for it to terminate as before. However, if non-GUI (CLI), it waits and returns the exit code of the program.
Version 2015.04.07
Configuration
Parsing config.txt checks for setting an option more than once.
Replaced the EMS = ON/OFF option by XMEM = [+] XMS|EMS|EXT. Defaulting to 4MB XMS, memory has to explicitly specified by the amount (max 63 MB) and kind.
New TIMEOUT = ON/OFF option defaulting to ON (the previous behavior of vDos). Setting it to OFF disables the timeout function with printing: vDos no longer regards the printjob to be completed after no data is received for 5 seconds. But instead relies on the DOS close device function to be called.
The Euro symbol is no longer by default assigned to ASCII value 128. There were too many exceptions, you have to specify EURO=ASCII (mostly 128) in config.txt.
DOS
The Z: drive is dropped. C: is initially set to the Windows vDos work directory. It can be changed (once) with USE. Command.com is faked to be in the root of C:.
Shell DIR would in some situations return LFN entries with a blank name.
And showed . (current) and .. (upper folder) entries for vDos drives assigned to Windows (non-root) folders.
The command shell checking for/getting keyboard input could damage DOS internal data.
DOS Execute set the flags in the stack of the newly loaded program. In some rare situations this could lead to malfunction of the new program.
Better detection of starting non-DOS (Windows) programs.
Device information returns EOF on input for LPT1-9. At least dBase IV checks for this.
Others
PIC controller essentially removed, PIT simplified, hardware interrupt scheme removed.
Internal TTF font extended to include code page 1252 and 862, thanks to Edward Mendelson.
FreeType library updated to version 2.5.5 and linked into vDos.exe (libfreetype-6.dll is no longer needed).
Added internal SDL_ttf library functionality (SDL_ttf.dll is no longer needed).
Displaying italic characters (WP and WS) temporary(?) dropped.
Support for localizing/translating messages in vDos removed, no one seems to use this.
Version 2014.10.19
“Hardware”
• XMS: included the first 64KB of extended memory (HMA).
• Corrected scan codes for Right Alt extended keyboard keys.
• Simplified and stripped down the video/VGA drawing routines, they are also a bit faster now.
• Further optimization of CPU memory access functions, vDos is in overall a 25% faster (a 10%
due to compiling for speed).
• CPU: added support for memory paging in protected mode (mainly to facilitate FoxProX).
• PIT controller stripped down to only channel/counter 0.
Config.txt
• Dropped HIDE=. The vDos window is hidden for 2.5 seconds or until keyboard input is expected.
• Added '-' switch to FONT= to display all lines/boxes for ASCII codes 176-223.
• Added MONO switch to COLORS= to fake a MDA card (underline mode etc.).
• Added LPTx/COMx= CLIP for reading from and writing to the Windows clipboard.
Interface
• Smoother switching between text and graphics mode, no ghosting of the previous mode contents.
• The title of the framed vDos window is set to the shortcut name it was started from.
• Added synchronization between an application accepting keyboard input and video refreshing.
• Simplified mouse driver routines and dropped the vDos text mouse pointer.
Printing
• The .asc and .txt files are supposed to be stripped of trailing white space. Eventually these were
however transported to the beginning of the next line.
DOS
• Added the CHCP (change code page) command.
• Set internal mediatype of Z: to hard disk.
• Int 21-67, set handle count: when called more than once the PSP file table could get messed up.
• Int 21-4409h (device) and 440Ah (handle) report drive being remote.
• Int 2F: Added function B800h (Network - installation check) and B809h (Network - get version).
• Int 2F: If XMS is converted to EMS, inquiring XMS is adjusted accordingly.
• Dropped throwing an exception when loading an executable with a SP value less than 4.
Version 2014.07.18
“Hardware”
• Major overhaul of the emulated CPU’s memory access functions.
• The emulated CPU gets more time to execute, so vDos will run faster. The idle detection function
is adjusted to work with this higher speed.
• The amount of XMS memory is enlarged to 63MB.
Config.txt
• umb = on/off
This option is dropped. 160KB upper memory is always available.
• ems = on/off (default off)
Converts all XMS to EMS 3.2 memory for applications that can use only EMS. If EMS 4.x is
needed, leave it off and use EMSMagic. Mind, EMS will then be much slower addressed.
Interface
• Sysmenu in framed window cleaned up from unused items.
• Better translating of non-ASCII characters from the Windows clipboard when pasting text
(Win+Ctrl+V).
• The 16 basic DOS text colors are locked and can’t be changed by a program.
Printing
• If the printer output would exceed 64KB characters, vDos got in an endless loop generating the
.txt Unicode text file.
• Converting Postscript printer output to PDF by pspcl6 had trouble with (very) large files. The use
of pspcl6 is replaced by gswin32c.
• A (Windows) program handling the printer output has now to be prefixed with ‘@’ to be hidden.
DOS
• The number of file handles is now standard the maximum of 255.
• Added DOS API int 21h-5Eh-AL=0, Network - get machine name.
• Reported space of any vDos disk is now 70MB free, 10MB used.
• Corrected handling of empty %1-%9 variables in batch files.
• Validation of filenames didn't strip trailing spaces from the base name.
• Something like "command /cfirst second" dropped second (all after the space).
• USE without a Windows drive/folder now returns the assignment of that DOS drive.
Version 2014.04.06
Config.txt
• color =
Replaced by the more versatile colors = <16 x color values> for the DOS text mode colors.
• lpt/com1-9 =
If at runtime the content is recognized as PCL or PostScript, #<lpt/com1-9>.pdf is created to be
used with something like:
LPT1 = pdfxcview.exe /print #lpt1.pdf.
That is handled by the Windows command interpreter.
If you want to start the program directly and to be hidden, enclose it with "":
LPT1 = "path\pdfxcview.exe" /print #lpt1.pdf.
• use
An eventual error message clarifies better why it didn’t work (when using Windows environment
variables).
• window =
Extended to window = [,x-pos:y-pos] to set the initial window position.
Embedded TTF font.
• Location of the underline position corrected.
WPDos
• Color values on screen are translated to text attributes (underline, italic if wp = .. > 0).
DOS
• COPY resulted in COPY , wiping out .
• A command like "test" and a found file "test" would try to execute that file.
• At the command line environment variables were not replaced by their values.
• Variables not found in the DOS environment are now looked for in the Windows environment.
• The VER command reports the vDos version.
• DOS API 21h-2Bh (Set system date) and 21h-2Dh (Set system time) always returned AL=FFh
(invalid date/time). It now validates the date or time and returns AL=0 if valid (date/time set, but
not really).
2014.03.14
Most of these changes were inspired by my communications with Edward Mendelson and so, to some
degree, related to WPdos.
Config.txt
• frame = on (default off)
Adds title bar and borders to the vDos window.
The system menu shows the [Win] commands and About…
The close button is active, but only terminates vDos if no files are open.
• font = filename
Replaces the vDos TTF font with filename.ttf.
The vDos font is preferred, it’s optimized for the DOS/VGA 8x16 raster font, but lacks localization.
It’s (again) embedded in the executable, no need for the external vDos.ttf file.
• lins = 24 up to 60 (default 25) and cols = 80 up to 160 (default 80)
Sets the numbers of lines and columns in text mode.
Any combination can be used, you have to see if this is useful for/supported by your application.
• window = 100
Starts vDos in “fullscreen” mode.
• hide = 0 up to 2^31 (default 5)
The vDos window remains hidden for this time in tenths of a second.
• wp = version (default 0)
WPdos: fixes an issue with device = clipboard, planned to show underlined/bold text etc.
Keyboard
• [Ctrl]+C/V and F11/12 have to be complemented by [Win].
Some applications needed the combination w/o [Win].
• [Alt][Enter] switches to/from “fullscreen”.
It’s still a window, set to the size of the desktop.
Note: [Alt] has to be released between switching (SDL bug).
• Fixed some incompatibility issues introduced with support of localized keyboards.
Copy/paste
• Text is exchanged with the clipboard using Unicode, so this should function for all code pages.
• The mouse can be used for copying text. Start selecting with [Win][Ctrl]+mouse click, releasing
the mouse button will copy the selected text to the clipboard.
Printing
• Added DOS support of output to PCL and PostScript printers.
Nothing to set, PCL/PostScript is determined by examining the output.
The (ps)pcl6.exe program is needed for this.
Output is converted to PDF and opened in the standard PDF viewer.
• Added device = clipboard, copies printer output to the Windows clipboard.
• Dropped device = , the files #device.asc (ASCII) and #device.txt (Unicode) are created
in the vDos working directory.
• Added device = <Windows command/program>, this is assumed if it’s not DOSprinter, dummy
etc. For instance “lpt5 = notepad #lpt5.txt” will open the output to lpt5 in notepad.
• Fixed issues with time-outs.
Miscellaneous
• vDos icon redesigned, unfocussed vDos window (top line).
• Extended/XMS memory is now 16MB (was 7MB).
• Localization of most messages (one has to make its own language.txt)
• Applications stalling when exiting from swapping out to DOS.
• Starting Windows programs with path: they don’t have to be in the current directory.
• Source code cleaned up, no fixed file paths.
Fixed some minor bugs.
Jos Schaars
2012, some 1.5 year before 2014.03.14
vDos’ first release there was 2014.03.14. Before that, it already ran fine for some 1.5 year on many Windows systems. So I thought to have published a largely finished product.
vDos highlights
The DOS application starts almost instantly in a scalable window and crisp TTF font (in text mode). Actually delayed (the almost) until it accepts input. The application is ready to be used.
Mature and no-nonsense, focuses exclusively on serious end-user programs, setup yours easily. No complex configuration to load drivers, set file handles, keyboard layout, language character set…
Run multiple DOS applications (simultaneously), if needed with their own specific configuration. No conflicts with eventual Windows NTVDM instances running alongside (like in a mixed network).
Also prints to Windows-only (GDI) printers, for instance a virtual printer to produce PDF’s.
Reliable, its DOS file system is (a subset of) that of Windows. No internal file caching/buffering corrupting data.
Secure, confines DOS applications to assigned local or network directories.
Network support with (verified) record locking, for multi-user DOS applications to function reliable.
Copy/paste Windows text to DOS and vice versa, transparent conversion of Windows Unicode-DOS ASCII text.
Fully portable, small footprint and little impact on Windows resources.
Knowledgeable actual support by a public forum or private email with swift responses.
Beta Was this translation helpful? Give feedback.
All reactions