CONFIG.SYS - Commands

From EDM2
Revision as of 02:37, 4 February 2020 by Ak120 (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
The Config.sys Documentation Project
  1. BASEDEV Statements
  2. CALL Statements
  3. DEVICE Statements
  4. IFS Statements
  5. OS/2 Commands
  6. DOS Commands
  7. RUN Statements
  8. SET Statements
  9. PSD Statements
  10. Other Information
  1. Programs
  2. Hardware
  3. List of Statements


The AUTOFAIL command disables pop-up messages for hardware errors.

Default settings
Value can be YES or NO.
AUTOFAIL=NO - Popup messages are displayed.
AUTOFAIL=YES - Popup messages are not displayed.

If this parameter is not set it defaults to NO.

This command can't be run from an OS/2 prompt.
Paul Kurr writes: "I set this value to YES on my machine so that I'm not interrupted with those pesky drive not ready pop-ups and such. AUTOFAIL=YES takes the "first" option in those windows presented (usually return error code to program).

"This can be seen most easily when running WIN-OS2 with a CD-ROM installed - either empty or with a music CD in the drive. With AUTOFAIL=NO (default) OS/2 pop's up the window stating that my drive "E" is not ready. With AUTOFAIL=YES, the first "selection" from that error is executed - returning the failed drive status to WINOS2, which just keeps running fine."


The number represents a scale factor for the frequency of clock ticks. The theory is that CLOCKSCALE=4 will speed up some apps (maybe Netscape and/or Java).

<value>: The choices are 1 (the default, which is the old behaviour), 2, and 4.

Requires newer CLOCK01.SYS from 2002-04-16 fixpaks or later.


Setting introduced with Kernel 14.093i. Closes file handles > 2 before starting PROTSHELL doing the close reduces the number of leaked file handles by a few in some systems. The bad news is that it also makes PMDD$ trap on boot on other systems.



This sets up the used character encoding for system.

  • <primary> - This is the default codepage number.
  • <secondary> - You can switch to the secondary codepage with the command CHCP.

See the OS/2 Reference book for a complete list of parameters.

437=US English codepage and 850=multinational codepage. The multinational codepage contains most of the accented letters used in various European languages. Several other codepages that can be supported by your version of OS/2.

Japan, Korean and Chinese require a special version of OS/2 and special hardware.
The choice of code page is made at installation time and should only be changed by using Selective Install.
If there is no CODEPAGE statement in your config.sys, your keyboard will use an alphabet based on the COUNTRY statement found earlier in your config.sys, but your screen and printer will use their built in defaults.
Arabian, Greek, Hebrew, Thai and DBCS codepages are only fully supported in OS/2 versions developed for those countries.
In Warp 4 are many new codepages, codepage 1004 is according to the Windows ANSI Standard, this is important for an correct interpretation of German 'umlauts' and to convert documents between Windows and OS/2.


The Country statement customize your system for the desired country. It effects the default format for date, time and currency.

  • xxx - This is the three digit long country code. Here is a list of available country codes:
    • Albania 355
    • Arabic-speaking 785
    • Asia English 099
    • Australia 061
    • Austria 063
    • Belgium 032
    • Bosnia 387
    • Brazil 055
    • Bulgaria 359
    • Canada English 001
    • Canada French 002
    • China 086
    • Croatia 385
    • Czechoslovakia 421
    • Denmark 045
    • Finland 358
    • France 033
    • Germany 049
    • Greece 030
    • Hebrew-speaking 972
    • Hungary 036
    • Iceland 354
    • Ireland 353
    • Italy 039
    • Israel 972
    • Japan 081
    • Korea 082
    • Latin America 003
    • Netherlands 031
    • New Zealand 064
    • Norway 047
    • Poland 048
    • Portugal 351
    • Romania 040
    • Russia 007
    • Slovak 422
    • Slovenia 386
    • South Africa 027
    • Spain 034
    • Sweden 046
    • Switzerland 041
    • Taiwan 088
    • Thailand 066
    • Turkey 090
    • United Kingdom 044
    • United States 001
  • The second parameter points to the COUNTRY.SYS driver.


See: CONFIG.SYS - DEVICE Statements

DEVINFO (Keyboard)

Prepares the keyboard for codepage switching.

Layout can be any of the following values:
  • Albania (sq)
  • Arabic-speaking (ar)
  • Arabic-speaking 101 (ar470)
  • Belgium French (be)
  • Bosnia/Herzegovina (ba)
  • Brazil (br)
  • Brazil 101 (br274)
  • Bulgaria (bg)
  • Bulgaria 241 (bg241)
  • Canada English (ca)
  • Canada French (cf)
  • Croatia (hr)
  • Czech Republic (cz)
  • Denmark (dk)
  • Estonia (ee)
  • Finland (su)
  • France (fr)
  • Macedonia (mk)
  • Germany (gr)
  • Germany (de453)
  • Greece (gk)
  • Greece 101 (el459)
  • Hungary (hu)
  • Iceland (is)
  • Iceland 101 (is458)
  • Israel (he)
  • Italy (it)
  • Italy enhanced (it142)
  • Japan (jp)
  • Korea (kr)
  • Latin America (la)
  • Latvian (lv)
  • Lithuanian (lt)
  • Netherlands (nl)
  • Norway (no)
  • Poland (pl)
  • Poland programmer's (pl457)
  • Portugal (po)
  • Romania (ro)
  • Russia (ru441)
  • Russia 443 (ru443)
  • Serbia/Montenegro (sr)
  • Slovakia (sk)
  • Slovenia (sl)
  • Spain (sp)
  • Sweden (sv)
  • Switzerland German (sg)
  • Switzerland French (sf)
  • Taiwan (tw)
  • Thailand (th)
  • Turkey (tr)
  • Turkey (tr440)
  • Ukraine (ua)
  • United Kingdom (uk)
  • United Kingdom alternate (uk168)
  • United States (us)
  • United States dvorak (usdv)
  • United States international (ux)
  • United States left-handed (usdvl)
  • United States right-handed (usdvr)

See OS/2 Reference manual for character set codes.

Keyboard Layer/2 is a free alternative keyboard layout switcher between national and Latin keyboard layouts for OS/2 Warp.

DEVINFO (Screen)

Prepares the display for codepage switching. This command prepares your monitor to display information based upon the CODEPAGE specification. VIOTBL.DCP is the file that contains the video fonts for displaying characters for each of the CODEPAGES supported by OS/2.

<device>: Device can be any of the following values:
  • CGA
  • EGA
  • VGA
  • BGA


This sets up the disk cache for FAT formatted hard drives but not for floppy drives.

  • <size> - Size can be in the range from 48 to 14400 or D. If set to D the cache size is 5% of RAM up to a limit of 4 Mbytes. Default = D. The size is expressed in Kbytes.
  • LW - If this parameter is set, the lazy writing of data to disk is enabled. With lazy writing all disk writes are temporarily held in memory until the system is not busy. Lazy writing increases performance, but be careful as an unexpected power off may cause data loss.
  • <threshold> - Specifies the threshold size. All files which are bigger than the threshold size are NOT cached. Set it to 32 which is reported as an optimum value. Threshold can be in the range from 4 to 128. This value is expressed in sectors with a size of 512 Byte. The default is 4 sectors, i.e, all files greater than 2048 Bytes (4 asterisk 512) are not cached.
  • AC:<drives> - The AC parameter specifies which drives should be checked by chkdsk.exe during start up after an improper shut down. Add only the drive letter without the colon. If you want to run chkdsk.exe on a drive at every start up add a plus sign (+) in front of the drive letter.
To use 1 megabyte of space as your disk cache size for FAT drives, enable lazy writing, disable the autocheck feature and use the default of 2048 bytes for the threshold size, use this line: DISKCACHE=1024,LW
The following line sets the DISKCACHE to 512 Kbytes, a threshold size of 16 Kbytes, turns lazy writing on, autochecks drive C: after improper shut down and autochecks drive F: at every start up: DISKCACHE=512,LW,32,AC:C+F
This DISKCACHE command uses 10% of RAM for the cache, disables lazy writing, uses 4 Kbytes as the threshold size and enables autocheck on every startup for drives C: and E: DISKCACHE=D,8,AC:+C+E
Important note
Under Warp, during installation the letter "D" is used instead of the usual numeric value. On the "nets", several users have reported that their disk I/O was significantly reduced when they replaced the "D" with a value as was the case in OS/2 2.x.
This command is for hard drives only. DISKCACHE does not cache FAT based floppy drives.
If you are only using HPFS, then you should REM this statement and save 64k of RAM (don't delete, you may need or want it later). If you have a FAT partition on your hard drive and you REM this statement, OS/2 will automatically set up a 64k cache by default.

NOTE: From the IBM Fixpak40. TRAP 000E WITH REMOVABLE MEDIA. This trap will happen to anyone who uses DevIoCtl that does things like EJECT, PROTECT, etc. for Removable Media and has removed all FAT cache from CONFIG.SYS. Workaround is to add DISKCACHE=64,LW to CONFIG.SYS. This problem will be fixed in Fixpak 41 and above.

TIP: If you have the RAM, increase the size to improve system performance, but don't get carried away by using to much of your RAM; this can hurt performance.

If you have formatted your hard drive(s) with only FAT partitions, the default cache size in this statement will be that noted under ONE FILE SYSTEM. If you have both FAT and HPFS partitions, then OS/2 defaults to the cache size noted under TWO FILE SYSTEM. The file system which uses the greatest amount of your disk space gets the larger default value.

10 - 16            512/512         1024
17 - 32           1024/1024        2048
  • Defaults in Warp are different and are shown as the second number. On systems with more than 8MBs of RAM, the default is 10% of available RAM to a maximum cache of 4MB.


Prevents fragmentation of the shared environment, allowing more efficient use of virtual memory. New setting introduce in Warp Server for e-business.

On - Default Value.

The DLLBASING prevents fragmentation of the shared environment, allowing more efficient use of virtual memory. The DLLBASING may be set to ON or to OFF. If DLLBASING is set to ON, then the system will attempt to honour the base addresses (preferred load addresses) for DLLs. Honouring base addresses for DLLs is preferred because it improves system performance for loading DLLs. However, sometimes there is an interaction between the DLL basing and an application's memory usage which will cause the system to run out of private memory. In this case, you should set DLLBASING to OFF so that the system will ignore base addresses for DLLs. The system performance for loading DLLs may degrade marginally, but there will be more free private memory.

TIP by Istvan Kovacs: ON: better general performance; OFF: more private memory (just in case an app needs it)


Activates the Dump Process. Any application process that traps will cause a process dump. The information will be written to a dump file named where xxx is an index that is incremented each time a new process dump is created. This dump file resides in the root directory of drive specified.



Will allow device drivers, etc., access to the memory above 16mb early in boot. Previously, this was only available after DD and IFS init was completed. This has various implications when enabled:

a) large VDISKs are possible. I tried DEVICE=\os2\vdisk.sys 16000
b) AHA154X.ADD may do bad things to your system. Don't even ask.
c) There may be some settings of HPFS386 cache that are incompatible.

