
Ä Area: Batch file programming (Fido) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  Msg#: 99                                           Date: 11 Jul 95  15:50:32
  From: Matthew Lewis                                Read: Yes    Replied: No 
    To: Rick Viscusi                                 Mark:                     
  Subj: Multi-Config  (Part 1)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
@MSGID: 1:134/32 30029de3
@REPLY: 1:267/161.0 30019f73
@PID: GED G0615
 Hello Rick,

At 17:45, 10 Jul 95, Rick Viscusi wrote to Matthew Lewis:

ML>> when using the DOS 6+ multi-config option,

RV>     Multi-config, what is this all about?

Multi-config setups are nothing new to many denizens of BATPOWER, and others
who play with the setup of their computers.

Prior to the release of MS-DOS version 6.0, it was most often done with a batch
file that would copy alternate Autoexec.Bat and Config.Sys files to the root
directory of the boot drive, or by booting from a floppy disk set up for a
particular configuration.

With the release of MS-DOS 6.0, Microsoft included a new feature, which some,
including myself, feel is one of their brighter ideas.

This feature allows you to include a MENU in your Config.Sys file, which will
allow you up to 9 choices of how you want to boot the system.  Any of these 9
can also be a SUBMENU offering another 9 choices.  A SUBMENU can also have more
SUBMENUs.

I don't know if there's a limit to how many levels deep you can go with these
SUBMENUs, but I've successfully gone 5 levels deep with no problems while just
playing with it to see what could be done.

The possibilities are limited only by your imagination.

Indeed, one of Microsoft's brighter ideas.

Here's how it works, showing some examples from my own configuration for the
machine I'm using at the moment.  They're totally different on each of my
computers.

Here are the first few lines of my Config.Sys file:

        [MENU]
        MENUCOLOR=14,4
        MENUITEM=Bbs, Flossie's Saloon {2}
        SUBMENU=Links, LINKS Golf
        MENUITEM=Win, Microsloth Windoze 3.1
        SUBMENU=MS-DOS, MS-DOS 6.20
        MENUITEM=Test, System Test & Maintenance
        MENUDEFAULT=Bbs, 15

That first line tells DOS that this is a menu.  You can have only one "[MENU]"
line in Config.Sys, and though not certain, I believe it must be the very first
line.

Next, MENUCOLOR sets the colors (logical)  14,4 gives me bright yellow text on
a red background.  This immediately gets my attention, and I find it easy to
read.  You can use any color combination that looks good to you.  This line is
optional.

The next 5 lines (MENUITEM & SUBMENU) are the choices what will appear on the
screen.  The part after the equals sign and before the comma, is the actual
name of that configuration or submenu.  It's also known as a block name.  More
on "Blocks" later.  The part after the comma is the text that will appear on
the screen.  I believe it's limited to 60 characters.  You can have up to 9
choices per menu.

The last line above (MENUDEFAULT) is optional.  If used, that menu choice will
be highlighted.  If not used, the first choice will be highlighted.  The comma
and following number are optional.  If used, that choice will automatically be
selected after that number of seconds.  If a zero is used, that choice will
immediately be selected, and you won't even see the menu.

When the system boots, the menu will be displayed.  If a time was specified on
the MENUDEFAULT line, you'll see a countdown timer.

At this point, hitting the Enter key will select the highlighted item, which is
the default.  If you want a different choice, just move the highlight bar with
the up/down arrow keys, or type its number, and hit Enter to select it.

Ok, I guess it's time to explain "Blocks" now.

You build your Config.Sys file with "Blocks."  Any line enclosed in square
brackets is a "Blockname" and all lines below it, until the next "Blockname"
are a part of that "Block."  Simple, eh?

Blocknames are like labels in a batch file.  When you select a choice from the
menu, Config.Sys branches (jumps) to that Block, and executes those lines.  It
also sets the environment variable CONFIG to that Blockname.  This comes in
very handy later on, when we get into Autoexec.Bat.

I'm starting to go a bit long here, so I'll continue in "Part 2" of this
message.

Wouldn't want to exceed the dreaded 99 line limit of some older readers.

                                Matthew.....

