BOOT.SYS(tm) - Version 1.42 Use boot-up menus to select your MS-DOS system configuration _______ ____|__ | (R) --| | |------------------- | ____|__ | Association of | | |_| Shareware |__| o | Professionals -----| | |--------------------- |___|___| MEMBER Written by Hans Salvisberg BOOT.SYS - 2 - Version 1.42 Copyright Notice BOOT.SYS(tm) and the accompanying programs and documentation are Copyright (c) 1989, 1990, 1991 Hans Salvisberg All rights reserved Table of Contents Introduction ............................................... 4 About ASP .................................................. 5 ASP Ombudsman Information .................................. 6 License Agreement .......................................... 6 Registration ............................................... 8 Installation ............................................... 10 Quick Start .............................................. 11 Level 1: One Menu ........................................ 12 BOOT.SYS Command Line Parameters ......................... 17 The BOOT.SET Command and Environment Variables ........... 18 General Introduction to DOS Environment Variables ..... 18 Using Environment Variables with BOOT.SYS ............. 20 Trouble-shooting Variable Problems .................... 21 Level 2: Several Independent Menus Following Each Other .. 22 Level 3: Nested Menus .................................... 24 Controlling the DOS= Command in MS/PC-DOS 5.00 ........... 30 General Introduction .................................. 30 BOOT.SYS and the DOS= Command ......................... 32 DOS= Summary .......................................... 32 BOOT.SYS Extensions ...................................... 33 BOOT.EDIT ............................................. 33 BOOT.OPTION FREE ...................................... 34 BOOT.OPTION BOOTASSIST ................................ 35 BOOT.OPTION EXTMON for Laptops ........................ 36 BOOT.OPTION COLOR ..................................... 38 BOOT.COM Command Line Parameters ......................... 38 BOOT.SYS - 3 - Version 1.42 PAUSE.SYS, a Debugging Aid ............................... 40 Closing Remark ........................................... 41 Answers to Common Questions ................................ 42 Revision History ........................................... 46 BOOT.SYS - 4 - Version 1.42 Introduction BOOT.SYS makes it possible to display one or more menus at boot-up time and to have different parts of CONFIG.SYS and/or AUTOEXEC.BAT executed depending on which menu options are chosen. Many people need different versions of CONFIG.SYS depending on what application they are going to run. In the past you had to either rename or edit your start-up files and reboot to get a different setup. Now this process has become much easier and safer by using BOOT.SYS. BOOT.SYS was written for IBM-compatible Personal Computers run- ning under MS-DOS or PC-DOS 2.11 to 5.00. There are no other system requirements. The following features make BOOT.SYS a must-have for every sophisticated PC installation: * easy installation, detailed examples for every level of sophistication * up to nine options per menu (one line per option) and a freely definable prompt area at the top of the screen * up to 25 consecutive menus, each defining a different aspect of your system configuration * up to 25 levels of nested menus (submenus), simplifying a systematic approach to systems configuration * only one version of CONFIG.SYS and AUTOEXEC.BAT; no copy- ing/renaming of files and no rebooting * select menu options by pressing the corresponding digit key or by moving an arrow * user-definable timeout and default option for each menu * full support for DOS= and the other new commands in MS/PC-DOS 5.00 * switch to an external monitor on boot-up for some laptop computers * edit individual CONFIG.SYS lines on the fly while booting up * typically uses less than 200 bytes of resident DOS memory * do a warm or a cold boot from the DOS command line or from a batch file; change Alt-Ctrl-Del to do a cold boot or disable it altogether * includes PAUSE.SYS for debugging complex CONFIG.SYS setups BOOT.SYS - 5 - Version 1.42 Acknowledgments BOOT.SYS(tm) was developed using Borland's Turbo C(R), Turbo Assembler(R), and Turbo Debugger(R), as well as the Periscope(R) debugger by The Periscope Company. The documentation was written with Lotus Manuscript(R). Many thanks to Michael J. Mefford of PC Magazine who has provided valuable information about modifying CONFIG.SYS on the fly. Many thanks to the members of the ASP; their help and advice have been invaluable for getting BOOT.SYS to you. Trademarks BOOT.SYS is a trademark of Hans Salvisberg. Compaq is a trademark of Compaq Computer Corporation. IBM, PC-DOS and PC are trademarks of IBM Corporation. MS-DOS and MS Windows are trademarks of Microsoft Corporation. 386MAX is a trademark of Qualitas, Inc. DESQview and QEMM386 are trademarks of Quarterdeck Office Systems. 4DOS is a trademark of JP Software. Other product names mentioned in this documentation may be trademarks of these or other companies. Association of Shareware Professionals and the ASP logo are trademarks of the Association of Shareware Professionals. About ASP ASP, the Association of Shareware Professionals(R), was formed in April 1987 to strengthen the future of shareware (user supported software) as an alternative to traditional commercial software. Its members, all of whom are programmers subscribing to a code of ethics or non-programmers sincerely interested in the advancement of shareware, are committed to the concept of shareware as a method of marketing. The ASP has adopted general standards that all ASP authors have agreed to follow, some of which are: Support standards: All ASP members' shareware products must provide support (in- cluded in the purchase price) for a minimum of three months from the date of registration. Any money sent to an author to register an unsupported prod- uct shall be promptly returned with an explanation that the product in question is no longer supported. Known incompatibilities with other software or hardware and major or unusual program limitations are noted in the docu- mentation that comes with the shareware (evaluation) program. BOOT.SYS - 6 - Version 1.42 'no crippling' standard: The principle behind shareware is "try before you buy." ASP believes that users have a right to try a fully functioning shareware program in their regular computing environment. Accordingly, ASP authors agree that: - The executable files (and/or items linked in with execut- ables) in the shareware and registered versions will essentially be the same. - All the program's features will be fully documented. - Registration encouragement procedures which in the judg- ment of the Board are either unreasonable or unprofes- sional are not allowed. Miscellaneous standards: The program has been thoroughly tested by the author and should not be harmful to other files or hardware if used properly. Any discussion of the shareware concept and of registration requirements is done in a professional and positive manner. If you are interested in ASP and in Shareware issues, you are invited to come to the SHAREWARE forum on CompuServe, where many shareware authors meet regularly. ASP Ombudsman Information This program is produced by a member of the Association of Share- ware Professionals (ASP). ASP wants to make sure that the share- ware principle works for you. If you are unable to resolve a shareware-related problem with an ASP member by contacting the member directly, ASP may be able to help. The ASP Ombudsman can help you resolve a dispute or problem with an ASP member, but does not provide technical support for members' products. Please write to the ASP Ombudsman at 545 Grover Road, Muskegon, MI 49442-9427, U.S.A. or send a message via CompuServe Mail to ASP Ombudsman 70007,3536 License Agreement BY INSTALLING BOOT.SYS ON YOUR SYSTEM YOU INDICATE YOUR AGREEMENT TO THE FOLLOWING TERMS AND CONDITIONS. IF YOU DO NOT AGREE TO THEM YOU ARE NOT ALLOWED TO USE THIS PROGRAM. BOOT.SYS AND THE ACCOMPANYING PROGRAMS AND DOCUMENTATION (LATER ON COLLECTIVELY REFERRED TO AS BOOT.SYS) ARE DISTRIBUTED AS IS. HANS SALVISBERG (THE AUTHOR) MAKES NO WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, WITH RESPECT TO THIS SOFTWARE AND DOCUMENTATION. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DAMAGES, INCLUDING LOST PROFITS, LOST SAVINGS, BOOT.SYS - 7 - Version 1.42 OR ANY OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF OR THE INABILITY TO USE THIS PROGRAM, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. BOOT.SYS is a copyrighted work protected by Swiss, U.S., and international copyright law. It is not free, freeware, or in the public domain. It is distributed as Shareware, which means that you may try it out at no cost for three weeks; if you determine that it fits your needs and you wish to use it regularly, you must register. If you choose not to pay the registration fee, you must stop using BOOT.SYS after the initial trial period and remove it from your computer, but you may still keep copies of it and pass them on to others as outlined below. You may give individual copies of the unregistered version of BOOT.SYS to your friends and associates for evaluation purposes as described above. You must include all the files (described in the READ.ME file) that make up BOOT.SYS without any modifica- tions, preferably in the original self-extracting LHarc archive file. You may upload BOOT.SYS to the public section of a public BBS, but you may not place it in any user group or commercial library or distribute it for a fee or in any way sell copies of it without express written permission from the Author. Under no circumstances may an unregistered version of BOOT.SYS be used in a commercial (business, corporate, government, educa- tional, or other institutional) environment except for the pur- pose of evaluation on a single computer. You may not modify or dis-assemble BOOT.SYS, nor distribute any modified or dis-assembled versions of BOOT.SYS. BOOT.SYS may not be included (bundled) with any other product for any reason what- soever without prior written permission from the Author. You may install your registered copy of BOOT.SYS on more than one computer at a time ONLY if no more than one of these computers is usually running at the same time. You may make as many backup copies of BOOT.SYS as you need for your personal backup purposes. You may NOT give, sell, lend, or otherwise transfer copies of the registered version of BOOT.SYS to any other person for any rea- son. Registered copies of BOOT.SYS have a unique registration number and display your name and address. Your registration, including that information, are transferable to future Shareware versions of BOOT.SYS, which will then be considered registered versions. No version of BOOT.SYS may be rented or leased. Any use or distribution of BOOT.SYS, which violates this license agreement, will be considered a copyright violation, and may be prosecuted to the full extent of the law. BOOT.SYS - 8 - Version 1.42 U.S. Government RESTRICTED RIGHTS: Use, duplication, or disclo- sure by the Government is subject to restrictions as set forth in subdivision (b)(3)(ii) of the Rights in Technical Data and Computer Software clause at 252.227-7013. Registration BOOT.SYS is not free! You may try it out at no charge for an initial trial period to determine if it fits your needs. If you want to continue using BOOT.SYS after the initial trial period you must register. This method of software distribution is known as Shareware. The registration fee for a single copy of BOOT.SYS is SFR 70.- + s&h (exchange rate US$ to Swiss Francs is about $0.63 = SFR 1.- (July 1991)) for registration with the author in Switzerland or $39 US + s&h for registration with PsL in the U.S.A. Payment of the single-copy registration fee entitles you to the following benefits: * A disk with the current version of BOOT.SYS * A printed and bound manual * A special utility program that lets you transfer your license to any later shareware versions of BOOT.SYS that you may obtain from any shareware source (getting an upgrade from the author requires new registration). * Free support (by electronic mail or by mail) for the first 90 days after payment, consisting of answering questions and fixing any reproducible program error(s) that interfere(s) with the intended use of the program as outlined in this documentation. The author may choose not to fix problems related to a special hardware and/or software configuration and will then arrange for a refund of the registration fee, if the problem is reported within 90 days of payment. The author makes no other warranties, expressed or implied, and this warranty is expressly limited to the cost of the regis- tration fee. * BOOT.SYS is publicly supported on CompuServe in the DOS Uti- lities section of the IBMSYS forum. A free CompuServe Intro- Pak, which includes a $15.00 usage credit, is available to registered BOOT.SYS users who do not yet subscribe to CompuServe. CompuServe will open the door for a whole new world of information, services, and interesting people. Com- puServe is also the best place to obtain technical support for products from Hans Salvisberg (and many other developers and vendors). The CompuServe IntroPak (a $39.95 value) is provided to registered BOOT.SYS users compliments of Compu- BOOT.SYS - 9 - Version 1.42 Serve, Inc., and Hans Salvisberg. This offer is dependent on its continued availability from CompuServe, Inc. For your information: Current CompuServe rates are $12.50 per connect hour plus communications surcharges (e.g., $0.30/hour in the U.S.A., $9.50/hour in Switzerland and the United King- dom, varying rates in other countries). Note: All prices and terms are subject to change without notice. BOOT.SYS must be registered before it is used in a commercial (business, corporate, government, educational, or other institu- tional) environment beyond initial evaluation or on more than one computer. There are no quantity discounts available for BOOT.SYS, because it does not make sense to purchase a large number of single-PC licenses. However, site licenses for installing BOOT.SYS on mul- tiple computers are available starting at 2 PCs. Please refer to the accompanying file SITELICE.DOC for details. The accompanying file REGISTER.FRM includes registration forms for registering single-PC copies of BOOT.SYS. If any of these files are missing or if you have any questions, please contact the author: Hans Salvisberg, Bellevuestr. 18, CH-3095 Berne, SWITZERLAND CompuServe: 73237,3556 Internet: 73237.3556@compuserve.com BOOT.SYS - 10 - Version 1.42 Installation BOOT.SYS can be used on three different levels: - one menu only - several menus in sequence - nested menus It is probably a good idea to start experimenting with BOOT.SYS on the easiest level and to build up from there. This is also how the installation instructions will be presented here. Alterna- tively, if you already have (up to nine) pairs of AUTOEXEC.BAT and CONFIG.SYS files, you can use the procedure outlined in the Quick Start chapter to get BOOT.SYS working right away. Please keep in mind that heavily editing CONFIG.SYS and AUTOEX- EC.BAT may lead to your PC not coming up in the usual configura- tion or even locking up at boot-up time. Therefore it is recommended that you first create a bootable diskette by following these steps (at the DOS prompt): 1. Insert a new diskette in drive a: and FORMAT a: /S 2. COPY c:\COMMAND.COM a: 3. COPY c:\CONFIG.SYS a: 4. COPY c:\AUTOEXEC.BAT a: 5. Edit a:AUTOEXEC.BAT and a:CONFIG.SYS and make sure that all file names (including the external DOS commands) include the drive name of your boot disk (here assumed to be c: ). 6. Boot from this diskette to see if everything is ok; check if you can start your editor as usual. Many of the features of BOOT.SYS will be presented by examples. In each chapter there is a simple example to start with and some more interesting ones to give you an idea of what BOOT.SYS can do. The upper-case portions should be copied exactly (case does not matter), the lower-case ones may be different for your sys- tem. Example: DEVICE=c:\dos\ANSI.SYS The ANSI.SYS device driver that comes with DOS is often located in the directory \dos on drive c: ; if this is not the case on your system then you should change the drive and/or path accord- ingly. The first example on each level will use DOS features only, so it should work on every system running under MS-DOS or PC-DOS. Usu- ally there is a CONFIG.SYS file (CO) and an AUTOEXEC.BAT file (AU) for each example. All text in curly braces (like {a comment}) is comment and should be omitted. BOOT.SYS - 11 - Version 1.42 Quick Start If you already have (up to nine) pairs of different CONFIG.SYS and AUTOEXEC.BAT files, you can start using BOOT.SYS right away by following these instructions: 1. Create a new master CONFIG.SYS like this: CO DEVICE=c:\bin\BOOT.SYS DEVICE=BOOT.1 1st configuration {any name} DEVICE=BOOT.SET boot=config1 {use a meaningful name, e.g. Windows} {entire content of CONFIG.SYS for the 1st configuration} DEVICE=BOOT.2 2nd configuration {any name} DEVICE=BOOT.SET boot=config2 {again, use an appropri- ate name} {entire content of CONFIG.SYS for the 2nd configuration} {etc.} DEVICE=BOOT.END 2. Create a new AUTOEXEC.BAT like this (make sure that there are no duplicate labels in different sections): AU c:\bin\BOOT SET IF ERRORLEVEL 10 GOTO not_installed GOTO %boot% :config1 {use the same name here as in CONFIG.SYS} {entire content of AUTOEXEC.BAT for the 1st configura- tion} GOTO done :config2 {use the same name here as in CONFIG.SYS} {entire content of AUTOEXEC.BAT for the 2nd configura- tion} GOTO done {etc.} :not_installed echo BOOT.SYS is not installed :done 3. Press Alt-Ctrl-Del to reboot and watch BOOT.SYS in action.(1) The real power of BOOT.SYS, which comes into play when you use multiple or even nested menus, is not used here, but this setup may be sufficient for many users' needs. The next chapters will explain how and why to create more sophisticated setups. -------------------- 1 If you see messages like 'Unrecognized command' from CON- FIG.SYS, please refer to the chapter <>. BOOT.SYS - 12 - Version 1.42 Level 1: One Menu For many users one menu is all they will ever need. It gives you the equivalent of choosing between up to nine different sets of CONFIG.SYS and AUTOEXEC.BAT. Ex Choose between one of the [SCREEN] 1.1(1) following configurations: - no RAM disk - 64K RAM disk - 128K RAM disk If there's a RAM disk, copy COMMAND.COM to it and make DOS reload the command pro- cessor from there. CO.11 BUFFERS=32 FILES=20 {any other of the usual commands that should apply to all the configurations; this goes for all the examples} DEVICE=c:\bin\BOOT.SYS {optional command line parameters} DEVICE=TOP DEVICE=TOP Select one of the following choices by DEVICE=TOP pressing the corresponding digit key, or by DEVICE=TOP moving the arrow with the Cursor-Up, Cursor- DEVICE=TOP Down, Home and End keys and pressing Enter DEVICE=TOP (or Cursor-Right): DEVICE=TOP DEVICE=BOOT.1 no RAM disk DEVICE=BOOT.SET boot=no_vdisk DEVICE=BOOT.2 64K RAM disk DEVICE=c:\dos\VDISK.SYS size=64 sector=512 dir=64 DEVICE=BOOT.SET boot=vdisk -------------------- 1 The screen shots are deliberately reproduced in a small scale. They are intended to provide a view of the general screen layout only; for the text please refer to the corresponding CONFIG.SYS listing. In the Shareware documentation they are omitted. BOOT.SYS - 13 - Version 1.42 DEVICE=BOOT.3 128K RAM disk DEVICE=c:\dos\VDISK.SYS size=128 sector=512 dir=64 DEVICE=BOOT.SET boot=vdisk DEVICE=BOOT.END {any other of the usual commands that should apply to all the configurations; this goes for all the examples} AU.11 c:\bin\BOOT SET IF ERRORLEVEL 10 GOTO not_installed GOTO %boot% :vdisk COPY c:\COMMAND.COM d: SET COMSPEC=d:\COMMAND.COM GOTO done :no_vdisk ECHO Sorry, there is no RAM disk GOTO done :not_installed ECHO BOOT.SYS is not installed! :done PATH c:\dos;c:\bin The part of CONFIG.SYS that is controlled by BOOT.SYS starts with the BOOT.SYS line and ends with the BOOT.END line. Between these two lines you define the menu to be displayed as well as the commands to be executed for each menu option. The text to the right of TOP is displayed at the top of the menu screen. You may use most of the characters of the PC character set (including the box and foreign characters). Unfortunately DOS converts all lower-case characters in the range of 'a' to 'z' to upper case(1); a work-around to this problem is presented in the next example. There is no upper limit to the number of TOP lines, as long as they fit on the screen, along with all the options; TOP may be omitted altogether and BOOT.SYS will display a default text. -------------------- 1 This applies to the BOOT.SET command as well. BOOT.SYS - 14 - Version 1.42 The BOOT.1 line introduces the first menu option. All text to the right of BOOT.1 is displayed as the option text. Between BOOT.1 and BOOT.2 there may be zero or more of the usual CONFIG.SYS commands (all kinds, not just DEVICE= ). These commands will be executed if the user selects option 1 and will be bypassed silently otherwise. The BOOT.SET line is an instruction to BOOT.SYS to define a DOS environment variable that can be used later on in AUTOEXEC.BAT. It is explained in detail in <>. There may be up to nine options each beginning with a correspond- ing BOOT.n line. The options must be numbered consecutively from 1 up to 9. You may insert empty lines and comment lines ( REM ) wherever you like; REM was introduced with DOS 4.00, for older versions you can insert comments between BOOT.SYS and BOOT.END like this: DEVICE=REM any comment So much for the CONFIG.SYS part of our first BOOT menu; even if you think you know enough already you should read on, up to the end of the next section. Very often different commands must be executed in AUTOEXEC.BAT depending on which boot-up configuration is selected. It is even possible that all your configurations use the same CONFIG.SYS commands and differ only in the contents of AUTOEXEC.BAT (see example 1.2). This can be done by defining one or more variables in CONFIG.SYS, which are kept in the very small part of BOOT.SYS that stays resident. Calling the companion program BOOT.COM with the SET parameter in AUTOEXEC.BAT copies the variables from the resident BOOT.SYS to the DOS environment, where they can be used like any other envi- ronment variables defined with the SET , PATH , or PROMPT com- mands in DOS(1). If BOOT.COM cannot find the resident driver, it displays an error message and returns an ERRORLEVEL of 10. There are many ways to use environment variables, e.g. as labels in GOTO statements, to conditionally execute commands or GOTOs in IF statments, as program parameters, or even to branch to different batch files. There is a short introduction to the use of environment variables in <>. -------------------- 1 In short: if there is a variable definition name=value and you put %name% anywhere in a batch file, then DOS will replace %name% with value . If the variable name is not defined, then DOS will simply remove %name% . BOOT.SYS - 15 - Version 1.42 Ex 1.2 On a certain LAN you may want [SCREEN] to choose between the follow- ing options: - no network support - XNS protocol - TCP/IP protocol Display the menu white on blue, use both upper-case and lower-case letters, and rear- range the menu on the screen. CO.12 DEVICE=c:\bin\BOOT.SYS /CX1f /L18 /U^ DEVICE=TOP DEVICE=TOP DEVICE=TOP ^What kind of network support do you need? DEVICE=TOP DEVICE=TOP DEVICE=TOP DEVICE=BOOT.1 none DEVICE=BOOT.2 ^X^N^S DEVICE=BOOT.SET net=xns DEVICE=BOOT.3 ^T^C^P/^I^P DEVICE=BOOT.SET net=tcp DEVICE=BOOT.END AU.12 ECHO OFF CLS c:\bin\BOOT SET >NUL: {>NUL: hides BOOT.COM's IF "%net%" == "" GOTO no_net output} auto%net% :no_net PATH c:\dos;c:\bin The command line parameters will cause BOOT.SYS to use the /Color 1f (heX), to put 18 spaces to the /Left of the option numbers, and to indent the TOP text just insert spaces in these lines. BOOT.SYS will translate all characters in the range of 'a' to 'z' to lower case except for those preceded by a '^' character (or any other you specify) which will be displayed in /Upper case. This LAN does not need any drivers in CONFIG.SYS, so the options are empty except for the BOOT.SET commands. If the user selects BOOT.SYS - 16 - Version 1.42 either XNS or TCP/IP then AUTOEXEC.BAT branches to autoxns.bat or autotcp.bat respectively(1), which will load the necessary driv- ers. This example demonstrates how to control the appearance of the menus by using additional empty TOP lines, indenting the text on the TOP lines, and using the /Left switch. There is also a /Spac- ing switch which indicates the spacing between the menu options; the default is 2, acceptable values are 1, 2, etc., as long as all the menu options fit on the screen. - For the sake of brevity the remaining examples are not optimized for good looks, and the /Uppercase switch will be omitted, too. Ex 1.3 Choose - whether you want a RAM disk, and - whether you need ANSI.SYS. If the user does not press any key within 5 seconds then take the default of RAM disk and no ANSI.SYS. CO.13 DEVICE=c:\bin\BOOT.SYS /D2 /T5 DEVICE=TOP Select your system configuration DEVICE=BOOT.1 no RAM disk, no ANSI.SYS (all RAM above DOS available) DEVICE=BOOT.2 64K RAM disk, no ANSI.SYS DEVICE=c:\dos\VDISK.SYS size=64 sector=512 dir=64 DEVICE=BOOT.3 no RAM disk, ANSI.SYS DEVICE=c:\dos\ANSI.SYS DEVICE=BOOT.4 64K RAM disk and ANSI.SYS DEVICE=c:\dos\VDISK.SYS size=64 sector=512 dir=64 DEVICE=c:\dos\ANSI.SYS DEVICE=BOOT.END The command line parameters will cause BOOT.SYS to /Timeout after 5 seconds and continue the boot process using the /Default option #2. Other command line parameters will be introduced in the next section. -------------------- 1 When execution is transferred to another batch file (without the CALL statement introduced in DOS 3.30) it does not return, i.e. the rest of the calling batch file is not executed. BOOT.SYS - 17 - Version 1.42 This example proves that one menu is not enough when you need to make more than one independent decision. Just imagine you would also like to specify whether to load your keyboard macro program or not: this would take another four options! Example 2.1 will show a better solution. BOOT.SYS Command Line Parameters Most of the command line parameters of BOOT.SYS have already been introduced informally and they are explained in detail in this chapter.(1) /CXhh Color to be used for the menu, usually specified by two /Cn hexadecimal digits hh ; if you prefer you may use the decimal equivalent n instead. The values for hh can be taken from the following table (the background gives the first and the foreground the second digit): color background foreground normal bright black 0? ?0 ?8 blue 1? ?1 ?9 green 2? ?2 ?A cyan 3? ?3 ?B red 4? ?4 ?C magenta 5? ?5 ?D brown 6? ?6 ?E white 7? ?7 ?F For monochrome systems use one of the following values: 02 =normal, 2F =high intensity, 70 =reverse video (hexa- decimal). Default value: /CX2F (bright white on green) /Dd Default option: the arrow will point to that option and if there is a timeout specified then that option will be chosen. Default value: /D1 /Ln Number of positions to indent the option numbers from the left edge of the screen. Default value: /L5 /N+ Turn NumLock on or off, for those who use the numeric /N- keypad to select options. /P Display the menu identifier in the lower right corner of the screen. This may be useful for setting up, debug- ging, and discussing complex menu systems and it is explained in example 3.1. -------------------- 1 You may use '-' instead of '/' as the switch character. BOOT.SYS - 18 - Version 1.42 /Sn Spacing between the option lines. Default value: /S2 (double-spaced) /Tn Timeout: If the user does not press any key within n /T-n seconds (or n clock ticks for /T-n , 18.2 ticks per second), then execution continues with the default option. Pressing any key within the specified time dis- ables the timeout. /T0 is legal; BOOT.SYS will check if there is a key code waiting in the keyboard buffer and continue immediately if the buffer is empty. Most BIOSes accept key presses right after the initial beep. /T No timeout; this is the default. /Uc Shift character: All characters preceded by c will be displayed in upper case, all others in lower case. This applies to the letters 'a' to 'z' on the TOP and BOOT.n lines. To display a c on the screen, write cc . There is no default value for c ; /U^ or /U~ are good choices. /Uct Shift and toggle character (analogous to Shift and Caps- Lock on your keyboard): If this parameter is specified, all lines start out in lower case, t changes case permanently and c only for the next character. Example with /U^\ : lower\UPPER\lower^Proper\IM^pROPER Use tt or ct to display a t . /U All characters 'a' to 'z' will be upper-case. This is the default. The BOOT.SET Command and Environment Variables General Introduction to DOS Environment Variables The command processor of MS/PC-DOS maintains a special storage area called the environment, which contains any number of charac- ter strings (called variables) of the form NAME=value Every variable has a name, usually composed of upper-case alpha- numeric characters, and a value, mixed-case and sometimes even with embedded space characters. DOS automatically defines a variable called COMSPEC that points to the command processor file, and you usually define at least another variable called PATH in AUTOEXEC.BAT. At the DOS prompt enter the command SET and you will see something like COMSPEC=C:\DOS\COMMAND.COM PATH=c:\dos;c:\util;c:\myapp BOOT.SYS - 19 - Version 1.42 The SET command lets you look at the environment, and it also lets you define variables like this (try it!): SET test=ok Again, enter SET without anything else on the line to display the environment, and you will see:(1) COMSPEC=C:\DOS\COMMAND.COM PATH=c:\dos;c:\util;c:\myapp TEST=ok Two special environment variables ( PATH and PROMPT ) are so important for DOS that they each have a DOS command with the same name, but they can easily be manipulated with the general-purpose SET command as well. The primary use of environment variables for our purposes is in batch files: Whenever you enclose a variable name with two per- cent signs DOS will replace the name and the percent signs with the value of the variable. If there is no variable of that name the space will be empty. The following are a few examples of how this could be used in a batch file: GOTO %test% {jump to label "ok"} ECHO The value of TEST is %test%. {simple string substi- tution, useful for debugging} EDIT %test% {command parameter} %test% {execute the command or batch file called ok} IF "%test%" == "ok" GOTO continue {string comparisons} IF NOT "%test%" == "" CALL doit.bat The use of double quotes in the last two examples is mandatory for two reasons:(2) - If the variable does not exist, " IF %test% == " would lead to a syntax error because DOS cannot handle the resulting -------------------- 1 There are certain DOS shells, e.g. Norton Commander, that ignore the SET command, i.e. you cannot change the environment. Just exit the shell and SET should work as indicated. The environment has a pre-defined fixed size, and if you try to define more (or longer) variables than will fit, DOS displays an error message similar to " Out of environment space " and ignores the command. If this happens to you, please refer to your DOS manual (SHELL= command in CONFIG.SYS) or ask an experienced user for help. 2 There are other less general ways to get similar results, but the double quotes will work most of the time. BOOT.SYS - 20 - Version 1.42 " IF == ". - If the value has embedded spaces, then the double quotes are needed to keep it together as a single piece of information. Warning: DOS lets you use SET with all kinds of parameters as long as there is an equal sign somewhere on the line, and it literally copies to the environment whatever is on the command line. Many of these 'variable definitions' are not usable in batch files; the most common error is: SET test = not_ok Enter SET to see: COMSPEC=C:\DOS\COMMAND.COM PATH=c:\dos;c:\util;c:\myapp TEST=ok TEST = not_ok The spaces on both sides of the equal sign have become part of the variable name and value. This is probably not what you intended, and DOS will not recognize " %test % " with an embedded space as a valid variable name. Lastly, you can delete variable definitions as follows: SET test= This removes the good version of our TEST variable (verify it!). Note: 4DOS, an alternative command processor by JP Software, enhances the functionality of COMMAND.COM and DOS in general in just about every way, and it also includes much more powerful environment variable support. Using Environment Variables with BOOT.SYS BOOT.SYS lets you define a variable in CONFIG.SYS by including the following statement between the BOOT.SYS and BOOT.END lines (wherever a normal CONFIG.SYS command is legal): DEVICE=BOOT.SET name=value To define more than one variable just use BOOT.SET multiple times.(1) The variable definitions are stored in the resident part of BOOT.SYS which will grow accordingly. In AUTOEXEC.BAT (or from the DOS command line) you must execute BOOT SET -------------------- 1 You could even set the PROMPT and the PATH with BOOT.SET . BOOT.SYS - 21 - Version 1.42 to copy the variable definitions into the DOS environment where they can be used like any other environment variables. If you want, you can free up the environment space taken by these vari- ables later on with the command(1): BOOT CLEAR BOOT.SET is modeled closely after the SET command in DOS and it accepts just about anything as a variable definition. Not all such definitions will be usable in DOS.(2) The variable name is always translated to upper case; by default the value is translated as well, but if you need lower-case char- acters, you can use the /Upper-case switch as follows:(3) DEVICE=BOOT.SET /U^ name=^Value Trouble-shooting Variable Problems If you are having problems with BOOT.SET : - Use the DOS-internal SET command without any parameters to display the current contents of the environment. - Try to define the variables from the DOS command line with the DOS-internal SET command. - Keep in mind that extraneous spaces to the left or the right of the equal sign are stored as part of the name or value, respectively. - To make comparisons with possibly empty strings or with strings containing spaces you must use double quotes as shown in the previous section. - You may want to set default values for certain variables with BOOT.0.(4) - You may need to increase the size of the DOS environment if you use many and/or long variable definitions; BOOT.SYS will display appropriate directions for your version of DOS. -------------------- 1 You cannot regain the space used by the resident part of BOOT.SYS, but this is typically very small, i.e. less than 200 bytes. 2 See the warning in the previous section. 3 /U is fully explained in <>. 4 BOOT.0 is explained in Example 2.2. BOOT.SYS - 22 - Version 1.42 Level 2: Several Independent Menus Following Each Other Example 1.3 showed that there are situations where you need more than one menu: whenever you have to make several independent decisions. Ex 2.1 Choose - whether you want a RAM disk, and - whether you need ANSI.SYS. If the user does not press any key within 5 seconds then take the defaults of RAM disk and no ANSI.SYS. [SCREEN] [SCREEN] CO.21 DEVICE=c:\bin\BOOT.SYS /T5 DEVICE=BOOT.A /D2 DEVICE=TOP Do you need a RAM disk? DEVICE=BOOT.1 no DEVICE=BOOT.2 yes, 64K RAM disk DEVICE=c:\dos\VDISK.SYS size=64 sector=512 dir=64 DEVICE=BOOT.SET VDISK=D DEVICE=BOOT.B /D1 DEVICE=TOP Do you need ANSI.SYS? DEVICE=BOOT.1 no DEVICE=BOOT.2 yes, ANSI.SYS DEVICE=c:\dos\ANSI.SYS DEVICE=BOOT.Z {this line is optional, omit it!} DEVICE=BOOT.END AU.21 c:\bin\BOOT SET IF ERRORLEVEL 10 GOTO not_installed IF "%VDISK%" == "" ECHO Sorry, there is no RAM disk IF NOT "%VDISK%" == "" COPY c:\COMMAND.COM %VDISK%: IF NOT "%VDISK%" == "" SET COMSPEC=%VDISK%:\COMMAND.COM GOTO done :not_installed ECHO BOOT.SYS is not installed! :done BOOT.SYS - 23 - Version 1.42 PATH c:\dos;c:\bin The first menu is introduced by the BOOT.A line, the second by BOOT.B , etc., up to BOOT.Y , giving you a maximum of 25 menus. The BOOT.Z line is optional and should be omitted here for better error checking; its use will become clear with Example 3.1. The command line parameter /T sets a timeout value of 5 seconds for all menus. Alternately, command line parameters may be speci- fied on the BOOT.A , etc., lines, and apply only to that menu, such as /D in this example. Actually both can be combined: The parameters on the BOOT.SYS line set the defaults which can be changed for specific menus. Sometimes the loading order of different device drivers may be important. Thus it is possible that a device driver must be loaded between two menus. This can be done with the following extension: CO.22 DEVICE=c:\bin\BOOT.SYS /T5 DEVICE=BOOT.A /D2 DEVICE=TOP Do you need a RAM disk? DEVICE=BOOT.0 {device drivers} DEVICE=BOOT.1 no DEVICE=BOOT.2 yes, 64K RAM disk DEVICE=c:\dos\VDISK.SYS size=64 sector=512 dir=64 DEVICE=BOOT.SET VDISK=D DEVICE=BOOT.0 {device drivers} DEVICE=BOOT.B /D1 DEVICE=TOP Do you need ANSI.SYS? DEVICE=BOOT.1 no DEVICE=BOOT.2 yes, ANSI.SYS DEVICE=c:\dos\ANSI.SYS DEVICE=BOOT.END BOOT.SYS - 24 - Version 1.42 In each menu the first option may be preceeded and/or the last option followed by BOOT.0 ; any device drivers (or other com- mands) listed under this 'option' are always loaded/executed when this menu is displayed at all. Note: It is easiest to picture BOOT.SYS as 'executing' the com- mands under the first BOOT.0 , followed by menu A and the com- mands under the second BOOT.0 , and finally 'executing' menu B . In fact this is not correct! DOS begins by executing the commands up to and including BOOT.SYS . At this point BOOT.SYS takes over and processes all menus down to BOOT.END . Processing a menu means that the user selects one of the options, and BOOT.SYS wipes out the menu definition lines and the command lines of the other options. When BOOT.SYS has processed the last menu, DOS comes in again and executes the commands that BOOT.SYS has not wiped out, including the ones after BOOT.END . Level 3: Nested Menus For a sophisticated system configuration it may be desirable to have nested menus. This leads to a logical extension of level 2: within any option you can embed an entire sequence of submenus. Example 3.1 may not be a very good one, but 3.2 will show how this can be used in real life. [SCREEN] [SCREEN] [SCREEN] [SCREEN] CO.31 DEVICE=c:\bin\BOOT.SYS /T5 /P DEVICE=BOOT.A /D2 {A} DEVICE=TOP Do you need a RAM disk? DEVICE=BOOT.1 no DEVICE=BOOT.2 yes, RAM disk {a} DEVICE=BOOT.A /T {A2A} DEVICE=TOP What size RAM disk do you need? DEVICE=BOOT.1 64K DEVICE=c:\dos\VDISK.SYS size=64 sector=512 dir=64 DEVICE=BOOT.2 128K DEVICE=c:\dos\VDISK.SYS size=128 sector=512 dir=64 {b} DEVICE=BOOT.B {A2B} DEVICE=TOP Do you want COMMAND.COM to be DEVICE=TOP copied to the RAM disk? DEVICE=BOOT.1 yes DEVICE=BOOT.SET COPY_CC=Y BOOT.SYS - 25 - Version 1.42 DEVICE=BOOT.2 no {c} DEVICE=BOOT.Z {d} DEVICE=BOOT.B /D1 {B} DEVICE=TOP Do you need ANSI.SYS? DEVICE=BOOT.1 no DEVICE=BOOT.2 yes, ANSI.SYS DEVICE=c:\dos\ANSI.SYS DEVICE=BOOT.END AU.31 c:\bin\BOOT SET IF ERRORLEVEL 10 GOTO not_installed IF "%COPY_CC%" == "Y" COPY c:\COMMAND.COM d: IF "%COPY_CC%" == "Y" SET COMSPEC=d:\COMMAND.COM c:\bin\BOOT CLEAR {remove the variable definition} GOTO done :not_installed ECHO BOOT.SYS is not installed! :done PATH c:\dos;c:\bin The command line switch /P ( /Path) enables the display of the menu identifiers in the lower right corner of each menu. These are the same strings that are shown as comments in the CONFIG.SYS listing above.(1) /P is useful for support and debugging pur- poses. Calling BOOT.COM from the DOS command line without any parameters will display a list of all the menus that were displayed and the corresponding choices. -------------------- 1 The menu identifier describes how you got to the current menu: e.g. 'A2B' means - you have chosen option 2 on the first first-level menu ('A') - this option has at least two submenus, and you have already made your choice on the first submenu (the 'A2A' menu) - you are now looking at the second submenu ('A2B'). A level number is displayed along with the menu identifier ('A' is a level-1 menu, 'A2A' and 'A2B' are at level 2). BOOT.SYS - 26 - Version 1.42 If the user selects option 1 (no RAM disk) in menu {A} then everything will be as in example 2.1; but if option 2 is selected, a submenu(1) to specify the size of the RAM disk will be presented as well as another submenu to specify whether COM- MAND.COM should be copied to the RAM disk. Let us now examine more closely what happens when the user selects option 2 (keeping in mind what was said at the end of the Level 2 chapter): First, any commands at {a} are executed. Then menu {A2A} is dis- played with no timeout, so the user must make a selection before the execution continues. At {b} there could be a BOOT.0 line and the associated commands would be executed whenever the user selects option 2 in menu {A}. Then menu {A2B} is processed and depending on the choice the variable is set or not. At {c} again there could be a BOOT.0 line (like {b}). Any further commands at {d} are executed (like {a}), and finally processing continues with menu {B}. The role of the BOOT.Z line should now become clear: every sequence of menus (starting with BOOT.A , BOOT.B , etc.) is ter- minated with a BOOT.Z . For the top level menu sequence BOOT.Z is not required because BOOT.END takes its place, and BOOT.SYS can do better checking of nesting errors if you omit BOOT.Z . In AUTOEXEC.BAT the variable is copied to the environment (if it is defined at all) and then erased when it is no longer used. Theoretically there is no limit to the nesting level, but BOOT.SYS cannot display more than 25 menus, so you cannot go deeper than 25. Although BOOT.SYS cannot display more than 25 menus per run (most users probably would not put up with more than 5 menus anyway), the number of menus in the entire menu tree may be much larger than that. DOS enforces some upper limit on the size of CON- FIG.SYS though, probably 64K bytes. The final example shows a more [SCREEN] involved setup. I used to present my personal setup here, but it has become too complex by now... -------------------- 1 The contents of option 2 are indented to illustrate the submenu relationship. Note: If your editor replaces series of spaces with tabs, then columns may not align properly on the screen, especially if you use indentation. BOOT.SYS - 27 - Version 1.42 [SCREEN] [SCREEN] CO.32 break=off buffers=32 country=041,437,c:\dos\country.sys files=20 lastdrive=H stacks=9,128 shell=c:\dos\command.com c:\dos /p /e:300 DEVICE=C:\BOOT\BOOT.SYS /L18 /U^\ /CX2F DEVICE=BOOT.A /T0 /CX4F /D1 DEVICE=TOP DEVICE=TOP DEVICE=TOP ^Select any special boot-up options: DEVICE=TOP DEVICE=BOOT.1 >>> \NONE <<< DEVICE=BOOT.2 \UNIFORM\ - ^Access non-\DOS\ diskettes device=c:\ut\uniform\uniform.sys at+ dr96=0 DEVICE=BOOT.3 ansi.sys device=c:\dos\ansi.sys DEVICE=BOOT.4 ^Insert an additional device driver DEVICE=BOOT.EDIT {see the next section} DEVICE=DUMMY FILLER DUMMY FILLER DUMMY FILLER DEVICE=BOOT.5 ^Alt-^Ctrl-^Del = cold boot DEVICE=BOOT.OPTION BOOTASSIST {see the next section} DEVICE=BOOT.SET BOOTASSIST=COLD DEVICE=BOOT.B /T5 DEVICE=TOP DEVICE=TOP DEVICE=TOP ^Select operating environment: DEVICE=TOP DEVICE=BOOT.0 DEVICE=BOOT.SET CED=Y {default} DEVICE=BOOT.1 \DOS\ with 1^M^B disk cache DEVICE=BOOT.SET C386=MAX device=c:\386max\386max.sys ext=1384 device=c:\386max\386load.sys prog=c:\dos\cache.exe 1024 ON /EXT /Q buffers=5 device=c:\386max\386load.sys size=4216 prog=c:\dos\vdisk.sys 360 512 64 /E:8 DEVICE=BOOT.2 \DOS\ without disk cache DEVICE=BOOT.SET C386=MAX device=c:\386max\386max.sys ext=360 device=c:\386max\386load.sys size=4216 prog=c:\dos\vdisk.sys 360 512 64 /E:8 BOOT.SYS - 28 - Version 1.42 DEVICE=BOOT.3 \DESQ\view 386 DEVICE=BOOT.SET C386=QEMM DEVICE=BOOT.SET DV=Y DEVICE=BOOT.SET CED= {erase default variable} DOS=LOW {MS/PC-DOS 5.00 only} DEVICE=BOOT.A /T5 /D2 DEVICE=TOP DEVICE=TOP DEVICE=TOP ^Select \DESQ\view configuration: DEVICE=TOP (size of 1st window, others 12k^B less) DEVICE=TOP DEVICE=BOOT.1 ^Standard: 535^K^B free device=c:\dv\qemm\qemm386.sys extmem=360 device=c:\dos\vdisk.sys 360 512 64 /E:8 DEVICE=BOOT.2 ^Extended: 546^K^B free device=c:\dv\qemm\qemm386.sys extmem=360 ram rom device=c:\dos\vdisk.sys 360 512 64 /E:8 DEVICE=BOOT.3 ^Huge: 639^K^B free (no graphics!) DEVICE=BOOT.SET NOEGA=Y DEVICE=REM use LOADHI NOEGA device=c:\dv\qemm\qemm386.sys extmem=360 ram rom include=A000-B7FF device=c:\dos\vdisk.sys 360 512 64 /E:8 DEVICE=BOOT.Z DEVICE=BOOT.4 ^Windows 386 DEVICE=BOOT.SET C386=HIMEM device=c:\dos\himem.sys device=c:\dos\smartdrv.sys 1024 device=c:\dos\vdisk.sys 360 512 64 /E:8 DEVICE=BOOT.SET CED= {erase default variable} DEVICE=BOOT.5 ^Turbo ^Debugger 386 and ^M^S-^D^O^S DEVICE=BOOT.SET C386=TD device=c:\tc\td\tdh386.sys DEVICE=BOOT.6 plain ^D^O^S device=boot.option free {see the next section} DEVICE=REM Note: BOOT.COM will return ERRORLEVEL 10 DEVICE=BOOT.END DOS=HIGH {MS/PC-DOS 5.00 only} BOOT.SYS - 29 - Version 1.42 AU.32 path c:\dos;c:\bin;c:\ut;c:\wp\lm C:\BOOT\BOOT SET >NUL: if errorlevel 10 goto plain_dos if not "%bootassist%" == "" C:\BOOT\BOOT BOOTASSIST %BOOTASSIST% >nul: set bootassist= {don't need this anymore} quikkey 24 if "%c386%" == "MAX" goto max if "%c386%" == "QEMM" goto qemm c:\dos\plus\kbext if "%ced%" == "Y" c:\ut\ced -b500,200,300,128,128,128 -fc:\ut\ced.cfg goto cont :max c:\386max\386load size=1052 envname prog=c:\dos\plus\kbext if "%ced%" == "Y" c:\386max\386load size=9892 envname prog=c:\ut\ced -b500,200,300,128,128,128 -fc:\ut\ced.cfg goto cont :qemm if "%noega%" == "Y" c:\dv\qemm\loadhi c:\dv\qemm\noega set noega= {don't need this anymore} c:\dv\qemm\loadhi c:\dos\plus\kbext if "%ced%" == "Y" c:\dv\qemm\loadhi c:\ut\ced -b500,200,300,128,128,128 -fc:\ut\ced.cfg goto cont :cont if "%WIN%" == "Y" cd c:\win if "%WIN%" == "Y" win if "%DV%" == "Y" cd c:\dv if "%DV%" == "Y" dv :plain_dos The first menu is for 'special needs': it has a timeout of 0 and defaults to an empty option. To use non-DOS diskettes or ANSI.SYS just press a key (e.g. the space bar) immediately after the two beeps at boot-up. This displays the 'special needs' menu, which appears in red to distinguish it from the normal green menus. You also might put in here device drivers for your scanner, your CD-ROM drive, or any other devices that you do not use fre- quently. BOOT.SYS - 30 - Version 1.42 The BOOT.EDIT and BOOT.OPTION lines will be explained in the next section. The second menu (which is usually the first to be displayed) lets you select the operating environment to use: - MS-DOS with disk cache - MS-DOS without disk cache (more EMS memory) - DESQview 386 - Windows - Turbo Debugger with 386 support Depending on which operating environment is selected, one of four mutually exclusive 386 control programs are used, and all of them have to be loaded from CONFIG.SYS; without BOOT.SYS you would need at least 4 different versions of CONFIG.SYS. Some of the 386 control programs support loading other device drivers and TSRs into 'high DOS memory' above the 640K, so AUTOEXEC.BAT is affected as well. This menu could also be used to select other command processors like 4DOS, *nix-like shells, or other replace- ments for COMMAND.COM. The DESQview option has a submenu to choose between three differ- ent QEMM386 setups; each option gives different amounts of memory available, along with other advantages and disadvantages (e.g., an additional 96K bytes of memory can be made available for each window if you do not want to use any graphics programs). The sample AUTOEXEC.BAT demonstrates nicely how unrelated aspects of your system configuration can be defined in a modular way, e.g. while this CONFIG.SYS always runs Windows with HIMEM, that is not reflected in AUTOEXEC.BAT; if you wish to start running Windows under QEMM you only need to change CONFIG.SYS. Controlling the DOS= Command in MS/PC-DOS 5.00 General Introduction MS/PC-DOS 5.00 has introduced a new command to CONFIG.SYS: DOS=HIGH|LOW,UMB|NOUMB The DOS= command defines two unrelated properties of your system configuration that are discussed separately:(1) -------------------- 1 Please refer to the MS-DOS Reference for more information on DOS= . BOOT.SYS - 31 - Version 1.42 -> DOS=HIGH|LOW MS/PC-DOS 5.00 has the ability to load most of itself into the so-called High Memory Area (HMA).(1) The DOS default is DOS=LOW , i.e. not use the HMA, but usually you will want DOS to go high and give you additional conventional memory in the first 640K. However, there are circumstances when DOS=LOW might be better: - Some programs are incompatible with DOS=HIGH , e.g. some ver- sions of Borland's Turbo Debugger 386. - Some programs can make better use of the HMA than DOS and you gain more by letting them use the HMA instead of DOS, e.g. DESQview-386. BOOT.SYS lets you have HIGH and LOW configuration side by side, but some special care is needed as explained below. -> DOS=UMB|NOUMB MS/PC-DOS 5.00 supports loading device drivers and resident pro- grams (TSRs) into the so-called Upper Memory Blocks (UMBs).(2) 386MAX and QEMM386 have had this capability for a long time, and they provide their own utilities for loading high; by default ( DOS=NOUMB ) DOS does not interfere. On the other hand, DOS=UMB instructs DOS to allocate the UMBs as soon as they become available and to integrate them into its own memory management.(3) This has two consequences: - You can use the DEVICEHIGH and LOADHIGH commands that are built into DOS (however these are not as powerful and versa- tile as the ones included with 386MAX or QEMM386). - DOS can make free UMBs available for use by normal application programs (not just device drivers and TSRs). At present 386MAX and QEMM386 do not support this. -------------------- 1 The HMA is the first 64K-16 bytes of extended memory (80286 processor and up), and it is defined in the so-called eXtended Memory Specification (XMS). Every memory manager that adheres to the XMS standard provides the HMA, e.g. HIMEM.SYS, 386MAX, and QEMM386. 2 UMBs are regions in the address range between 640K and 1M on computers equipped with an 80386 processor or higher, that are not used for any other purpose. A suitable memory manager (a so-called UMB provider, e.g. 386MAX, QEMM386, or HIMEM and EMM386 as included with MS/PC-DOS 5.00) can map extended memory into these regions and make them usable for device drivers and resi- dent programs. 3 DOS=UMB is the only way to go if you use HIMEM.SYS and EMM386.EXE that are provided with MS/PC-DOS 5.00. BOOT.SYS - 32 - Version 1.42 Some time in the future the third-party memory managers will probably support the DOS memory management and DOS=UMB will work for everything, but until then BOOT.SYS lets you have UMB and NOUMB configurations side by side. BOOT.SYS and the DOS= Command The DOS= command creates some intricate problems for BOOT.SYS because it is prescanned, i.e. DOS looks throughout CONFIG.SYS for DOS= commands and sets itself up accordingly before BOOT.SYS receives control. BOOT.SYS still manages to give you complete freedom in your configurations, but some special care is required. During the DOS prescan for DOS= , the last instance of HIGH / LOW and UMB / NOUMB , respectively, is recorded for use by DOS, no matter where the DOS= line(s) is/are located. These settings are used for loading the device drivers above BOOT.SYS(1) and as defaults for those BOOT.SYS configurations that do not specify anything else. To let BOOT.SYS control HIGH / LOW , DOS=HIGH must be active! We recommend that you put DOS=HIGH below BOOT.END .(2) When you select a certain configuration, BOOT.SYS wipes out all the commands that are not part of the selected configuration; then it scans the remaining lines between BOOT.SYS and BOOT.END for DOS= commands. Just like DOS, BOOT.SYS uses the last instance of each of the two properties and the boot process continues with these new settings. It may be helpful to record the DOS= settings in environment variables for later use in AUTOEXEC.BAT and possibly other batch files. DOS= Summary To control the DOS= command use the following procedure: 1. Put the line DOS=HIGH,NOUMB -------------------- 1 I.e. if DOS=HIGH is set, and an XMS driver is loaded ahead of BOOT.SYS and the XMS driver provides the HMA (high memory area), then DOS will take the HMA and load high immediately; likewise, if DOS=UMB is active and some upper memory blocks become avail- able, then DOS will take them immediately. 2 ... and of course no DOS=LOW below it. BOOT.SYS - 33 - Version 1.42 at the bottom of CONFIG.SYS (below BOOT.END ) to set the defaults to HIGH and NOUMB .(1) 2. In the configurations that need UMB , insert: DOS=UMB DEVICE=BOOT.SET UMB=Y {optional} 3. In the configurations that need LOW , insert: DOS=LOW DEVICE=BOOT.SET LOW=Y {optional} Technically, when you specify DOS=LOW , BOOT.SYS allocates the HMA and DOS is forced low, just as if the HMA was not available at all. The HMA is automatically released the first time you call BOOT.COM. If you are using HIMEM.SYS, there is one caveat: The version of HIMEM.SYS that comes with MS/PC-DOS 5.00 has the ability to load itself into the HMA if DOS=HIGH is specified, but it grows considerably when DOS is forced low by BOOT.SYS.(2) To avoid wasting precious RAM, either use one of the more ver- satile third-party 386 control programs (e.g. QEMM386 or 386MAX) instead of HIMEM.SYS or use a different version of HIMEM.SYS (e.g. the one that comes with Microsoft Windows 3.0) for the 'low' configurations. BOOT.SYS Extensions This chapter explains extensions to BOOT.SYS that go beyond the menu system. BOOT.EDIT You can edit individual lines on the fly while booting up by including the following lines in CONFIG.SYS (between the BOOT.SYS and BOOT.END lines): DEVICE=BOOT.EDIT {any standard CONFIG.SYS command} -------------------- 1 HIGH is required by BOOT.SYS, and NOUMB is recommended because it is the standard DOS default, i.e. if you specify neither UMB nor NOUMB you should get NOUMB . 2 Use MEM /C to get information about the sizes of your resident programs and device drivers. BOOT.SYS - 34 - Version 1.42 [SCREEN] When the menu option containing these lines is selected, BOOT.SYS displays a screen with a box that lets you edit the text to the right of the equal sign. The keyword to the left of the equal sign ( DEVICE , FILES , etc.) and the equal sign are required and cannot be edited. All the usual editing keys are supported; a summary will be displayed on the screen. There is one restriction: the length of the line cannot be increased!(1) When you press , your edits are saved and execution con- tinues. To ignore this line and continue, press instead. You may put some explanatory text to the right of BOOT.EDIT and BOOT.SYS will display your text instead of the standard message explaining the edit keys. If you need more than one line you can use as many BOOT.EDIT lines as you like - it works exactly like DEVICE=TOP . Example: DEVICE=BOOT.EDIT You may experiment with different DEVICE=BOOT.EDIT BUFFERS=n values ( = ignore): BUFFERS=020 BOOT.OPTION FREE If the line DEVICE=BOOT.OPTION FREE -------------------- 1 There are several ways to get around this limitation: - Insert spaces into the line, e.g. between the name of the device driver and the parameters (DOS discards any spaces to the left or immediately to the right of the equal sign, and most text editors do not save spaces at the end of the line). - Insert dummy text that you can erase while editing the line. - Insert normal spaces at the end of the line followed by a single 'hard space'; this is the character with the ASCII value 255, and it can usually be entered by holding down the Alt key, entering 255 on the numeric keypad, and releasing the Alt key. Some of these work-arounds may not work with all versions of DOS. BOOT.SYS - 35 - Version 1.42 is part of at least one of the options you select, then BOOT.SYS will not stay resident as a device driver.(1) This lets you create a bare-bones DOS option for checking out TSR conflicts and the like. The resident size of BOOT.SYS is so small (typically less than 200 bytes) that FREE is not worth it in regular use. If BOOT.SYS does not stay resident, the variables you may have set in CONFIG.SYS are lost and BOOT.COM has no way to copy them to the environment - it cannot even tell that BOOT.SYS has done its work! In that case it displays an error message indicating that BOOT.SYS is not loaded and returns an ERRORLEVEL code of 10, which you can use to avoid loading TSRs in AUTOEXEC.BAT. An example of this option is part of the last sample configura- tion above. BOOT.OPTION BOOTASSIST There exist system configurations and software packages that make your system crash when you hit the Alt-Ctrl-Del key combination. BOOTASSIST lets you modify the behavior of Alt-Ctrl-Del, and it may be of help in your particular situation. To set it up requires two steps; the first is to include the line DEVICE=BOOT.OPTION BOOTASSIST somewhere between BOOT.SYS and BOOT.END.(2) Executing this line slightly increases the resident size of BOOT.SYS but does not change anything else. The second step is to activate BOOTASSIST by executing one of the following commands from the DOS prompt or in a batch file (possibly AUTOEXEC.BAT): BOOT BOOTASSIST WARM BOOT BOOTASSIST COLD BOOT BOOTASSIST INHIBIT -------------------- 1 There may be versions of DOS with which this does not work. Any reports are appreciated! 2 You can put it wherever a normal CONFIG.SYS command is accept- able, either as part of an option, or between BOOT.Z and BOOT.END to have it available all the time. BOOT.SYS - 36 - Version 1.42 Each of these commands does to Alt-Ctrl-Del what its parameter implies: WARM is just the normal boot process, COLD is like turning the power off and back on, and INHIBIT disables Alt-Ctrl- Del. If you are having problems with Alt-Ctrl-Del, one of these command may help, but there's no guarantee! Your chances are best if you load all your resident utilities before activating BOOT- ASSIST.(1) The remainder of this section is a technical explanation of how BOOTASSIST works. The resident part is a keyboard interrupt (09h) handler, which is inserted at the head of the handler chain by one of the commands above.(2) Being the first in the chain it can usually perform the required action which may or may not work with your setup. If you want to load another resident utility program that hooks up to the same interrupt, you can unhook the BOOTASSIST handler by issuing the command BOOT BOOTASSIST OFF and put it back at the head of the chain after loading the TSR. If the INT 09h vector does not point to the BOOTASSIST handler, it cannot be unhooked anymore and you get an error message indi- cating that another program has grabbed the vector, including the new address. If BOOTASSIST does not work properly and turning it OFF does not generate an error message, then BOOTASSIST cannot solve your par- ticular configuration problem. BOOT.OPTION EXTMON for Laptops When you use BOOT.SYS with a laptop computer and you have an external monitor attached, then BOOT.SYS will usually come up on the internal monitor. This is a minor inconvenience which is addressed by EXTMON: EXTMON switches to the external monitor. However, because there are no standards for this function among the different laptop manufacturers (and sometimes not even within a product line), it has to be implemented separately for each system. -------------------- 1 If you use one of the KEYBxx keyboard drivers to get a non-U.S. keyboard layout (national language support), you must activate BOOTASSIST after KEYBxx. 2 Warning: SideKick insists on being the first in the chain and thus defeats this scheme. BOOT.SYS - 37 - Version 1.42 At the time of this writing support is implemented for Compaq portable and laptop computers only. Support for other computers may be added in the future if there is interest and the relevant information is available. The syntax for EXTMON is DEVICE=BOOT.OPTION EXTMON where is machine-specific and can be taken from the fol- lowing table: Manufacturer Computer Models Compaq COMPAQ all Compaq portables and laptops all COLOR standard color screen (mode 3) all MONO standard monochrome screen (mode 7) There are two ways of handling EXTMON, depending on how smart your computer is: If it is smart, it will not try to switch to an external monitor when there is none. In that case you can use the following lines in CONFIG.SYS, which will make BOOT.SYS use the right monitor everytime: DEVICE=c:\bin\BOOT.SYS DEVICE=BOOT.A {optional} DEVICE=TOP ... DEVICE=BOOT.0 DEVICE=BOOT.OPTION EXTMON { as above} DEVICE=BOOT.1 ... ... DEVICE=BOOT.END If your computer cannot tell whether an external monitor is attached or not, you must use a different setup: DEVICE=c:\bin\BOOT.SYS DEVICE=BOOT.A /D1 /T10 DEVICE=TOP Which monitor do you want to use? DEVICE=BOOT.1 Internal DEVICE=BOOT.2 External DEVICE=BOOT.OPTION EXTMON { as above} BOOT.SYS - 38 - Version 1.42 DEVICE=BOOT.B DEVICE=TOP ... {this is your menu} DEVICE=BOOT.1 ... ... DEVICE=BOOT.END This will display an additional menu at the very beginning where you can select the monitor to use. After a /Timeout of 10 seconds BOOT.SYS will select the /Default 1, the internal screen. Press- ing the '2' key within that time causes it to switch to the external monitor for the next menu. This can be done even without seeing the menu A, and menu B will be displayed right where you want to see it. Warning: We strongly advise you to use a bootable diskette to try out the EXTMON function! If the switch does not work properly, your internal screen may go blank, and you will have no way of editing the CONFIG.SYS file on the disk you used to boot up! BOOT.OPTION COLOR Some people prefer more colorful screens to the white on black used by DOS. This option lets you specify any color (with the same numbers as for the /C switch on the BOOT.SYS command line), which will be used immediately after the BOOT.SYS menu.(1) How- ever, some device drivers use their own colors, and there is nothing that BOOT.SYS could do to change that. Example: DEVICE=BOOT.OPTION COLOR X1F {bright white on blue} BOOT.COM Command Line Parameters The syntax of BOOT.COM is BOOT where is one of the following: SET Copy the BOOT.SYS variables defined in CONFIG.SYS into the DOS environment and display them. -------------------- 1 A value of 0 can be used to change the color to black on black, effectively hiding the messages generated from CONFIG.SYS. Executing CLS from AUTOEXEC.BAT or from the command line restores the default color. Warning: This is not recommended, because in case of a problem you will not be able to see any error messages, and you may have to boot from a diskette and change the color to find out what the problem is. BOOT.SYS - 39 - Version 1.42 CLEAR Erase the BOOT.SYS variables from the DOS environment to free up space. no parameter BOOT.COM will display something similar to the following example: The user selected the following menu choices: A1 B3 B3A1 This would mean that when you booted up your PC, you selected option 1 on the first menu (menu A) and option 3 on the sec- ond menu (menu B); that option apparently has a submenu (menu B3A) and you selected option 1. If there is only one menu, then BOOT.COM will also set the ERRORLEVEL (see below). WARM Do a warm boot (like Alt-Ctrl-Del). COLD Do a cold boot (like turning the power switch off and on). WARM and COLD accept an optional switch ( /O ) for compati- bility with very /Old BIOS versions. BOOTASSIST

See the chapter on BOOTASSIST. VERSION Display whether this is a registered or an evaluation ver- sion, and how to register it. (1) {This is obsolete and included for backward compatibility only!} This form is used for retrieving the user's choices (usually in AUTOEXEC.BAT) after CONFIG.SYS has been processed. The menu selector is the string of letters and digits that uniquely identifies a menu.(2) Expanding on the example 3.1 above, BOOT b would display 3 and set the DOS ERRORLEVEL(3) -------------------- 1 If there is only one menu, then the is optional. 2 If you specify /P on the BOOT.SYS line in CONFIG.SYS the menu selector (and the nesting level) is displayed in the lower right corner of each menu. 3 Be sure to always test ERRORLEVELs in descending order and immediately after the call to BOOT.COM! BOOT.SYS - 40 - Version 1.42 to 3, and BOOT b3a would display/return 1. Of course you must always start testing with the top level, and only when you know that BOOT b returns 3, you can ask for BOOT b3a . If BOOT.SYS is not installed or did not stay resident, BOOT.COM displays an error message and returns an ERRORLEVEL of 0. HELP Display a summary of this list. PAUSE.SYS, a Debugging Aid You may have some very sophisticated setups by now, and if a certain configuration does not work right it can be quite chal- lenging to find the problem, especially because the messages from the various drivers scroll by very quickly on fast machines. PAUSE.SYS provides various functions in CONFIG.SYS that may be helpful; the primary function is similar to what the PAUSE com- mand does in a batch file: DEVICE=c:\bin\PAUSE.SYS any text you like will display the text and wait for you to press any key to continue. The text is always translated to lower case; to get an upper case character, preceed the character with a caret ( ^ ), and to display a caret, write two carets. PAUSE.SYS accepts some command line switches that change its behavior: DEVICE=c:\bin\PAUSE.SYS /C {clear the screen} DEVICE=c:\bin\PAUSE.SYS /P {do a PrintScreen} DEVICE=c:\bin\PAUSE.SYS /O any text {output only, no wait} DEVICE=c:\bin\PAUSE.SYS /Exxx {ESC sequence} All of these options suppress the wait for a key. The last option is intended to send escape sequences to ANSI.SYS or a replacement with similar capabilities; the following lines would change the screen color to bright white on blue and clear the screen, pro- vided that ANSI.SYS is already loaded: DEVICE=c:\bin\PAUSE.SYS /E[1;37;44m DEVICE=c:\bin\PAUSE.SYS /E[2^J {upper case J} BOOT.SYS - 41 - Version 1.42 To get a summary of the functions of PAUSE.SYS, just TYPE PAUSE.SYS from the DOS prompt. Closing Remark By now you have versions of CONFIG.SYS and AUTOEXEC.BAT that are much more sophisticated than usual. Unfortunately there is a growing trend in the software industry to provide automated installation programs that read and update your system configura- tion files, and this leads to some problems: - There are installation programs that will boldly overwrite your configuration files or make other undesirable changes. - Others will try to make sense of the current contents and then change to whatever their programs preferences are; they will certainly not be able to handle CONFIG.SYS and AUTOEX- EC.BAT correctly when BOOT.SYS is installed. - A third category of installation programs will examine the contents of CONFIG.SYS and abort the installation if they find something offensive. The prime examples are MS Windows 386 and MS Windows 3.0, which refuse to install if they find a mention of another 386 control program in CON- FIG.SYS. - 386MAX and QEMM386 are in a class all by themselves: they come with installation programs called MAXIMIZE/OPTIMIZE that will change your CONFIG.SYS and reboot several times to find a good system configuration. These installation programs can- not handle your sophisticated CONFIG.SYS and they will prob- ably end up in a 'crash loop', forcing you to boot from a floppy disk to recover.(1) There are two possible cures to this situation: The first is to keep a duplicate of CONFIG.SYS and AUTOEXEC.BAT on hand, so you can examine the changes and integrate them at the proper places. In fact, keeping current backups is always a good idea! The second cure is to patch IBMBIO.COM and COMMAND.COM to use other names for CONFIG.SYS and AUTOEXEC.BAT. Warning: This is not for the faint of heart! If you feel somewhat uncomfortable doing this, then please do not even try! The procedure is deliberately not explained here, because if you do not have any experience -------------------- 1 For information on how to run MAXIMIZE/OPTIMIZE, please look at "Answers to Common Question, How can I run...". BOOT.SYS - 42 - Version 1.42 with patching files, you should not make your first steps in this field with your system files.(1) - Now to the advantage of this patch: You will never have to worry about automated installation programs anymore, because these will assume that you do not have either CONFIG.SYS nor AUTOEXEC.BAT, they will usually create these files, and you can go back and look calmly at how the system should be set up for the program in question and make any necessary changes yourself. Answers to Common Questions Why do I get error messages like 'Unrecognized command' from CON- FIG.SYS? With versions of DOS prior to 4.00, commands that have fewer than three characters to the right of the equal sign cannot be wiped out cleanly, and DOS will give an error message similar to 'Un- recognized command'. This can usually be fixed by appending ' x' to the command in question; thus 'LASTDRIVE=F' would become 'LASTDRIVE=F x' and 'BREAK=ON' would become 'BREAK=ON x'. Commands with numbers like 'FILES=20' accept leading zeros, like 'FILES=020'. I do not know how universal these work-arounds are - you will have to experi- ment if they work with your version of DOS. My choice is not recognized in AUTOEXEC.BAT... If you are still using the old ERRORLEVEL interface in AUTOEX- EC.BAT (not documented anymore), make sure that all of your IF ERRORLEVEL tests start with the highest values first. If you are using the environment variable interface, please turn to the section <> I get an error message from BOOT.SYS... If BOOT.SYS finds an error in your CONFIG.SYS file, it tries to display a useful error message and aborts. Aborting implies wip- ing out all the commands between BOOT.SYS and BOOT.END . BOOT.COM then returns an ERRORLEVEL code of 0 and displays an error message, too. -------------------- 1 A second word of warning: If you patch your system files and make a bootable diskette, the diskette will get copies of your patched system files, so you must use the new names for CON- FIG.SYS and AUTOEXEC.BAT on the diskette as well. BOOT.SYS - 43 - Version 1.42 Will BOOT.SYS get along with automated installation programs that modify CONFIG.SYS and/or AUTOEXEC.BAT? The answer is NO! Please read the chapter "Closing remark" in the Installation section for more information. How can I run the 386MAX/QEMM386 installation programs (MAXIMI- ZE/OPTIMIZE) with BOOT.SYS? To run MAXIMIZE/OPTIMIZE do the following: - Rename your CONFIG.SYS and AUTOEXEC.BAT files to something else. - Create new CONFIG.SYS and AUTOEXEC.BAT files and include only those commands that you wish to use for your new 386MAX/QEMM386 configuration (don't include BOOT.SYS!). - Run MAXIMIZE/OPTIMIZE. - Merge the new CONFIG.SYS and AUTOEXEC.BAT into the old ver- sions as your new 386MAX/QEMM386 option. If you patched IBMBIO.COM and COMMAND.COM to use different names for CONFIG.SYS and AUTOEXEC.BAT, then you must undo those patches or restore the original files, because MAXIMIZE/OPTIMIZE will use the standard file names. BOOT.SYS doesn't work right with the DOS= command in MS/PC-DOS 5.00... Please read the chapter on DOS= in the <> section. BOOT.COM says that BOOT.SYS is not installed... There can be two reasons for this error message: - BOOT.SYS is not installed in your CONFIG.SYS or failed for some reason (usually with an appropriate error message). - You are using BOOT.OPTION FREE, and BOOT.SYS did not stay resident; consequently BOOT.COM has no way of finding it now. The only purpose of BOOT.OPTION FREE is to define a boot option that will start DOS without any resident programs (like booting from the original DOS distribution disk), e.g. for experimenting with TSR conflicts, and it should not be used under normal circumstances. Can I use all characters to create boot-up menus? Yes, to create menus you may use any of the characters of the PC character set (including the box and foreign characters) except for NUL, HT, BS, LF, CR, and Ctrl-Z. The BEL character (Ctrl-G) sounds the bell and displays a space. BOOT.SYS - 44 - Version 1.42 I can't get the columns to align properly... If your editor converts multiple spaces to tabs then the text on the screen may not align properly. Your best bet is to set the editor so that it will not compress spaces to tabs. - However, everything should be fine if the tabs are on every 8th column (standard for DOS) and there are no (or a multiple of 8) spaces to the left of TOP or BOOT.n . Possible problem with BREAK=ON If you use the BREAK=ON command in your CONFIG.SYS file you should make sure that BREAK really is enabled by entering BREAK at the DOS prompt. If BREAK is off, try moving the BREAK=ON com- mand below the BOOT.END line. To avoid this problem altogether you can enable BREAK later in AUTOEXEC.BAT with the command BREAK ON . BOOT.SYS doesn't work right with XMAEM.SYS in PC-DOS 4.0x... PC-DOS 4.0x and probably later versions process the XMAEM.SYS driver in a special way: it is loaded before any other part of CONFIG.SYS is processed. Unfortunately this makes it impossible for BOOT.SYS to control that driver because XMAEM.SYS is already installed when BOOT.SYS runs. A work-around to this problem is to rename XMAEM.SYS to some other name (like XMAEMX.SYS ) and to use that name in the DEVICE= command. Load the renamed driver early in your CONFIG.SYS, defi- nitely before XMA2EMS.SYS . I have a certain configuration where Alt-Ctrl-Del crashes the system and forces me to hit the big red switch. Can BOOT.SYS help? Yes, BOOT.SYS may be able to help. Follow the directions in the BOOTASSIST chapter of the installation section. If this does not help you may still be able to re-boot from the command line (see BOOT.COM Command Line Parameters). BOOT.SYS - 45 - Version 1.42 The Windows installation program (and maybe others as well) com- plain that I have a 386 memory manager installed... The installation program examines the contents of CONFIG.SYS and when it finds a mention of 386MAX, QEMM386, or similar programs it complains, because Windows has its own 386 memory management and may have problems with other 386 control programs. The conse- quences of this for you as a user of BOOT.SYS are very minor: just set up a special BOOT.SYS menu item specifically for Windows, possibly one for each mode. The quickest way to get Windows installed is to rename CONFIG.SYS to something else - the installation program will run without problems, even with one of the offensive programs loaded. It will create a new CONFIG.SYS containing all the commands it expects to have in the BOOT.SYS Windows option of your real CONFIG.SYS file. Look at configuration 32 for an example. Please consult the chapter "Closing remark" in the installation section for some general information concerning automated instal- lation programs. What can I do if BOOTASSIST does not work? Try turning BOOTASSIST OFF; if this is successful then BOOTASSIST will not work with your configuration and nothing can be done about it. If you get an error message, please refer to the BOOT- ASSIST chapter of the installation section. BOOT.SYS - 46 - Version 1.42 Revision History 0.95 Beta release 0.96 Fixed /v in BOOT.COM Fixed invalid parm error 1.00 First public release 1.01 Allow '-' along with '/' for command line switches 1.10 Documentation update, mention of ASP 1.20 Fixed minor bug that disabled /Timeout under some very special timing circumstances. Added /Spacing to BOOT.SYS. Individual CONFIG.SYS lines can now be edited on the fly while booting up. New parameters to BOOT.COM: - "HELP", "/H", "/?", "?" to get a short command summary - "VERSION" to get version information - "WARM" and "COLD" to re-boot from the command line or from a batch file; "/O" switch for compatibility with old BIOSes New feature to make Alt-Ctrl-Del perform a cold boot, a warm boot, or no boot (BOOTASSIST). Option to keep BOOT.SYS from installing its tiny resident part to get a minimal plain-DOS setup (may not work with all DOS versions). New international support channel on CompuServe. Free CompuServe IntroPak for registered users. New retail distribution channel in the U.S.A. through PsL. 1.21 Fixed bug that caused BOOT.SYS to hang when it was called from the first line of CONFIG.SYS and running under DOS 4.xx. Added new chapter "Quick Start" (Thanks, F.P.). Added Home/End key support to the BOOT.SYS menus. 1.22 Fixed bug that caused BOOT.SYS to ignore the first switch on the BOOT.A etc. lines under DOS 4.xx. 1.25 Documentation update. New BOOT.OPTION EXTMON (Compaq: ok, Toshiba: needs test- ing) (Thanks, B.F.). New BOOT.OPTION COLOR. New PAUSE.SYS utility. Fixed several minor bugs. 1.26 Fixed a bug where BOOT.COM was reporting the wrong version (Thanks, S.G.). BOOT.SYS - 47 - Version 1.42 1.27 Fixed a bug in PAUSE.SYS (Thanks E.R.). Minor documentation update. If /T0 is specified and no key is pressed, then the menu does not flash on and off. If no key is pressed the Shareware screen is never dis- played; this allows unattended boot-up without the risk of waiting for a key to acknowledge the screen. Several other internal tune-ups. 1.40 Full support for the new MS/PC-DOS 5.00 including the DOS= command. New BOOT.SET for defining environment variables from CON- FIG.SYS. New /N switch to set/clear NumLock (Thanks B.G.). BOOT.OPTION EXTMON: new MONO and COLOR (Thanks O.M.). New case toggle to complement case shift (/Uct). Several other internal tune-ups. Major documentation revision. 1.41 Fixed a bug in BOOT SET under DOS 3.20 (Thanks B.H.). Fixed an old bug in BOOT.SYS /Cn (Thanks D.H.). Several other internal tune-ups. Minor documentation revision/correction. 1.42 Changed message that is displayed when BOOT.SYS cannot control the DOS= command because it is loaded high. Corrected file dates.