Setting used with kernel 14.062e or higher

NOTE: This feature is experimental and may not work with later kernels.


Users of some security-related ISS (security) packages such as Utimaco's SafeGuard Professional, will have to add this line to config.sys. This works around a limitation of some legacy ISS drivers. This is not a problem for the Tivoli ISS driver.


New command introduced with Warp 4 Fixpak 13


SMP kernels could not be RIPL-booted. As part of this, there is a new CONFIG.SYS parameter I13PAGES= available. Adding I13PAGES=1 to CONFIG.SYS (note, no SET) reduces the memory usage of the mini VDM processes used by IBM1S506.ADD and the GRADD drivers. This becomes important in RIPL-boot situations.


Only available with Kernel 14.062 or higher


You can specify Java options and system properties by creating an environment variable called IBM_JAVA_OPTIONS and setting it to the values you require. Any Java options or system properties specified must be preceded by a space, except for the first option. For example, you could set IBM_JAVA_OPTIONS as follows:

IBM_JAVA_OPTIONS=-Dmysysprop1=tcpip -Dmysysprop2=wait

If you specify the same options or properties from the command line (or from a JNI program), then these will take precedence over the options and properties specified by the IBM_JAVA_OPTIONS environment variable. The only exception to this rule is when you specify -Xt, -Xtm, or -Xdebug. All of these imply that no JIT should be used.