-!-
 ! Origin: Flossie's Saloon & BFDS Site * Calgary * 1-403-262-5998 (1:134/32)
SEEN-BY: 134/1 2 14 17 32 40 42 85 143 146 207 211 202/203 300 406 701 777
SEEN-BY: 202/800 900 1112 1206 1207 1301 1601 1709 396/1 3417/2 3615/50 51
@PATH: 134/32 17 3615/50 202/777 1207


Ä Area: Batch file programming (Fido) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  Msg#: 100                                          Date: 11 Jul 95  15:51:06
  From: Matthew Lewis                                Read: Yes    Replied: No 
    To: Rick Viscusi                                 Mark:                     
  Subj: Multi-Config  (Part 2)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
@MSGID: 1:134/32 3002a76f
@REPLY: 1:267/161.0 30019f73
@PID: GED G0615
 Hello Rick,

Continuing from where I left off in Part 1 of this message.

Here's my [Links] block:

        [Links]
        MENUITEM=Lj, Play with Joystick
        MENUITEM=Lm, Play with Mouse
        SUBMENU=MENU, Return to Main Menu
        MENUDEFAULT=Lm

I've got 3 choices on this SUBMENU.  The third is one I've not seen documented
anywhere, but decided to try several months ago, as the structure of the main
menu and submenus are the same.  Sure enough, it worked, and I've been using it
ever since as a convenient "Bail-Out" which takes me back to the very top
should I decide I didn't really want to do that anyway.

Note there's no time specified on the MENUDEFAULT line.  That feature doesn't
work in submenus, but it will still highlight the default, so pressing the
Enter key will still select it.

"Play with Mouse" is now highlighted, but I want to use the joystick instead,
so I either type a "1" or hit the up arrow key to select the first choice, and
then hit the Enter key, and it branches to my [Lj] block.

        [Lj]
        DEVICE=C:\DOS\SETVER.EXE
        DEVICE=C:\DOS\HIMEM.SYS
        DEVICE=C:\DOS\RAMDRIVE.SYS 1600 /E
        DEVICE=C:\BIN\TANSI.SYS
        DOS=HIGH
        BUFFERS=40
        FILES=32
        LASTDRIVE=D
        SET CONFIG=Links
        SHELL=C:\DOS\COMMAND.COM C:\DOS\ /E:256 /P
        STACKS=0,0

This looks pretty much like a run-of-the-mill Config.Sys file, except for that
"SET" command, doesn't it?

Beginning with MS-DOS version 6.0, you can use the SET command to set
environment variables from Config.Sys rather from a batch file later.

I don't recommend this as a normal practice, as it will cause memory to be
wasted later on, but Config.Sys has already set the CONFIG variable to "[Lj]"
so I'm only adding 3 bytes here, and it will save me some work later on.

If I had selected to play with the mouse instead of the joystick, the SUBMENU
would have branched to my [Lm] block instead.

        [Lm]
        INCLUDE=Lj
        DEVICE=C:\BIN\MOUSE.SYS /3K /BHIGH /S02 /DLEFT /CENHANCE /COFF /1

That INCLUDE command can save you a lot of typing.  This block executes all the
commands in my [Lj] block, and loads my mouse driver, which is the only
difference between the two configurations.

Whoever came up with the idea for Microsoft's Multi-Config is starting to sound
even brighter now.  Pity they don't have a few more like him.

Finally, after several more "Blocks" we get down to the bottom of the
Config.Sys file, where we find:

        [COMMON]
        NUMLOCK=OFF

Any commands in the [COMMON] block will be included every time you boot.

That's the only command I use in ALL of my configurations, but you can include
as many as you wish to, or even leave this block out if you have no common
commands.

That's pretty well all there is to setting up a Multi-Config Config.Sys file.

All the details, and several examples can easily be found by going to your DOS
prompt and typing:

        HELP MULTI-CONFIG

This will even give you more information than the printed manual.

Looks like I better start a "Part 3" to explain the various options available
in Autoexec.Bat, though some readers will have already figured that out on
their own.  I've given them sufficient clues.

                                Matthew.....

-!-
 ! Origin: Flossie's Saloon & BFDS Site * Calgary * 1-403-262-5998 (1:134/32)
