c:\test\> _





4DOS Versions
4NT Versions
4OS2 Versions
4DOS Tips & Tricks
4DOS Docs
4DOS Batches, Aliases, Functions
  B. Schneider's
  K. Meinhard's
4DOS Links
4DOS Tools



DOS Alternatives

DOS Hardware

DOS Tools

DOS Programs

DOS Gems


Search Engines

Contact me

Back to Homepage

4DOS Version 2 History

This page can be downloaded in MS-Word .doc format.

4DOS Change Log - this log describes changes and bug fixes to version 2.nn of 4DOS

 Version 2.0a released 2/23/89
  • Hidden .EXE and .COM files will now be executed properly; previously 4DOS could not find them.

  • Programs which use the path stored at the end of the environment under DOS 3.x will now run properly if run from the directory they are stored in. (This caused problems with some programs in PCTools version 5.0.)

  • Problems with screen page length on systems which are not 100% IBM compatible (e.g. ITT, AT&T) have been fixed. Users with such systems may need to use the version of ANSI.SYS that came with their system instead of the version that comes with 4DOS. The 4DOS program files have been fixed to handle the screen length correctly, but 4DOS's ANSI.SYS may still have trouble.

  • When 4DOS is run with the /C switch the command to be executed no longer needs to be separated from the /C with a space. This fixes some problems with programs which execute other programs via the command processor.

  • Command lines with no arguments are now passed correctly in swapping mode. Previously such lines would cause a single space rather than a null argument list to be passed to the commands. This caused trouble with argument parsing in some programs.

  • I/O operations which generated undefined critical error codes now produce the error message "Undefined error on device [name]". Previously these generated garbage characters in the error message.

  • GOTO :label and GOSUB :label now work correctly. These commands were failing to handle the ":" prefix on the label correctly, resulting in "label not found" errors.

  • ANSI.SYS now correctly redefines keys when the ESC[...p control sequence is used. This occasionally failed in the earlier version of ANSI.

 Version 2.0b released 2/28/89
  • PROMPT: Added $P for path in upper case, $p still does lower case.

  • Append redirection (using >>) was not properly overwriting the ^Z at the end of an old ASCII file. This has been fixed.

  • The "isdir" condition in IF statements would return true for the root directory of an invalid drive (e.g. Z:\). It now returns false if the drive is not legitimate.

Version 2.1 released 5/15/89
  • ALIAS names can now be truncated by embedding a "" in the name.

  • ALIAS expansion can be terminated by prefixing a command with a "".

  • ATTRIB logic has been completely revamped. ATTRIB will now only change the attributes specified; the other attributes will be preserved. Also the attribute will only be written back to the disk if it was actually changed.

  • CLS now detects whether ANSI is installed, and will clear the screen properly with or without ANSI.

  • COPY now deletes the partial target on an error (usually disk full).

  • COPY /A and /B options are now supported.

  • CTTY is now supported.

  • Descriptions are now passed along with the files when doing a COPY, RENAME, or MOVE, and are deleted when a file is deleted with DEL or ERASE.

  • DIR now expands .ext to .ext.

  • DIR has two new options: /Oi will sort on the descriptions; /C will display all of the filenames in upper case. Also, /J now removes the '.' in the filename, just like COMMAND.COM.

  • GLOBAL has a new option, /I, to ignore the result code returned by the specified command and continue scanning the directories.  Without a /I, GLOBAL will abort if the command returns a non-zero result.

  • GLOBAL was occasionally hanging the system if aborted at just the wrong point with a ^C or ^Break. This should no longer happen.

  • HELP has been enhanced to include mouse support and a "sticky" menu cursor.

  • LIST will now print the entire file on LPT1 if F4 is pressed.

  • LIST and SELECT determine the display attribute to use from the first character on the screen. They will now detect if this character has an "invisible" attribute (e.g. black on black) and if so use white on black for the display.

  • LIST and SELECT are now DesqView-aware, and should run properly in DesqView windows smaller than the full screen.

  • PROMPT $h was doing a non-destructive backspace, now it does a destructive backspace.

  • PUSHD with no parameters now gives the correct usage message.

  • SELECT can now sort the directory by description with the /Oi switch.

  • TIMER now includes the time of day in the output text.

Command Line Editing and Recall

  • Delete word left (^L) and right (^R or ^Backspace) have been added to the command line editor.

  • When viewing a history list entry it can now be deleted with ^D.

  • Command line recall now recalls the correct command if command completion is used just after re-executing a previous command from the middle of the history list.

  • Relative paths will now work properly with F9 filename completion.

  • Batch Files

  • Batch files are now closed before an external command is executed. This should fix problems with TSRs permanently acquiring file handles.

  • Batch files now run much faster.

  • The current ECHO state is now inherited by called batch files.

  • Batch files will no longer give a "Cancel Batch File" prompt when a program returns with error level 3.

  • The %& variable which substitutes all command line arguments now works in batch files as well as aliases. When %& is used in a batch file it substitutes all arguments from %1 on, but does not substitute %0.

Environment and Environment Variables

  • Environment variable expansion has been changed to support the COMMAND.COM approach (%var%). An environment variable is now terminated either by a %, or by a non- alphanumeric character.  Aliases and batch files may need to be edited slightly to accommodate this change.

  • "-" has been added as a legal environment variable name character.

  • Master environment: In swapping mode 4DOS can now create a standard COMMAND.COM-compatible master environment block located in low memory just above the loader. This is invoked by using /M instead of /E to specify environment size.

  • Both the /E and /M switches now support environment increments. This will force a specified amount of FREE environment space in a secondary shell.

  • Swapping and Secondary Shells

  • Transient copies of the shell (4dos /c command...) no longer print a blank line after the command.

  • The swapping options are now E for EMS, D for disk, B for best available method, or N for no swapping. B is the default, and will cause 4DOS to try EMS first, then disk.

  • If the requested swap method is not available 4DOS now loads in normal low-memory resident mode (previous versions remained in high memory under these circumstances).

  • Secondary shell swapping added, controlled by the environment variable 4DSHELL, which may contain the /S, /L, /M, and /E options.

  • When EMS swapping is used 4DOS now saves and restores the EMS page map. This should fix problems with programs which assume the command interpreter does not change the page map.

  • The drive and directory for disk swapping can now be fully  specified by entering a path after /S:D or /S:B. This allows swapping to drives other than the boot drive, including RAM disks.

  • Disk swapping will now work properly with multiple copies of 4DOS started by multitaskers and / or nested shell operations.  Previously multiple copies of 4DOS could not use disk swapping without interfering with each other.

  • Disk swapping will now fail if the swap disk is full. Previously it would appear to be OK, then hang.

  • Disk swap files are now deleted on exit except in the primary shell.

  • All swap files are now hidden system files to fix problems with the swap file being moved by disk defragmenters and reformatters.

  • The integrity of the disk swap file is now tested every time it  is used. If 4DOS detects that the file has been corrupted the system is halted and must be rebooted. This fixes problems with defragmenters and reformatters that move or overwrite the swap file even though it is a hidden system file.

  • Disk swapping to a hard disk is significantly faster.

  • 4DOS.COM will now look for the 4DOS EXE files in the path specified by /L:, or by COMSPEC if it is present and /L: is not. If these paths are not available or the search fails it will thenlook in the current directory.


  • The PSP chain pointer is now handled correctly in both primary and secondary shells. This fixes a number of miscellaneous compatibility problems.

  • 4DOS no longer uses an interrupt in the 60 - 66 range. All communication is now via the standard multiplex interrupt, 2F. For this reason the /I: switch on the 4DOS command line or SHELL= line is no longer supported.

  • ANSI.SYS is no longer distributed with 4DOS. It was causing too many compatibility problems and there are many good public-domain, shareware, or commercial versions available.

  • KEYSTACK.SYS has been modified to work properly with DesqView release 2.2, NewKey, and other programs which use the enhanced keyboard BIOS calls.

  • Known compatibility problems with DOS APPEND have been mostly fixed.

  • Known compatibility problems with InvisibleNet have been fixed.

  • Some problems with directory names on Novell networks have been fixed.

  • WordPerfect Library Shell should now be able to use 4DOS as a shell to execute commands. At times it passes "4dos /c=[command]" instead of the standard "4dos /c [command]", and this was confusing 4DOS.

Miscellaneous and Performance

  • An FCB parsing bug has been fixed. This would cause some DOS external programs (especially XCOPY) to fail when two filename arguments were given and the first one included a path.

  • Entering an incorrect command which generates an "unknown command" error now sets the ERRORLEVEL to a non-zero value.  Previously it was left at zero.

  • TYPE, GOTO, GOSUB, and TEXT have been speeded up significantly.

  • Redirection of both input and output now works properly. Previously under some circumstances redirection of both would only do whichever one was specified first.

  • Critical error handling now works properly when A>bort is given as a response to a critical error while executing a 4DOS internal command (e.g. DIR on an empty floppy drive). Previously this caused some systems to hang.

  • Cursor shape is handled better to correct for bugs in the old IBM PC BIOS.

  • When 4DOS is loaded in swapping mode you can now detect its presence from within your program via an INT 2F call.

Version 2.11 released 5/26/89
  • The MOVE command will now give an error message whenever the original file cannot be deleted; previously it did not (for example, when MOVEing a read-only file). The new target file is left intact when this happens.

  • A bug introduced in version 2.1 caused problems when the last line of a batch file did not have a CR/LF before the end of file mark (^Z). This has been fixed.

  • Our last remaining Novell compatibility problem has been fixed; as far as we know 4DOS now works correctly and without generating spurious error messages on Novell networks.

  • A bug in the 4DOS "DESQView-aware" code in version 2.1 caused double-spaced screen displays in LIST and SELECT if 4DOS was running in a DESQView window with "Writes text directly to screen" set to "Y". This has been fixed.

  • The beep generated by keying errors (e.g., attempting to page or scroll beyond the end of a file in LIST) has been shortened from the typical 1/2 second to less than 1/10 of a second. This will prevent a long sequence of beeps after multiple keying errors.

  • TYPE will now work properly with files containing NUL (binary 0) characters.

  • Temporary files used for pipes are now placed on the drive and directory specified by the TMP environment variable. If TMP is not specified they are placed in the root directory of the boot drive. This eliminates problems with pipe files when booting from floppies, and allows control of pipe file placement on networks.

Version 2.2 released 7/5/89
  • Switch problems in version 2.11 have been fixed; all command switches should now work properly.

  • Pipe problems in version 2.11 have been fixed. It is no longer necessary to set the TMP environment variable to specify a location for pipe files (though TMP can be used for this purpose if desired). Also, using multiple pipes within a single command will now work properly.

  • Executable extensions added. If a command is not found as an internal command or EXE, COM, or BAT file 4DOS will search for other files of that name, and then look for an environment variable which contains the file extension. The content of the environment variable is assumed to be the name of a command to execute on the file that was found. This allows enhanced batch file processors like Personal Rexx to find their files, and can be used to invoke the appropriate processor for any file.

  • 4DOS now correctly traps (and ignores) the hardware divide by zero interrupt if an application does not handle the divide by zero condition itself. Previously there could be problems if an application caused a divide by zero error but did not do its own divide by zero error handling.

  • Redirection with noclobber now works properly with devices. Before it was claiming the device "already existed" when redirecting output to a device with noclobber on.

  • Leading spaces on the command line are now removed before the history match tests.

  • A batch file which is deleted, renamed, or otherwise disappears while it is active will now generate a "Batch file missing" error and abort if the file was located on drive C: or above. Missing batch files on drive A: or B: will continue to generate the "Insert disk ..." error.

  • You can specify portions of the command line in an alias or batch file by specifying %n& where "n" is a numeric argument. For example %3& selects the remainder of the command line from the third argument on.

  • Minimum environment size is now really 512. It was stated as 512 before, but in fact would not go below 1024 in most circumstances.

  • Environment information is no longer lost when a secondary shell is loaded at an address above 512K.

  • ALIAS /R [filename] option added. This retrieves the aliases from the specified file. The format of the file is the same as the format of the ALIAS command, just without the word "alias",e.g. "d dir" etc.

  • BEEP now supports optional frequency (Hz) and duration (clock ticks) arguments. This allows you to play simple music etc. in batch files. For example: beep 440 9 will play middle A for 1/2 second (1 tick = 1/18 second, 9 ticks = 1/2 second). If no arguments are specified the beep will be at 440 Hz for 2 ticks (= about 110 ms). If the frequency is below 20 Hz no beep is generated; this allows you to use "BEEP 0 nnn" to delay for nnn clock ticks in a batch file.

  • COPY now has a /M option which copies only modified files. This option will not reset the archive bit on the source file(s).

  • DEL now forces a /P anywhere on the line to apply to the whole line.

  • DEL now says "Deleting [filename]" instead of just listing the name.

  • DEL switches can now follow arguments without intervening white space.

  • DIR displays the volume label before the first directory listing in upper case.

  • DIR /D now displays headers and summaries only for those directories which contain matching filenames. This makes DIR much less verbose when using it to find files across a whole disk or a group of subdirectories.

  • DIR /V will display multi-column directories sorted vertically rather than horizontally. The sort is over all filenames, not per display page.

  • FOR will now stop on a ^C when running batch files and internal commands.

  • FREE now displays the total disk space, total bytes used, and total bytes free.

  • GLOBAL SELECT will now continue if you press ESC when viewing the SELECT list, but not if you press ^C.

  • IF ERRORLEVEL now supports comparisons (==, GT, etc.). The original syntax (IF ERRORLEVEL n) will still work, and is equivalent to IF ERRORLEVEL GE n.

  • LIST now prints a formfeed following a file print with F4.

  • LIST saves the search string between commands so that F2 can be used in subsequent commands to repeat a search. This is particularly useful with SELECT LIST.

  • PAUSE now flushes the keyboard buffer before waiting for a keystroke.

  • The default prompt is now $n$g on drives A: and B:, and $p$g on all other drives. This cuts down floppy disk activity, and avoids critical errors when the current drive is switched to an empty floppy drive. The default is only $n$g on drives A: and B: if no explicit PROMPT command has been issued. If the prompt has been set explicitly to any string -- including the default $p$g -- it will remain that way on all drives.

  • PUSHD with no arguments now saves the current directory. This should help those who want to combine 4DOS PUSHD / POPD with Norton NCD or other similar path utilities.

  • RENAME changed to work like COMMAND.COM: if no path is specified for the target file name, the source file is left in its original directory, rather than moving it to the current directory.

  • RENAME switches can now follow arguments without intervening white space.

  • SCREEN now checks for valid row and column numbers and gives an "invalid parameter" error if either value is out of range.

  • SELECT now displays the number of files & Kbytes marked on the second line of the display.

  • SELECT will put all selected filenames on the same command line if square brackets [] instead of parentheses () are used to delimit the file specification. If too many files are selected to fit on a line then a "command line too long" error will occur.

  • SETDOS /C with no argument will now be ignored, rather than confusing 4DOS.

  • SETDOS /Rnn will set the number of screen rows explicitly. This should help with non-standard displays.

  • SETDOS /Ss:e will set the cursor for the default line editing mode to start on scan line "s" and end on scan line "e".

  • TIMER /S ("split") shows the elapsed time while the timer isrunning, without turning it off. If the timer is not running it will be started regardless of whether /S is specified.

  • TYPE will work properly with lines over 255 characters, and for lines over 80 characters when using /P.

  • TYPE switches can now follow arguments without intervening white space.

  • VOL has been fixed to handle periods in volume labels correctly, including VDISK labels.

 Version 2.21 released 9/6/89
  • All 4DOS beeps now explicitly turn interrupts on before the beep is started. This should fix problems with PC Magazine's ANSI.COM version 1.2 (ANSI.COM version 1.3 will also fix this problem) and some rare systems which start programs with interrupts off. In both cases the symptom of the problem was a system hang with the beep running, requiring a cold reboot.

  • 4DOS.COM's handling of long command lines has been improved. In previous versions space was taken for /E and /H parameters even if they were not specified by the user. This limited the maximum command tail to about 105 characters, restricting the use of long commands in MAKE files. In version 2.21 MAKE command lines will work properly up to about 120 characters.

  • DIR now allocates memory used to hold the directory information in bigger chunks. This should help solve problems with some versions of DOS and some networks, which could get confused by the memory allocation requests DIR was issuing in large directories.

  • SELECT COPY got confused about file names when COPYing from a directory other than the current directory to a directory other than the current directory. The problem only occurred when copying multiple files with non-blank descriptions. SELECT COPY now works properly.

  • SELECT will accept command lines with only a single argument, e.g.:

    SELECT (*.COM)

    can be used to run one or more .COM files.

  • TYPE\filename (ie TYPE without a space before the argument) would return to the prompt without typing the file and with no error message. It now types the file properly.

  • The Y command would not accept more than one file in its argument list. This problem has been fixed.

Top of Page - Home