Be aware that:

IBM_JAVA_OPTIONS will have no effect when running with JNI_VERSION_1_1. Java options should be specified in their current format, for example, -verbose:gc rather than -verbosegc.

The system property ibm.jvm.bootclasspath allows an additional search path to be defined. The value of this property is inserted between any value defined by -Xbootclasspath/p: and the bootclass path. The bootclass path is either the default, or that defined using the -Xbootclasspath: option.


This allows applications to bypass the system and work directly with the hardware.


Default settings:

Value can be YES or NO or a list of specific programs. If set to NO, no programs can access the hardware directly. The list of programs which have direct access to hardware must contain only the executable name without the path and each program must be separated by a comma.
If you don't want to allow any program to access the hardware directly, add this line to your config.sys file:
If you want to allow the programs prog1.exe and prog2.exe to have direct hardware access, then use this line:


Undocumented variable for IBM Dualstor.

  • d: no FIFO
  • D: use FIFO
  • x: 0.5 MBit/s
  • X: 1 MBit/s


Disables the automated fixpak checking during Java installation



JIT debugger flags


The JIT debugger is invoked when an application process encounters a trap or exception not serviced by that application's exception management. Under normal operations, where a JIT debugger has not been registered with the OS, the application would be terminated by the user on a Hard Error Popup. This disallowed state information from being gathered. By registering a JIT debugger with the OS, the OS will launch the JIT debugger in place of the Hard Error popup.

The JIT debugger should attach to the dying process allowing the user to debug the dying process using a conventional debug program or just gather state debugger (unattended). A state debugger would gather required information to determine the state of the process dying; e.g., stack, registers, addresses, storage, etc. Once the state is gathered, the state debugger could save it to a log and terminate the offending process and/or start a new process in place of the old. This is completely customizable in the JIT debugger.

There are two types of JIT registration supported in OS/2. The first type is global registration. This allows the user to register a global debugger for the entire OS in the CONFIG.SYS. This debugger will be launched for any process in the OS that has an error. The global debugger will not support launching a PM (Presentation Manager(R)) JIT debugger. This has to be a VIO application (or one that produces no screen output) because of the organization of the boot cycle at which a JIT debugger can be invoked. The global JIT registration is done before the loading of device drivers, IFS, CALLS, and RUNS. This enables JIT support for all of these types of files.

JITDBGREG=<JIT_PathName> <arguments>

Refer to Buffer under parameters section above to see how [JIT_PathName] and [arguments] are used.


The second type of JIT registration is the per-process registration. This type of registration allows the user to register any type of debugger including PM and VIO using the DBG_C_RegDbg command above.

The JIT debugger writer needs to be aware of the environment that the JIT is being used in because of PM and VIO considerations for starting the debugger in regards session management and screen groups.
For kernel debugger users there is an option to turn off the JIT debugger support when trying to catch traps in the kernel debugger. See the .on, .of and .oq switches in the kernel debugger help.


Specifies the drive LETTER of the last valid drive, including attached drives such as CD-ROM, Bernoulli etc. Z is the last valid character, typically C, D, E etc.



With this setting you may get some speed improvement when loading apps.


NOTE=: If you are using TCPBEUI (especially under SMP) don't use this setting. If ISS is used it will be ignored.

Only with kernel 14.093g.


The LIBPATH statement specifies the search path for DLLs. When a process needs a DLL, OS/2 searches for the DLL in the directories listed in the LIBPATH. To speed up your system it is wise to sort your LIBPATH statement. Most applications store their DLLs in the same directory as the executables so the first entry of your LIBPATH statement should be the period ".". Arrange the other entries so that the most frequently used directories appear before the least used directories.


Value can be any full path or any relative path. A full path is something like this: "C:\OS2\DLL" A relative path looks like this: "..\DLL" or "."

The best way to sort your LIBPATH is to use the first 4 entries from the line above and then list your other directories sorted from the most frequently used directory to the least frequently used directory.
  • The "." is the current directory
  • The ".\DLL" is the subdirectory DLL under the current directory. If the current directory is "C:\OS2" then is ".\DLL" equal to "C:\OS2\DLL".
  • The "..\DLL" is the subdirectory from the main directory from the current directory. If the current directory is "C:\COMPILER\EMX\BIN" then is "..\DLL" equal to "C:\COMPILER\EMX\DLL".
To reduce the search time, be sure that the various PATH statements contain the correct path to your program and other files. You can also have OS/2 search the current directory by including a period "." right after the equal "=" symbol (LIBPATH=.;C:\....). This causes OS/2 to look in the current logged directory first.
One final item that will reduce search time: Be certain that the PATH, LIBPATH and DPATH statements in the CONFIG.SYS are arranged with the most frequently accessed sub directories listed first.
Problems can arise with duplicate filenames on the system. Sometimes you will have 2 DLLs with the same file name but for different applications, which may cause programs to misbehave. Check the ordering of directories in LIBPATH, use ".:" and enter the path in working directories for the application properties.
Don't forget that autoexec.bat has a PATH too.
With Warp, IBM has introduced the ability to dynamically change LIBPATH using two new environment variables: BEGINLIBPATH and ENDLIBPATH. These commands are most useful in CMD or BATCH files, but can be used in your CONFIG.SYS. Any directories that appear in the BEGINLIBPATH variable are searched before directories in LIBPATH, and directories that appear in the ENDLIBPATH variable are searched after those in LIBPATH. The correct syntax is SET BEGINLIBPATH=C:\OS2.
Netscape must be in the first place of the LIBPATH. This means also before the above mentioned period ".". If you use StarOffice 4.0 check if that's correct, if not move the StarOffice Path behind Netscape and install ServicePak 2 for StarOffice or higher otherwise the browser wont function.


The MAXWAIT statement specifies the time in seconds a program runs before the system gives the thread a higher priority.