SEEN-BY: 134/1 2 14 17 32 40 42 85 143 146 207 211 202/203 300 406 701 777
SEEN-BY: 202/800 900 1112 1206 1207 1301 1601 1709 396/1 3417/2 3615/50 51
@PATH: 134/32 17 3615/50 202/777 1207


Ä Area: Batch file programming (Fido) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
  Msg#: 101                                          Date: 11 Jul 95  16:31:44
  From: Matthew Lewis                                Read: Yes    Replied: No 
    To: Rick Viscusi                                 Mark:                     
  Subj: Multi-Config  (Part 3)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
@MSGID: 1:134/32 3002b2c3
@REPLY: 1:267/161.0 30019f73
@PID: GED G0615
 Hello Rick,

Continuing from Part 2 (this should finish it) ...

Now that we're done with Config.Sys, it's on to Autoexec.Bat, a subject
slightly more "On-Topic" for the echo.     ;-)

Remember those "Blocknames" we used in Config.Sys ?

The one we chose to boot with is now available to us as the CONFIG environment
variable, unless we changed that variable with a SET command in Config.Sys.

This gives a lot of decision making power in Autoexec.Bat.

Microsoft suggests using the IF command, and/or the GOTO command with labels
having the same names as your Blocknames.

Any place in a batch file where you use the string "%CONFIG%" (without the
quotes)  DOS will substitute the contents of the CONFIG variable, which is your
Blockname, unless you changed it.

You could use commands like these:

        If %CONFIG% == Win C:\Dos\Smartdrv
        If not %CONFIG% == Win d:\path\load some other cache
        and so on ...

Or do it this way:

        This gets done on every boot
        That gets done on every boot too
        Some other thing gets done all the time as well
        GOTO %CONFIG%
        :Win
        rem     do all your Windows setup stuff here
        win
        goto end
        :WP
        rem     setup WordPerfect here
        wp
        goto end
        :Links
        rem     off to the golf course
        goto end
        :BBS
        rem     do setup
        bbs.bat
        :Test
        rem     setup Test configuration here
        :end

Note that I didn't include a "goto end" after starting the BBS.  If the command
you use to start a program is another batch file, you don't need it.

If, on the other hand, I had left out the "goto end" commands below the :Win,
:WP, and :Links labels, and booted up to run Windows, when I exited Windows, it
would load WordPerfect, followed by Links, and finally try to run the BBS.

Well, I went and figured out yet another way that Microsoft didn't suggest.

Create a separate "Autoexec.Bat" for each of your configuration options, but
give them names the same as your Blocknames, like Win.Bat, BBS,Bat, Links.Bat,
and so on.  Keep the root directory a bit cleaner by putting them all in a
subdirectory (C:\BOOT is a logical choice) then you can have an Autoexec.Bat
file in the root directory with the single line:

        @C:\Boot\%CONFIG%

I've done it this way (almost).  There are a few things I want to do EVERY time
I boot, so I put those commands in my Autoexec.Bat file, which uses the above
line as its last line.

There's nothing difficult at all about this Multi-Config thing, but it does
require a bit of work on your part to put it all together.

I happen to feel it's worth the extra work, as it allows me to boot up with a
configuration that's optimized for whatever application I want to run at the
time.

It's not for everyone, but for those who take the time to set it up, it can
make life with a computer much friendlier.

A final note about "Blocknames."  They can be up to 70 characters long, but if
you want to use them later as labels, only the first 8 characters are
significant (first 40 for 4DOS or NDOS).

If you want to use them later as filenames, the maximum is 8 characters.

And a final, final note, on Config.Sys.  It seems that the [MENU] line does NOT
need to be the first line in Config.Sys, but anything above it will be executed
with every boot.  (read through the help file again)

                                Matthew.....

-!-
 ! Origin: Flossie's Saloon & BFDS Site * Calgary * 1-403-262-5998 (1:134/32)
SEEN-BY: 134/1 2 14 17 32 40 42 85 143 146 207 211 202/203 300 406 701 777
SEEN-BY: 202/800 900 1112 1206 1207 1301 1601 1709 396/1 3417/2 3615/50 51
@PATH: 134/32 17 3615/50 202/777 1207

