For a Greener Environment (PC Magazine Vol 5 No 4 Feb 25, 1986 PC Tutor) You may encounter the "Out of Environment Space" error message when using the SET command to set up the environment. The DOS manual mentions a limit of 127 bytes if a resident program has been loaded, but even without using any resident programs, you may have the problem. If you have not loaded any resident programs, the DOS manual is correct: you can sit at your keyboard all day and enter multitudes of SET commands, gradually filling up your environment to its 32K-byte maximum limit. Of course, normal people don't do that. Normal people put a PATH command, a PROMPT command, and a bunch of SET commands in an AUTOEXEC.BAT file. The whole purpose of batch files is to avoid having to type a lot of commands manually. But, as soon as you run an AUTOEXEC.BAT file, the environment becomes limited to 160 bytes. When COMMAND.COM runs a batch file, it allocates a small area of memory to store the batch file name and other information. This is needed to return to execution of the batch file after running commands and programs within the batch file. For AUTOEXEC.BAT, this area of memory is placed 160 bytes after the beginning of the environment that COMMAND.COM maintains. Thus, it acts like a brick wall, effectively preventing the expansion of the environment beyond 160 bytes. DOS 3.1 does have a way to enlarge the environment. What you must do is use a CONFIG.SYS file to specify COMMAND.COM as a SHELL. This is done with a line in the CONFIG.SYS file that reads: SHELL=COMMAND.COM /P /E:62. Without the /P parameter, COMMAND.COM would not execute the AUTOEXEC.BAT file. (This is something that goes back to DOS 2.0.) The /E parameter is new with DOS 3.1. The value following the colon is the number of 16-byte paragraphs reserved for the environment. The default is 10 paragraphs (160 bytes) and the maximum is 62 (992 bytes). (If you set the value below 10 or above 62, COMMAND.COM will use the default of 10.) Where can you find this documented? If you load DOS 3.1 COMMAND.COM under DEBUG and unassemble the code beginning at offset address 0E16, it is obvious. The DOS environment has yet to be fully exploited. Some compilers and assemblers search the environment for directories where library and include files may be found, but the environment can also serve as an all-purpose configuration file for application programs, as well. An undocumented feature of DOS 2.0 and above allows environment strings to be used as replaceable parameters in batch files -- most usefully in conjunction with the IF statement. For example, if you have a batch file that must do one of two different things depending upon whether ANSI.SYS has been loaded or not, you could use SET to create an environment string with this information: SET ANSI=ON or SET ANSI=OFF. You could then check for his in a batch file, with the statement: IF %ANSI%==ON GOTO label. If COMMAND.COM finds ANSI in the environment, it replaces it with the set string when the batch file is processed. If ANSI had been set ON, the GOTO is executed; if set to OFF, the next statement is processed. This undocumented feature works with DOS versions 2.0, 2.1 and 3.1, but a bug in 3.0 makes COMMAND.COM stop reading the batch file line after it replaces the parameter. For Environmentalists (PC World April 1986 Star-Dot-Star) DOS generally provides an insufficient amount of environment string space. Environment string space is a block of memory that DOS reserves to hold names and parameters, such as COMSPEC = parameter, PATH = parameter(s), and PROMPT = parameter(s). This arrangement enables all DOS commands and applications to be "aware" of the current status of the environment (see the SET command in the DOS manual). COMMAND.COM can be patched to expand that space, but DOS 3.1 includes an undocumented parameter that does the job more efficiently. That parameter is /E:nn, where nn is a decimal value indicating the number of 16-byte paragraphs to be allocated as environment space. The minimum value permitted is 10 (160 bytes), the maximum is 62 (992 bytes). To use this feature, put the statement: SHELL = [d:][path] COMMAND.COM /P/E:nn into the CONFIG.SYS file on your DOS disk. [d:] and [path] represent the disk drive and path you want DOS to use when loading COMMAND.COM, and nn represents the desired number of 16-byte paragraphs to be allocated to environment space. When you start the computer, the SHELL command will load COMMAND.COM using the /E parameter to allocate the specified amount of environment space and the /P parameter to make COMMAND.COM the primary command processor. Note that if you specify an invalid number of paragraphs, you will not receive an error message; the allocation simply will not take place. This is an undocumented feature -- use it with caution. ----------------------------------------------------------------- RAM Disks Take Command (PC World The Help Screen June 1986) A user put COMMAND.COM in a RAM disk so that DOS could reload COMMAND.COM quickly rather than issue the prompt "Insert COMMAND.COM disk in drive A: and strike any key when ready" or "Invalid COMMAND.COM in drive A:". The solution for a way to tell DOS that COMMAND.COM was on drive C: was to issue the command COMMAND C:\ after copying COMMAND.COM to drive C:. The explanation: COMMAND.COM is the DOS command processor. It loads automatically from the default drive - usually drive A: - when you start a computer. The command COMMAND C:\ causes DOS to load a new copy of COMMAND.COM from the root directory of drive C:. This secondary command processor runs under the first. DOS maintains an environment table that stores the drive, directory, and name of each command processor it loads. When it needs to reload a particular command processor, it checks the related environment table to locate the appropriate command processor file. While this technique reloads COMMAND.COM from drive C:, it wastes memory. You don't need to load a secondary command processor. You only need DOS to use the copy of COMMAND.COM that resides on drive C:. If you're using DOS 3.0 or later, load it as you before you tried your solution. Next, copy COMMAND.COM to drive C:. Follow that by typing SET COMPEC=C:\COMMAND.COM to change the environment table. (You can view the contents of the environment table by typing SET .) DOS will now use the copy of COMMAND.COM in drive C: whenever it needs to reload the command processor. In earlier versions of DOS the SET command does not work right. You can use CMDFIX.COM (PC World July 1985 Star-Dot-Star) instead of the SET command to change the COMSPEC entry in the environment table.