Value can be in the range from 1 to 255. Default: 3
The value is expressed in seconds. If this entry is not set in your CONFIG.SYS file, the default value is used.
  • If PRIORITY=ABSOLUTE the MAXWAIT entry has no effect.
  • When running heavy background programs, such as a BBS, change the setting to 1, i.e. MAXWAIT=1. This will keep the BBS software or other background programs running at top speed. For general use, it appears that setting MAXWAIT=2 makes the system a little livelier.
  • MAXWAIT only has an effect if PRIORITY=DYNAMIC.
  • The smaller the number you use, the more system overhead there will be.


The Memman command enables and controls the swap process.

Default settings
  • SWAP - Swap can be SWAP or NOSWAP. SWAP enables swapping and NOSWAP disables swapping.
  • PROTECT - enables the Protected Dynalink. Please use this parameter. Don't delete it unless you are a programmer and you know what you are doing.
  • COMMIT - With the COMMIT parameter all allocated memory by a program is copied to the SWAPPER.DAT even if the data never actually gets swapped out. The SWAPPER.DAT grows with this parameter. It is a good idea to make the initial size of the file bigger.
  • MOVE - Move can be MOVE or NOMOVE. The Move parameter is only for compatibility with OS/2 1.x.
The parameters SWAPDOS and NOSWAPDOS are not available in OS/2 2.0 and above.
You can also use the COMMIT parameter another way. Without COMMIT set, the minimum free noted in you SWAPPATH specified the point at which OS/2 gives you a message warning that your disk space is running low. When you set COMMIT, the minimum free value noted in your SWAPPATH statement becomes the amount of hard disk space that will always remain free on the swap file partition. Thus, with COMMIT set, you can never run out of disk space on your swap file partition.
When messing with the MEMMAN line, I changed it to MEMMAN=NOSWAP. As a result, I had to boot from my OS/2 installation disk and recover my backup config.sys file to get the system to boot. According to Blake Stover, "The reason MEMMAN=NOSWAP, PROTECT chokes is because of the hat tricks OS/2 does while loading the WpS, Desktop, Bitmaps, Folders, Cache buffers, MMPM/2, etc. OS/2 likes to load all of these, then swap or discard the inactive code. If there is no where to swap to it dies during boot, unable to initialise the resources it needs. NOSWAP,PROTECT should only be used for boots from floppy to do maintenance, in most cases. (People who use TSHELL on a machine with a good amount of RAM may also use it to speed operations). IBM does not recommend that you set MEMMAN to NOSWAP unless you have more than 8MB of RAM.

NOTE: The MOVE/NOMOVE parameter is only provided for OS/2 1.x compatibility.

NOTE: NOPACK PARAMETER. When OS/2 initially loads a 16-bit OS/2 application, it packs the segments into pages and copies them to the swap file for faster recovery when needed. This can be disabled by using the NOPACK option on the MEMMAN line. However, the performance decrease and larger working set will rarely offset the potential of a reduced swap file size.

NOTE: DELAYSWAP. No information at this time. SWAPDOS and NOSWAPDOS parameters from OS/2 1.x are not valid in OS/2 2.0 and later.

TIP from Warp Server for e-business docs: If DOS real mode is required, set the memman parameter to SWAP, MOVE,SWAPDOS to enable swapping of the DOS real-mode window. This might be a left-over from older docs, though.

TIP by William L. Hartzell: Setting "Memman=No Swap" will prevent OS/2 from using all memory under some conditions. Example: If the system board has a maximum memory size per slot of memory of X, then putting more memory than X will cause the memory over X not to be used, even though no one slot has more than X. Further example: SIMM Maximum size of 256 MB per slot, with the system board having three slots. Placing three 128 MB SIMM into the slots will cause the equivalent of the third SIMM to not be used (384 MB is greater than 256 MB).


MODE is a multi-purpose command that allows you to control printer ports, serial ports, modems, video monitors and disks. For example, if you want to "lock" in the baud rate on COM2, add the following MODE command to your CONFIG.SYS file:

MODE COM2 baud (where baud is the rate you want to lock)


Turns off the NMI (Non Maskable Interrupt) watchdog timer. Maybe only for PS/2 machines.



This CONFIG.SYS command is related to FAT File System performance degradation in Warp 4. It is essentially no-ops calls to DosResetBuffer for a specific handle. IBM discourage customers from using it, it will be there if they need it for performance reasons.


Default value is OFF.


With the PAUSEONERROR statement you can control whether you want OS/2 to pause after each error in the config.sys file or not.

Default settings
If this parameter is not set it defaults to YES.
Value can be YES or NO.
  • PAUSEONERROR=YES - OS/2 pauses after an error.
  • PAUSEONERROR=NO - The system doesn't pause after an error.

If you want OS/2 to continue after an error occurs while processing your config.sys file, add this line to your config.sys:


If you want OS/2 to wait after an error occurs while processing the config.sys file, you don't have to set up the PAUSEONERROR statement. The default is to wait after an error for a keystroke. However, you can add the statement if you wish.



This statement sets up the buffer size of your parallel ports LPT1 up to LPT3. Usually you have your printer connect to one of this ports. A higher buffer size can speed up your printer. The best thing you can do, is to set the port(s) that you're using to the maximum value. Set the other ports to the minimum value.


Default settings:

  • PRINTMONBUFSIZE=134,134,134
  • X can be in the range from 134 to 2048.
  • X1 is the buffer size of the first parallel port LPT1.
  • X2 is the buffer size of the second parallel port LPT2.
  • X3 is the buffer size of the third parallel port LPT3.

You must set up all three parameters, no matter how much parallel ports you have in your PC.

NOTE: You must define a buffer for LPT2 and LPT3 even if you don't use these ports. You will get an error message at start up if you don't.

TIP: You may be able to improve printer throughput by increasing buffer size. I have my LPT1 set to 2048. This setting will also speed-up drives attached to the parallel port (e.g. Zip drives).

TIP: If you need more than three LPT-Ports get the LPT49.ZIP Package from See also the command DEVICE=drive:\path\LPT49.SYS under Device later in this file.

The following REXX-Script also adds additional printer ports 4-9 by generating the spooler-queues LPT4-9 in the OS2SYS.INI

Call RxFuncAdd 'Sys.ini','RexxUtil','Sys.ini'
do i=4 to 9
call Sysini'System','PM SPOOLER PORT','LPT'||i,';'||'00'x

TRIVIA: Ever wonder where IBM got a parameter like 134? Lynn Nash passed along the following:

"Obviously you have no background on the big iron or it has disappeared into historical memory :-). "Mainframe line standard of 132 columns plus 2 for carriage return and line feed characters. That is why all the wide carriage dot matrix printers also had 132 column lines, to be able to use that wide green bar paper. Anyone that had an early Okidata 83 dot matrix even had an electronic format tape, but that is a story for another time."

NOTE: by William L. Hartzell: Printmonbufsize has no value if one uses the PAR1284.SYS driver, instead of the print01/02.sys driver


Determines if OS/2 should calculate the priority of threads dynamically or if no priority calculation should be done. Setting the value to dynamic is best. This allows the system to calculate the priority based upon the display status (foreground or background), the processor load and recent input and output activity.


Default settings:



  • Value can be ABSOLUTE or DYNAMIC.

Set to absolute if you don't want calculation on priority.

OS/2 automatically assigns processing priorities to each thread of a program as it begins processing. A thread running in the foreground will generally have priority over a thread running in background. Thread priorities are adjusted, generally based upon how active they are, by OS/2 on an ongoing basis to make sure each thread has adequate processing time. On the rare occasion that you need to run a program which must never change in priority, you should set PRIORITY=ABSOLUTE, otherwise, don't mess with it.

"To summarise: The highest priority thread always has the machine. If there are two equally high threads, they timeslice having the machine. Note that there are many Operating System threads, like the scheduler itself, that are higher priority than any program. Now, if PRIORITY=ABSOLUTE in the config.sys file, that's all there is to it. But usually, PRIORITY=DYNAMIC, and OS/2 keeps gradually increasing the priority of a starved thread until it gets to run. Maxwait determines the maximum time, in seconds, before the scheduler intervenes to raise a low priority thread up high enough to run."


This command determines whether programs running in the foreground have priority access to disks. If you want a program running in the background, like a BBS, to have equal access to your disks, then change this statement to NO. If you change this command to NO and then find that your communications program does not work, change back to YES.


Default settings:



  • Value can be YES or NO.

If set to NO all applications have the same priority on disk accesses. If set to YES the foreground application has a higher priority than the background application.


Determines how many processes OS/2 will be able to handle altogether. The maximum value depends on total system memory. It is possible to reduce the scheduler's overhead and memory consumption by lowering this number. This may also help to avoid shared memory problems.


Default settings:



Value can be in the range from 0 to 2048.

NOTE: The system might crash without further warning if this number is set too low, and it also may show you a not recognized value message on the boot process if the value is too low. As a rule of thumb, determine the current process count in use during typical load and add 50%.

It was introduced by Warp 4 FixPak 13


This parameter is to protect memory use for 16-bit modules.


Note: Notice that the DLL suffix is not required. Only DLL files can get the protection.

Note: PROTECT16 statement is ignored starting from Warp 4.0.


Use this to enable running of DOS and Windows applications.


Default settings:


Parameters: Value can be YES or NO.


You can run only OS/2 applications.


You can run DOS, Windows and OS/2 applications.

NOTE: Jonathan de Boyne Pollard relayed the following: "Part of the difficulty of talking about OS/2 2.x, as opposed to OS/2 1.x, is that *all* processes run in *protected mode*. The 386 never runs in real mode in OS/2 2.x.

"Virtual DOS Machines are run in v8086 mode, which is still *protected mode*, as the paging mechanism is still active. The major difference between v8086 and normal protected mode is that the segment base addresses in linear memory are fixed, instead of being determined by the entries for each selector in the LDT and GDT.

"So PROTECTONLY in OS/2 2.x means *don't use v8086 protected mode*. For a while there we thought that it meant *don't use real mode* and so was useless to OS/2 2.x, but it seems after all that it retains its original OS/2 1.x semantics, if not its original mechanism."


This is the protected mode shell for OS/2. This is the first program that OS/2 starts. PMSHELL.EXE the program that starts the OS/2 Presentation Manager. You can use other programs here for example TSHELL.EXE. If you remove this statement, the PMSHELL.EXE will come up by default. In other words PROTSHELL loads the user interface program.



Value can be any valid shell with full path.

If this command is not set it defaults to PROTSHELL=C:\OS2\PMSHELL.EXE.

NOTE: There are several alternatives to PMSHELL.EXE. One is OS/2's own CMD.EXE. If you replace PMSHELL.EXE with CMD.EXE, you will get a full screen OS/2 session only and will not be able to run PM programs. An alternative is TSHELL.EXE, a text-based, protected-mode shell for OS/2. Any one remember OS/2 1.x? TSHELL makes OS/2 look something like OS/2 1.0, which did not have a graphical user interface. With TSHELL you can start and switch full-screen sessions only. These can be OS/2, DOS, or WINOS2 sessions depending on system configuration. You use Alt+Esc to switch around sessions and Ctrl+Esc to pop up the task list. But please note, like OS/2 1.0, there is no Presentation Manager, OS/2 PM applications will not work. TSHELL is IBM EWS.


There is the CONFIG.SYS PSD Statements page with the commands and parameters available.


Identifies records that should remain resident (not be swapped out).



OTE: Informs the System Loader to use the Resident heap for OTEs associated with SMTEs and information required to provide the pathname information for the process.

The OTE parameter should be used only when a system dump seems inevitable, because of the larger footprint caused by keeping these records resident.


The REIPL statement enables OS/2 to automatically reboot after a trap error.


Default settings:



Value can be ON or OFF.


The computer reboots automatically.


The trap error message displays and you must reboot manually.

If this parameter is not set it defaults to OFF.

TIP: This command along with the SUPPRESSPOPUPS command can be very useful to those running a BBS. If a trap or internal processing error occurs while your BBS is unattended, having these two command in your config.sys will cause your system to log the error and then restart the system, so your BBS is back online.


Variable used for CID installations.

If defined, all installation programs created with Software Installer/2 will not display.


Drive letters (A: through Z:) are assigned to all hardware that can be used to store data or programs (i.e. diskettes, cd-roms, disk partitions, remote disk partitions). With the addition of RESERVEDRIVELETTER, you now have the ability to control some of these drive letter assignments by reserving 1 or more consecutive drive letters during the earliest part of system initialization.

note:In Warp 4 you can assign this option with the Reserved page of Drives - Properties. Your config.sys will automatically be updated with the values you specified.

New in Warp 4, Warp 3 with Fixpaks higher 24.

  • Drive - CD-Rom, Optical drives, Virtual disks and Tape drives gets drive letters beginning with the next letter you have defined with Reservedriveletter. You can not change the drive letter for hard disk partitions. For example you have a harddisk with two partitions and one CD-ROM drive. Without Reservedriveletter set up the harddisk partitions will get driveletter C: and D:, the CDRom will get driveletter E:. If you want your CD-ROM to become drive G: you should use Reservedriveletter=F. Drive can be in the range from D to Y.

NOTE: Multiple RESERVEDRIVELETTER statements are allowed but only the last one is used. Valid Driveletters are D - Z.

During the processing of CONFIG.SYS, OS/2 allocates drive letters for all BASEDEV= statements. In general, the only BASEDEV= statements that allocate drive letters are those for the Disk Device Driver, which will allocate 1 drive letter sequentially for each local disk partition. Three local disk partitions would allocate C:,D:,E:.

After processing BASEDEV= statements, the system will honour the RESERVEDRIVELETTER statement(s). If the RESERVEDRIVELETTER statement conflicts with any drive letter already assigned to a local disk partition, an error message will be generated and that RESERVEDRIVELETTER statement will be ignored.

The next processing occurs for DEVICE= statements. DEVICE= statements for local block mode devices will assign drive letters, starting sequentially immediately after the highest drive letter specified in a RESERVEDRIVELETTER statement. Examples of local devices which use drive letters are CD-ROM, R/W OPTICAL, TAPE, Virtual Disks (VDISK).

So on a network, for example, the administrator can reserve specific drive letters for his later use in CMD files, or login scripts, so that drive references across the network remain stable.

If the RESERVEDRIVELETTER statement conflicts with any drive letter already assigned to a local disk partition, an error message will be generated and that RESERVEDRIVELETTER statement will be ignored. The following Message will be displayed:

SYS1914: The system cannot reserve drive x:


Sets up how much memory is available in a DOS session.

Default settings
  • RMSIZE=640
Value can be in the range from 1 to 640. This value is expressed in Kbytes.



This command lets you configure Boot Manager in OS/2, if it was installed, otherwise you will experience an error message on boot.

  • /T:x - Number of seconds that the Boot Manager menu will remain on the screen before the default system starts. A 0 (zero) setting causes the menu to be bypassed. A NO (as in /T:NO) causes the menu to remain displayed until a selection is made.
  • /Q - Queries the currently set startup environment, and displays the default logical disk alias, timeout value, mode, and drive letter assignments for each system index.
  • /X:x - Sets the system startup index to indicate the partition that the Boot Manager should start, where x is from 0 to 3.

For complete information and other parameters available, refer to the online OS/2 Command Reference.


Sets the path for the OS/2 installation program SYSINST2.EXE


A new CONFIG.SYS statement (STRACE) has been created to allow the user to control the Software Trace facility.


This statement allows the buffer to be allocated and tracepoints to be enabled. The following commands are supported:

  • STRACE=ENABLE n1 n2 n3 ...
  • STRACE=DISABLE n1 n2 n3 ...

Note that STRACE=INSERT and STRACE=REMOVE are not available on Uni processors, because the software trace hooks that these functions control exist only in SMP builds of OS/2 Warp.

The syntax for these commands is similar to the corresponding command line version, described above. Some examples of these commands are:

  • Initialize an 8 MB buffer: STRACE=INIT 8
  • Enable tracepoints 5, 7, and 9: STRACE=ENABLE 5 7 9
  • Start tracing: STRACE=ON
  • Disable static tracepoints 5 and 9: STRACE=DISABLE 5 9
  • Insert dynamic tracepoint 19: STRACE=INSERT 19 (Available only on OS/2 Warp SMP systems.)
  • Remove dynamic tracepoint 19: STRACE=REMOVE 19 (Available only on OS/2 Warp SMP systems.)


The SUPPRESSPOPUPS statement enables logging of errors to a file called Popuplog.os2. And enables or disables the error messages.

Value can be any drive letter or 0.
  • C - The error message is stored in the file popuplog.os2 in the root directory of drive C. No popup messages are displayed.
  • 0 - The error message is only displayed. It is not saved to file. This parameter is only available on Warp 4.0 with fixpack #3 and Warp 3.0 with fixpack #29 and above.
  • SUPPRESSPOPUPS not set - The error messages are not displayed and saved to the file popuplog.os2 on your bootdrive. On OS/2 prior to Warp 4 the error messages are only displayed.
The log file name cannot be overridden.


The SWAPPATH command points to a directory and determines the size of the swapper.dat file. The swapper.dat file stores currently unused blocks of RAM. This is done to increase your available memory.

To enable swapping the MEMMAN command must be set to SWAP.
SWAPPATH=Path MinFree InitSize

Default settings:

  • SWAPPATH=C:\OS2\SYSTEM 2048 2048


  • Path - Path can be any path to the swapper.dat file. Default = C:\OS2\SYSTEM
  • MinFree - The Minfree parameter defines the minimum available free space that the swapper.dat file can grow to before it stops consuming disk space. If you set it, for example, to 1024 the swapper.dat file can grow until the free space remaining is 1024 Kbytes. Minfree can be in the range from 512 to 32767. Minfree is expressed in Kbytes.
  • InitSize - The InitSize parameter sets the starting size of the swapper.dat file. The file can grow but the file will never be smaller than the initsize. To find out a good value for initsize, start some big applications and work with them. From time to time, check the size of the swapper.dat file. Take the biggest value you see and add 10% to determine the initsize parameter. InitSize is expressed in Kbytes.

See the examples below.

If you would like your swapper.dat file to be in the C:\Swap directory, start with a size of 40 megabytes and stop growing at a free space of 2 megabytes, enter this line in your config.sys file:

SWAPPATH=C:\SWAP 40960 2048
When your swap file grows beyond the initial size you have specified, OS/2 starts to manage the swap file. This increased overhead can negatively impact your systems performance. Therefore, if your swap file always exceeds its initial size, consider increasing the files initial size. For example, if your swap file usually grows to 8MB, set the initial size of 8MB.
As time progresses, OS/2 will gradually swap dormant code from real RAM to the swap file. So if you tend to use a few programs for a long period of time you will notice a gradual performance improvement. Try to avoid application hopping.
Normal operation of OS/2 can involves considerable disk activity as operating system functions are loaded and pages are moved in and out of the swap file. Here are a couple of tips to improve performance.
  1. Consider dedicating a separate partition for the swap file. This helps avoid fragmentation of the swap file, because other files will not be added or deleted from the dedicated partition.
  2. If you have both FAT and HPFS partitions, put the swap file on the HPFS partition to take advantage of the better performance of HPFS.
  3. If you have a system with two hard disk controllers, put the swap file on a disk managed by the least used controller.
  4. Keep your swap file on the MOST used partition of the LEAST used hard drive.
Never put your swap file on a networked drive.
Your swap file will grow (in 1MB increments), but it also shrinks when two conditions are met. One, when the amount of free space in the swap file is greater than 1.5MB, the swap file will be compressed during system idle time. (It will not shrink if there is a constant "hit" on the drive by a program such as a swap file monitor.) Two, during the compression, free space is moved to the end of the swap file. When this free space at the end of the swap file exceeds 1MB, the swap file will be shrunk.
See the discussion of the COMMIT parameter for the MEMMAN config.sys line including the TIP.
Your swap file in Warp will be larger than in earlier versions of OS/2. This is normal. The most significant change that has been made is how system DLLs get loaded and what is now valid data for swapping. System DLLs include: DISPLAY, SOM, PMMERGE, PMWP, DOSCALL1, PMATM, PMMLE, IBMDEV32, PMCTLS, PMSPL, IBMVGA32, PMGPI, and PMVIOP.

In the previous versions of OS/2, DLL code was never copied to the swapper file. In WARP, code for system DLLs can be written to the swapper file and, in addition, during boot, PMMERGE, DOSCALL1, PMGPI, PMWP and PMVIOP will be swapped out. This means that there will be an overall increase in swapper size. This was done to increase overall system performance.

To control the size of the swap file use e.g. the SmartBar by Alessandro Rossi


Activates fix for a 'math rounding error'. Warp 4 only. Source: WARP 4 Fixpak 1 documentation, only possible after applying WARP 4 Fixpak 1 (see APAR JR09662)


OS/2 Warp 4 with Fixpak 1


The SYSDUMP command forces a System Dump to be initiated, regardless of the TRAPDUMP settings. This command is provided for the use of service personnel to allow Dump Initiation to be automated through use of a command file.

Warning: The initiation of a System Dump causes an immediate termination if the system without any shutdown. No file system shutdown is performed. The system behaves as if a fatal crash has occurred thus under rare circumstances data can be lost.

The command syntax is:



NOPROMPT allows the Dump to proceed without the prompt and response to message:

"Do you want to force a system dump? (Y/N)"


The threads statement defines the number of available threads. Set the number of threads to a value 50 % greater then the maximum value you expect to experience. Each thread consumes 4096 bytes of resident memory.


Default settings:

  • THREADS=64
Value can be in the range from 64 to 4095. On OS/2 2.x the range is from 32 to 4095. If this parameter is not set it defaults to 64.
If you have more than 8MB of RAM and run lots of OS/2 specific programs, you may be able to improve system responsiveness by increasing the number of threads. Why? Because well written OS/2 programs will use threads to improve program performance. Therefore, the more well written OS/2 programs in use, the more threads that could be needed. But still keep in mind that this only holds true only when you are using a fair number of OS/2 specific programs at the same time.
On a server it is generally considered better to have 512 threads.


With this statement you can set up the minimum and maximum timeslices for threads.


Default settings:

  • TIMESLICE=32,32


  • Min
    Min can be in the range from 32 to 65535.
    Default = 32
    This value is expressed in milliseconds. If this parameter is not set it defaults to 32.
  • Max
    Max can be in the range from 32 to 65535.
    Default = 32
    This value is expressed in milliseconds.
    If this parameter is not set it defaults to the same value as the min parameter is set to.

See the examples below.

To set the minimum timeslice to 50 milliseconds and the maximum timeslice to 67 milliseconds, add this line to your config.sys file:


If you want to set both values to 40 milliseconds use this line:


To use the default value for minimum and 44 milliseconds for maximum timeslice, use this line in your config.sys file:


Jim Gilliland once posted: "The Timeslice parameter controls the minimum and maximum timeslice that OS/2 will allow an application to use. If you make the timeslice longer, OS/2's dispatching overhead will be reduced, but the system's multitasking operation will be "choppier". Increasing the length of the maximum timeslice (the second parameter) will allow OS/2 to gradually increase the length of the timeslice used by an application when it is not competing with any other apps for CPU time (that is, when it is the only app running or all others are blocked)."

OS/2 handles time slicing dynamically. This means that the system is adjusting the time slice values based on the actual processes active on the system as the workload changes. Therefore, it is best not to attempt to manually set TIMESLICE. OS/2 can handle this process far better than most of us can.


The system trace facility is used to record a sequence of system events, function calls, or data. The record is usually produced for program debugging purposes. After the trace data is recorded, the System Trace Formatter is used to retrieve it from the system trace buffer (see TRACEBUF below) and format the data to either your display, printer, or to a file. Start tracking system problems by turning TRACE on which will establish a 4KB default buffer. (You can increase this using the command TRACEBUF) to store tracing data. You can also start TRACE from an OS/2 command prompt.

You can turn TRACE=ON and then set TRACE=OFF for major or minor codes. For example, TRACE=OFF 24,50,98.
IPE ON BOOT AFTER FIXPAK 35 INSTALLED ON UNI SYSTEMS If you experience a kernel trap (black screen trap) or get a messages stating that device drivers (such as CLOCK01.SYS) were not able to install at boot time add the following statement to the end of CONFIG.SYS: TRACE=OFF,6


This command sets the size of the trace buffer. If any valid TRACE statement is in your config.sys, the default size of the trace buffer will be 4KB. You can modify this size with the TRACEBUF command. Maximum size is 63KB. "n" is a specific number from 1 to 63, representing a multiple of 1024 bytes.

TRACEBUF=n (inkb)
TRACEBUF will allocate memory with or WITHOUT a valid TRACE statement in the config.sys. This is to allow command line tracing. So check that TRACE/TRACEBUF are correct for your use.


The TRAPDUMP command allows the conditions under which a trap will initiate a System Dump to be set dynamically. Prior to Warp 3.0 FixPak 29, the System Dump setting could only be manipulated from CONFIG.SYS by use of the TRAPDUMP statement.


Use of this command should be made under the direction of service personnel.

The initiation of a System Dump causes an immediate termination of the system without any shutdown. No file system shutdown is performed. The system behaves as if a fatal crash has occurred, thus under rare circumstances data can be lost.
TRAPDUMP will copy memory contents to a storage location, which means the storage required = amount of physical system memory.

The command syntax is:

  TRAPDUMP [[ON] | [OFF] | [R0]] [x:] [/NOCHECK]
  • ON enables all application and system traps to initiate a System Dump.
  • OFF disables automatic dump initiation.
  • R0 enables only Ring 0 traps to initiate a System Dump.
  • x: specifies the Dump Partition.

NOCHECK overrides the system level check for WARP 4.0, since use of this command on a system level prior to FixPak 29 is equivalent to the SYSDUMP command.

OLD TRAPDUMP=xx,d, prior to fixpak 29 for WARP 3.0

Parameters are: OFF,drive letter

  • ON, drive letter
  • R0, drive letter

Indicates when a stand alone dump is to be taken and where the dump is to be placed. The default value is OFF and the default drive is "A".

If you are sending a memory dump to hard disk, you must first create a FAT partition labelled SADUMP and give it a size greater than the amount of physical memory in your system. The drive you specify in the TRAPDUMP statement must contain the SADUMP partition. Any existing data in this partition will be overwritten. The system will restart after the TRAPDUMP process has been completed.

If REIPL=ON is specified in the config.sys file, the system will restart automatically and no dump will be taken when a system trap or internal processing error occurs.

Luca Regoli, Societa' Italiana Autori Editori, provides the following information on this command. "This way whenever a trap occurs you don't get anything on the screen. The PC beeps and [responds] as if you had depressed CTRL+ALT+NUMLOCK / NUMLOCK. "Not very useful though I don't know how to get traps information from the dump disk (and don't want to download all 20Mb dump of memory any time I get a trap)."


The TRAPLOG command allows dynamic control of trap information logging.



  • x: specifies that trap information is to be logged in x:\POPUPLOG.OS2, x: being any partition drive letter.
  • NOLOG disables logging of trap information.
  • POPUPS enables the trap information pop-up message (SYS3175).
  • NOPOPUPS disables the trap information pop-up message.


Installs the Trapdoor feature of Warp 4, only on machines with SCSI Harddisks.



The default value for VIRTUALADDRESSLIMIT in OS/2 Warp Server for e-business is 1 GB (=1024). The VIRTUALADDRESSLIMIT parameter is also available for OS/2 Warp Server SMP Feature and Warp 4.0 Fixpak 13. Areas of memory below 512 MB have been remapped for higher availability in that region.


Parameters Values are in "kb". The default value is 1 GB (=1024)


2048 allows max. memory allocated 2 Gigs of shared RAM. Only useful for developers.

You must have a hard disk that can accommodate the swap file. UW2SCSIs are recommended for the swap disk unless you wish to see your computer behave like a washing machine in spin dry mode.

NOTE: The OS/2 Warp Server Advanced SMP addendum states that this number can go to 3 Gigs. Memory support has also been enhanced since now an application can access a virtual memory address space of up to 3 GB by use of the VIRTUALADDRESSLIMIT = 3072 parameter in CONFIG.SYS. Areas of memory below 512 MB have been remapped for higher availability in that region.

Requires OS/2 Warp 4 with FP13


Disables the Virtual Mode Extensions introduced with the Intel DX2.


TIP by Ron Higgin: If you get frequent Trap D and Trap E errors in DOS/Windows sessions it may provide some relief.


Virtual Mode Extensions is a hardware enhancement Intel added to their CPUs beginning with the DX2 models. All Pentium processors also come with this feature. VME is intended to speed up a number of privileged functions (CPU instructions) for applications running in virtual mode sessions (for example, DOS and WinOS2 sessions).

DOS (and Windows) apps running in an OS/2 Virtual DOS Machine (VDM) believe they "own" the hardware. On occasion these apps will try to do something to the (virtual) hardware that isn't permitted while a protected mode operating system such as OS/2 is in control of the real hardware because permitting such "privileged" operations would negatively impact overall system integrity and reliability.

On a non-VME processor attempting such privileged operations would result in a (hardware generated) program interrupt, and hence an operating system (in this case, OS/2) interrupt handler to get control. Control would eventually pass to a routine that would simulate the attempted function. On a VME processor the function simulation would be carried out by microcode on the processor itself. This is both transparent (to the operating system and app) and faster, BUT only if it works.

Unfortunately there are apparently some conditions that can arise where this (usually) transparent handling of privileged operations (in effect, a hardware implemented microcode "assist") can leave the system in an inconsistent operating state. In this case the operating system will force a TRAP condition to protect itself (and YOUR data).

Adding the "VME=NO" line to "CONFIG.SYS" forces all VME "assisted" CPU instructions to be reflected to, and handled by, the operating system; in other words, the way it would have worked had the VME feature not have been present.

"VME=NO" is not a panacea fix for all your DOS/Windows woes. Indeed the most common symptom of VME related problems is frequent "Trap D" and "Trap E" errors in DOS and WinOS2 sessions. Therefore, I doubt it will correct all the problems you've listed, but it MAY provide some relief. Can't hurt to try.

By Ron Higgin OS/2 Advisor


New setting for Warp Server for e-business. No information until now.



New setting for Warp Server for e-business. No information until now.



New setting for Warp Server for e-business. No information until now.



Contains the object handle for the current OS/2 session. This handle is unique for each session started via an WPS Object.