home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-386-Vol-2of3.iso
/
c
/
cfg.zip
/
CFG.DOC
< prev
next >
Wrap
Text File
|
1993-01-01
|
91KB
|
2,448 lines
CFG Version 2.0
Mark Treadwell
1247 Foursome Lane
Virginia Beach, Virginia 23455-6819
Voice: (804) 497-3281
CompuServe: 73700,3344
Internet: 73700.3344@compuserve.com
Copyright (c) 1992, 1993 Mark Treadwell
All Rights Reserved
CFG is a program that provides multiple utilities for use during CONFIG.SYS
execution and from the DOS command line. The program does not remain resident
and releases all memory on termination. Suggestions for additions to CFG are
welcome. If you desire, contact me via CompuServe Mail or in the following
CompuServe Forums:
CIS:IBMSYS Section 1 (DOS/DOS Utils [S])
CIS:MSDOS Section 1 (General)
CIS:ZENITH Section 1 (General)
ZNT:TIPS Section 1 (General Info [U])
──────────────────────────────────────────────────────────────────────────────
TO USE
──────────────────────────────────────────────────────────────────────────────
Syntax From CONFIG.SYS:
DEVICE=[drive:][/path]Cfg.Com CommandName [Options]
From the DOS command line or batch file:
[drive:][/path]Cfg CommandName [Options]
Parameter [drive:][/path]
Specifies the location of the CFG.COM file.
CommandName
The list of valid CommandNames is given in the COMMANDS
section below. The CommandNames must be spelled exactly as
shown.
[Options]
CommandName related options and SubCommandNames are detailed
below.
Switches /Dn Divisor switch. Several commands let you select an optional
block size for ErrorLevel reporting of results that are
larger than 255. Each function has a default value that is
given below. The n specifies the decimal number by which
the result is divided. Valid values for n range from 1 to
65535. The number should be entered without commas.
(Example: /D8192)
/E Display the exit ErrorLevel (command line only).
/? Display an abbreviated command summary (command line only).
See the individual commands for additional switches.
ErrorLevel Generally, the exit ErrorLevel is 0 for off/invalid/disabled/etc.
and 1 for on/valid/enabled/etc. Other values are given for each
function. An ErrorLevel of 255 generally indicates that an error
occurred. Functions with no particular exit ErrorLevel will
always set it to 0.
Example See the SAMPLE CONFIG.SYS section at the end of this file.
CommandNames
AM Day FileExist Mono StacInst
ANSI DESQview Files Month Toggle
ASCII DirExist FileSize Page Tones
Beep Display FileText Pause Typematic
Blink DOSmajor FullYear PM Verify
Border DOSminor GetKey Protected VGA25
Break DOSversion Hour PrtScr VGA43
CanCopy Drive IACAfill RamDrive VGA50
Cecho DriveExist IACAread Rem VideoMode
Cls DriveReady Intense RenDir WaitFor
ColdBoot DriveSize IsVol ROMdate WaitTo
Color DriveSpace KeyFlush ROMmodel WarmBoot
Cols Echo KeyPause Rows WeekDay
ComHide EchoPause KeyPress Second Window
Compare EGA25 Locate Share Year
ComSwap EGA43 LptHide Shift-AND
CoProc EMMversion LptSwap ShiftLock
CPU Env Memory Shift-OR
Cursor FileDTC Minute ShiftState
Notes CFG is now a dual mode program. It will run both as a device
driver from CONFIG.SYS and as a command line utility. The change
was made because I wanted to consolidate all my utilities in one
place and to make the testing of new functions easier. The title
line of each command below specifies whether it can be used from
CONFIG.SYS, from a BATCH file (command line) or both.
Case does not matter in CONFIG.SYS since DOS capitalizes
everything in the file during its preliminary scan. This is
pertinent when using the Echo or EchoPause commands.
CFG provides numerous error messages to make problems easier to
diagnose and correct since rebooting multiple times to get
everything right can be tedious. See the SAMPLE CONFIG.SYS
section for examples of program use.
Switches are handled by CFG as follows: After the command line
has been transferred to a local buffer and before CommandName
parsing, the command line is scanned for any switches. If a valid
switch is found, a program variable is set and the switch is
blanked from the local command line by replacing it with spaces.
Thus, a switch may be placed anywhere on the command line and
still be found. Realize, however, switches will also be found in
text strings (such as in Echo, Cecho and EchoPause) where they may
not be meant. This method greatly simplifies parsing and reduces
potential confusion, despite its limitations.
CFG may be loaded high during execution using the DOS Version 5.0
DeviceHigh or LoadHigh commands or using another memory manager
such as Quarterdeck's QEMM or Qualitas' 386Max/BlueMax. Doing so
with the third party programs may actually waste memory since
stubs of the loader programs may remain resident in memory. It is
simplest (and safest) to execute CFG via a Device statement from
CONFIG.SYS or directly from the command line.
PC Magazine PATCH Utility Variables
───────────────────────────────────
[TEXT] : Echo Carriage Return/Line Feed Insert Character
: Echo Lower Case Toggle Character
: Command Line Switch Character
[NUMBER] : Tones Low Point Frequency
: Tones High Point Frequency
: Tones Step Value
: Tones Duration
──────────────────────────────────────────────────────────────────────────────
COMMANDS
──────────────────────────────────────────────────────────────────────────────
All command line formats and examples given below should be understood to
begin with "Device=[drive:][/path]Cfg.Com " in the CONFIG.SYS file or
"[drive:][/path]Cfg " from the command line unless specified otherwise.
══════════════════ ANSI . . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if the ANSI driver is loaded in memory.
Command line format:
ANSI
Exit ErrorLevels:
0 = ANSI is not installed
1 = ANSI is installed
Determines if any ANSI driver is installed by writing ANSI cursor positioning
sequences to the screen.
This function was written by the author.
══════════════════ ASCII . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Read decimal numbers from the command line and writes the corresponding ASCII
characters to DOS StdOut.
Command line format:
ASCII a b c ...
where a b c ... represent decimal numbers. The function reads the numbers and
writes the corresponding ASCII characters to DOS StdOut. This allows the
output to be redirected as desired. This is a very useful way of creating
short temporary files or sending printer control characters.
Example command line:
ASCII 64 67 68 32 > %TEMP%CD.BAT
This example writes "@CD " to a temporary file. Follow this with "CD >>
%TEMP%CD.BAT" and you have a quick batch file that will return you to the
current directory when executed.
This function was written by the author.
══════════════════ Beep . . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Beep the speaker.
Command line format:
Beep [m,n[;m,n] ... ]
where m corresponds to a frequency in Hertz and n corresponds to the number of
1/18 second increments that comprise the duration. If nothing is specified,
the default sound is a C note for 1/6 of a second (1046,3). By separating the
argument pairs with semicolons, a series of tones may be produced with the
same Beep command. No spaces should be in the argument string to ensure
proper parsing. Decimal numbers are required.
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ Blink . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Enable blinking screen characters.
Command line format:
Blink
Calls Interrupt 10H Function 10H Subfunction 3 to enable blinking characters
on EGA and above. Any characters with intense backgrounds will start
blinking.
This function was written by the author.
══════════════════ Border . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Set the screen border color.
Command line format:
Border [Color]
The notes on colors for the Cls command apply to the Border command except as
noted here.
If no color is given or an invalid color is specified, the current screen
background color at the cursor location is used. If anything appears after
the CommandName that cannot be parsed as a color, an error message is
displayed. This function may be used to indicate various regions or phases of
device driver installation or batch file execution.
This function was written by the author.
══════════════════ Break . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine status of DOS extended Break checking.
Command line format:
Break
Exit ErrorLevels:
0 = Break is off
1 = Break is on
This function was written by the author.
══════════════════ CanCopy . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if there is enough room to copy files to a disk.
Command line format:
CanCopy FileSpec [d:]
Exit ErrorLevels:
0 = No room to copy files or DOS file error
1 = Room to copy files
where FileSpec can use any DOS wildcards and d: corresponds to a valid DOS
drive. If d: is omitted, the default drive is used.
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ Cecho . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Echo text to the screen with the specified colors.
Command line format:
Cecho [/B|/I] [/C] [/N] "Fore [on] Back" Text
The desired screen color for Text must be enclosed in double quotes. The
notes for the Cls command use of colors apply. The /B switch calls the Blink
function to enable blinking characters on EGA and above. The /C switch is
used to output a carriage return only at the end of the Text, returning the
cursor to the first column for overwriting the previous output. The /I switch
calls the Intense function to enable intense backgrounds on EGA and above.
The /N switch is used to eliminate the final carriage return/line feed,
leaving the cursor at the end of the String just displayed.
The displayed text starts with the first character after the closing double
quote of the color, leading spaces are included. During execution from
CONFIG.SYS, the Echo command line format applies.
This function was adapted and expanded from the BATCHMAN utility written by
Michael J. Mefford and published in the 30 January 1990 Utilities section of
PC Magazine.
══════════════════ Cls . . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Clear the screen with a choice of foreground and background colors.
Command line format:
Cls [Foreground [on] Background]
The following colors may be used:
- Black - Grey
- Blue - Bright Blue
- Green - Bright Green
- Cyan - Bright Cyan
- Red - Bright Red
- Magenta - Bright Magenta
- Yellow - Bright Yellow
- White - Bright White
If any color in the right column is chosen for a background, the video display
is reprogrammed to show intense background colors vice blinking text. Some
programs may subsequently reset this, causing all text on the screen to start
blinking.
If ANSI is not installed, the screen is cleared using a BIOS window scroll.
Afterwards, the screen colors may not remain permanent, depending on the
behavior of the video adapter. If ANSI is installed before CFG is run, CFG
will detect it and use ANSI escape sequences to change system colors.
Note that the "Bright ..." colors are scanned on the command line with only a
single space between the words. This was done to simplify the logic of the
parsing routine. Otherwise, CFG will accept any number of spaces between
words.
If no colors a given or if an invalid combination is used, the current screen
colors at the cursor location are used. If anything appears after the
CommandName that cannot be parsed as a color, an error message is displayed
with a three second WaitFor pause prior to continuing with the clear screen.
Cls sets the screen border (overscan register) to the same color as the
background. Use the Border command if you want to change this. It also
restores the cursor size to what it was initially since some ANSI clear screen
routines change the cursor size.
This function is loosely based on two programs: The CLS.SYS driver written by
William R. Peate [CompuServe: 76525,2366] and downloaded from the CompuServe
ZiffNet ZNT:TIPS Forum Library 16 (Gen Utils) and the BATCHMAN utility written
by Michael J. Mefford and published in the 30 January 1990 Utilities section
of PC Magazine. The command line color scanning and ANSI code was written by
the author.
══════════════════ ColdBoot . . . . . . . . . . . . . . . . . . . . . [BATCH]
Perform equivalent of a power-on system reset.
Command line format:
ColdBoot
All disk buffers that may not yet be written are flushed to disk via Interrupt
21H Function 0DH (Disk Reset) prior to system reset. The function jumps to
FFFF:0000 after clearing the warm boot flag in the BIOS data area.
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ Color . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Set the screen color for future output using ANSI escape sequences without
clearing the screen.
Command line format:
Color Foreground [on] Background
The notes on colors for the Cls command apply to the Color command except as
noted here.
ANSI must be installed. If it is not installed, the function is aborted with
an error message. If no colors are given or if an invalid combination is
used, an error message is displayed.
The Color command is designed to be used immediately after ANSI has been
loaded into memory to set its default colors from white on black to what you
desire. It may also be used to highlight the output of a specific program or
group of programs that do not use the BIOS for output. Note that Color will
not repaint the screen. It only sets the color of any future output made via
DOS. Use the Cls command to reset the entire screen.
This function is a modification of the Cls routine written by the author.
══════════════════ Cols . . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine the number of displayed columns.
Command line format:
Cols
The returned ErrorLevel is based on the value stored in the BIOS data area.
This function was written by the author.
══════════════════ ComHide . . . . . . . . . . . . . . . . . . . . [CONFIG]
Hide and restore the serial port base addresses.
Command line format:
ComHide SubCommandName
The following are valid SubCommandNames: Hide, Restore. Each SubCommandName
may be abbreviated to its first letter. Error messages are displayed if the
routine fails. (See the error message section below.)
ComHide hides the serial port base addresses by copying them to another
location in memory when the Hide option is used. On restoration with the
Restore option, ComHide verifies the signature and checksum stored with the
port addresses to ensure that they were not accidently over-written while
hidden. ComHide then copies the base addresses back to their normal location.
The default location for the hidden data is 7001:0000. This is below the 512
Kb boundary in the event that the machine only has that much base memory
available, and high enough to keep it from being over-written during execution
of other device drivers while the data is hidden.
Example command lines:
CFG.COM ComHide Hide
MANGLE.SYS
CFG.COM ComHide Restore
This function was adapted from the LptHide function.
══════════════════ Compare . . . . . . . . . . . . . . . . . . . . . [BATCH]
Compare two strings.
Command line format:
Compare [/C] String1 String2
Exit ErrorLevels:
0 = Strings are not the same
1 = Strings are the same
String1 and String2 must be a single group of characters, containing no
separators. The comparison is case sensitive. The /C switch makes the
comparison case insensitive.
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ ComSwap . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Swap the serial base port addresses for the two serial ports specified.
Command line format:
ComSwap a b
where a and b are the numbers of the serial ports to be swapped. Valid
numbers are 1, 2, 3 and 4. An error message is given if one of the ports is
missing or invalid.
ComSwap switches the two ports as far as DOS is concerned. This is useful if
you need to shift the port addresses around prior to loading software device
drivers. This function may not have any effect for programs that use hard-
coded port addresses. This function does not shift hardware IRQ values. The
contents of the port addresses are not checked during the swap.
Example command line:
ComSwap 4 2
This function was written by the author.
══════════════════ CoProc . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine the Intel CoProcessor installed.
Command line format:
CoProc
Exit ErrorLevels:
0 = No coprocessor installed
1 = 8087
2 = 80287
3 = 80387DX or 80387SX
4 = 80486DX or 80487SX
Use the CPU function to determine which processor is present.
This function was adapted from the CPUID.ASM program downloaded from
CompuServe's CIS:INTELFORUM Library 4 (Math/CPU Processors) as CPUID.ZIP.
══════════════════ CPU . . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine the Intel Microprocessor installed.
Command line format:
CPU
Exit ErrorLevels:
0 = 8086/8088
1 = 80286
2 = 80386DX or 80386SX
3 = 80486SX
4 = 80486DX or 80487SX
This routine uses the Intel recommended technique for properly determining
what type of CPU is installed in the system on which it is run. The
identification code will determine which Intel microprocessor and Intel Math
CoProcessor (if any) is installed in the system. If an 486 microprocessor has
been recognized, the routine will determine if the CPU has a floating point
unit (486 DX CPU, 487 SX MCP) or not (486 SX CPU).
Use the CoProc function to determine which math coprocessor is present.
This function was adapted from the CPUID.ASM program downloaded from
CompuServe's CIS:INTELFORUM Library 4 (Math/CPU Processors) as CPUID.ZIP.
══════════════════ Cursor . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Hide, restore and set the size of the text mode screen cursor.
Command line format:
Cursor SubCommandName
or
Cursor a b
where a and b are decimal numbers of the start and stop screen scan lines for
the cursor. The following are valid SubCommandNames: Default, Hide, Restore.
Each SubCommandName may be abbreviated to its first letter. If the routine
fails, error messages are displayed and the cursor size is not changed.
The Hide option works by setting the "invisible" bit code using Interrupt 10H
Function 1. The Restore option works by setting the "normal" bit code. Some
programs may modify this on their own. There are known bugs in these
functions in some EGA BIOS 43 line modes.
The Default option returns the cursor to the default values given below.
The start and stop scan lines are numbered with line 1 at the bottom and
increasing towards the top. Using this convention, the following cursor
values apply:
│ 25 line │ 43/50 line │
Adapter │ Default │ Default │ Maximum
────────┼─────────┼────────────┼────────
CGA │ 1 2 │ --- │ 8
EGA/MDA │ 2 3 │ 2 2 │ 14
VGA+ │ 2 3 │ 2 2 │ 16
This numbering scheme is a little more consistent than what the BIOS expects
and lets the program calculate the values required by the BIOS. If a number
greater than the maximum number of scan lines is entered, it is truncated to
the maximum.
Note that after a mode reset (via EGA25, EGA43, VGA25, VGA43 or VGA50) the
cursor will be returned to its default size by the BIOS. You will need to
issue the appropriate command to return it to its desired state. This
function may not be compatible with UltraVision (unable to test).
Video adapter BIOS' implement the cursor functions differently. You may not
get the results you expect when you specify scan lines, depending on your
adapter. Keep trying until you end up with a shape you like.
Example command lines:
Cursor Hide
Cursor 2 2
This function was written by the author.
══════════════════ Dates and Times . . . . . . . . . . . . . . . . . [BATCH]
Determine the return value for the appropriate function.
Command line format consists of only the CommandName. Valid CommandNames and
the range of their return ErrorLevels are:
WeekDay . . . . . 0-6
Day . . . . . . . 1-31
Month . . . . . . 1-12
Year . . . . . . . 0-119
FullYear . . . . . 0-99
Hour . . . . . . . 0-23
Minute . . . . . . 0-59
Second . . . . . . 0-59
AM . . . . . . . . 0-1
PM . . . . . . . . 0-1
For WeekDay, an ErrorLevel of 0 corresponds to Sunday. For Year, the
ErrorLevel corresponds to the number of years since 1980. FullYear gives the
last two digits of the current year. For AM and PM, an ErrorLevel of 1 is
True, 0 is False.
These functions were adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ DESQview . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if Quarterdeck's DESQview is running.
Command line format:
DESQview
Exit ErrorLevels:
0 = DESQview is not running
Else = DESQview version [(32 * major) + minor]
Version 1.x will be identified as version 1.0.
This function was written by the author.
══════════════════ DirExist . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if the requested directory exists on disk.
Command line format:
DirExist [d:][/path]DirectoryName
Exit ErrorLevels:
0 = Directory does not exist
1 = Directory exists
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ Display . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine the display combination code.
Command line format:
Display
Exit ErrorLevels:
1 = MDA
2 = CGA
4 = EGA color
5 = EGA mono
6 = PGS
7 = VGA mono
8 = VGA color
11 = MCGA mono
12 = MCGA color
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ DOSversion . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine the DOS version.
Command line format consists of only the CommandName. Valid CommandNames are:
DOSmajor
DOSminor
DOSversion
For DOS minor, the return ErrorLevel is 10 for DOS 3.10, 31 for DOS 3.31, etc.
For DOSversion, the return ErrorLevel is equal to 32*DOSmajor+DOSminor. Note
that DOS 4.01 reports itself as 4.00.
These functions were adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ Drive . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine the current default drive.
Command line format:
Drive [/A]
Exit ErrorLevels:
1 = A:, 2 = B:, etc.
The /A switch causes an ASCII drive designator to be written to StdOut. If C:
is the current drive, the function will write "C:" to StdOut and exit with an
ErrorLevel of 3.
This function was written by the author.
══════════════════ DriveExist . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if the requested drive letter is a valid DOS drive.
Command line format:
DriveExist d
Exit ErrorLevels:
0 = Invalid
1 = Valid
where d corresponds to the drive to be tested.
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ DriveReady . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if a drive is ready for access.
Command line format:
DriveReady d
Exit ErrorLevels:
0 = Drive not ready
1 = Drive ready
where d corresponds to any single drive letter. The DriveExist function is
called first. The function then installs a replacement DOS Critical Error
Handler to trap the resultant error if the drive is not ready when Interrupt
21H Function 1CH (Get Allocation Information for Specific Drive) is executed.
This function was adapted from a debug script in a message in the CompuServe
ZiffNet ZNT:PCCONTAC Forum Section 6 (HELP) in late September 1992. The
original source seemed to be a script written by Jeff Prosise [CompuServe:
72241,44] published in an issue of PC Contact.
══════════════════ DriveSize . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine the size of the specified or default drive.
Command line format:
DriveSize [/Dn] [d]
Exit ErrorLevels:
0 = Invalid drive error
1-255 = Blocks of space on the drive
where d corresponds to the drive desired. If the drive is omitted, the
default drive is used. The function returns the number of full blocks on the
drive. Partial blocks are ignored. The default block size is 100 kilobytes.
A different block size may be specified with the /Dn switch. The /Dn switch n
value for this command is measured in kilobytes. If more than 255 blocks are
on the drive, the returned ErrorLevel will be 255.
This function was written by the author.
══════════════════ DriveSpace . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine the amount of free disk space on the specified or default drive.
Command line format:
DriveSpace [/Dn] [d]
Exit ErrorLevels:
0 = No blocks available or invalid drive error
1-255 = Blocks of space available
where d corresponds to the drive desired. If the drive is omitted, the
default drive is used. The function returns the number of full blocks
available. Partial blocks are ignored. The default block size is 100
kilobytes. A different block size may be specified with the /Dn switch. The
/Dn switch n value for this command is measured in kilobytes. If more than
255 blocks are available, the returned ErrorLevel will be 255.
This function was written by the author.
══════════════════ Echo . . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Send a comment line to the screen.
Command line format:
Echo [/C] [/N] [Text]
The /C switch is used to output a carriage return only at the end of the Text,
returning the cursor to the first column for overwriting the previous output.
The /N switch is used to eliminate the final carriage return/line feed,
leaving the cursor at the end of the String just displayed. For batch file
execution, the format characters described below are not required. Use Cecho
to output text in a specific color.
Since DOS capitalizes everything in CONFIG.SYS during its parsing scan, a
carat (^) is used as the default character to toggle between upper and lower
case for the displayed string. If a carat is desired on the displayed line,
two carats (^^) should be used on the input line. Used without text, Echo
outputs a carriage return/line feed sequence.
A tilde (~) is the default character for insertion of a carriage return/line
feed sequence in the displayed line. If a tilde is desired on the displayed
line, two tildes (~~) should be used on the input line.
If the first character of Text is a double quote, the displayed Text starts at
the first character following the double quote. This allows for leading
spaces and tabs. If the first character of Text is not a double quote, the
displayed Text starts at the first non-separator character following the
CommandName. All leading spaces are removed.
Example command lines:
Echo S^tart ^DEVICE ^section...~
Echo " S^tart ^DEVICE ^section...~
The first command line would display "Start DEVICE section..." with two
trailing carriage return/line feeds. The second command line would display
" Start DEVICE section..." with two trailing carriage return/line feeds.
This function was adapted and expanded from the device driver COMMENT.SYS
written on 19 May 1985 and uploaded as COMENT.ARC to CompuServe CIS:IBMSYS
Library 1 (DOS/DOS Utils [S]) on 21 December 1990 by Skip Gilbrech
[CompuServe: 71445,534].
══════════════════ EchoPause . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Suspend execution after printing a prompt message on the screen that is
specified on the command line.
Command line format:
EchoPause [/C] [/N] [Text]
Pressing any key resumes execution. The /C and /N switches are the same as
the Echo command. The use of the Text string starting double quote is also
the same. For CONFIG.SYS execution, command line Text should be formatted as
in the Echo command. Use KeyPause for optional pausing, Pause for a standard
pause message or WaitFor for timed pausing.
This function was written by the author based on the Echo and Pause commands.
══════════════════ EGA25 . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Set a 25 line color EGA screen.
Command line format:
EGA25 [/C]
Performs a mode 3 reset of the display adapter using Interrupt 10H Function 0.
This works on EGA in a display independent way. The /C switch clears the
screen after switching modes, if ANSI is installed, to set the screen color.
This function was written by the author.
══════════════════ EGA43 . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Set a 43 line EGA screen.
Command line format:
EGA43 [/C]
Forces the use of the display adapter's internal 8x8 font. Interrupt 10H
Function 11H Subfunction 12H performs an adapter mode reset when it executes.
This works on EGA in a display independent way. The /C switch clears the
screen after switching modes, if ANSI is installed, to set the screen color.
This function was written by the author.
══════════════════ EMSversion . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine the EMS driver version if installed.
Command line format:
EMSversion
Exit ErrorLevels:
0 = EMS driver is not installed or driver error
Else = EMS version [(16 * EMSmajor) + EMSminor]
This function was written by the author.
══════════════════ Env . . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine size and use of the DOS master environment.
Command line format:
Env SubCommandName [/Dn]
NOTE: This function uses information that is undocumented. The function uses
verifications to try to ensure accuracy, but the data structures examined may
change in future DOS versions.
This function returns information about the DOS master environment that is
created through the /E switch on the SHELL line in CONFIG.SYS. All
information is returned via ErrorLevel. The following are valid
SubCommandNames: Total, Used, Free, Strings. Each SubCommandName may be
abbreviated to its first letter. The default block size is 16 bytes. A
different block size may be specified with the /Dn switch. The /Dn switch n
value for this command is measured in bytes.
The Total option reports the number of blocks of space in the environment.
Because of the way DOS allocates memory, the size in bytes will always be a
multiple of 16.
The Used option reports the total number of blocks of space currently in use.
This will be dependent on the number of environment variables created with the
SET command. This value includes the null bytes that terminate each string.
The Free option reports the number of blocks of space available for use. This
is equal to Total minus Used.
The Strings option reports the number of strings currently defined in the
environment.
This function was written by the author.
══════════════════ FileDTC . . . . . . . . . . . . . . . . . . . . . [BATCH]
Compare the date and time stamps of two files.
Command line format:
FileDTC [d:][/path]File1 [d:][/path]File2
Exit ErrorLevels:
0 = Command line error
1 = File1 is older than File2
2 = (Date1 = Date2) and (Time1 = Time2)
3 = File2 DOS error on opening
4 = File1 DOS error on opening
5 = (Date1 = Date2) but Time2 is older than Time1
6 = Date2 is older than Date1
FileDTC (File Date Time Compare) compares the date and time stamps of two
files. FileDTC does not accept wildcards in the file names. An ErrorLevel of
4 or higher indicates that File2 either does not exist or is older than File1.
FileDTC can be used as follows:
IfCopy.Bat
───────────────────────────────────────────────
@Echo Off
If [%1]==[...] GoTo 1
If [%2]==[] GoTo End
For %%A In (%1) Do Call IfCopy ... %%A %2
GoTo End
:1
CFG FileDTC %2 %3%2
If ErrorLevel 4 GoTo End
Copy %2 %3%2 >Nul
:End
Issuing "IfCopy *.* A:" will copy all files from the current directory to the
A: drive that are older than those on the A: drive or do not exist. This is a
little more discriminating than Xcopy /d since it also compares times.
This function was adapted from the DTC.ASM program written by Mike Spencer
[CompuServe: 74160,3116] and downloaded from CompuServe's CIS:IBMPRO Library 1
(General [P]) as DTC.ZIP.
══════════════════ FileExist . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if the specified file exists.
Command line format:
FileExist [d:][/path]FileName
Exit ErrorLevels:
0 = File does not exist
1 = File exists
This function is identical to the DOS "IF EXIST" batch file command.
This function was written by the author.
══════════════════ Files . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine size and use of the DOS System File Table.
Command line format:
Files SubCommandName
NOTE: This function uses information that is undocumented. It has been
verified to work accurately for DOS versions 3.0 through 5.0. The function
uses redundant verifications to try to ensure accuracy, but the data
structures examined may change in future DOS versions.
This function returns information about the DOS System File Table (SFT) that
is created through the FILES command in CONFIG.SYS. All information is
returned via ErrorLevel. The following are valid SubCommandNames: Total,
Used, Free, Orphan, Previous, Margin, Blocks. Each SubCommandName may be
abbreviated to its first letter. This function requires DOS 3.0+.
The Total option reports all entries available in the SFT, including any that
may have been created by later programs such as Qemm's FILES or PC Magazine's
UMBFILES.
The Used option reports the number of entries currently in use. Typically,
this will be 3 unless files have been orphaned.
The Free option reports the number of entries available for use. This is
equal to Total minus Used.
The Orphan option reports the number of entries that are orphaned, typically
by redirecting the output of a resident program to the NUL device during
installation. This number is a subset of the Used files.
The Previous option reports the maximum number of files that had previously
been open at any one time since the computer was last booted. Since DOS
reuses entries after they have been closed, this value may be looked at as the
"high water mark" of SFT use.
The Margin option reports the minimum margin that existed at the above "high
water mark" of previous use. This is equal to Total minus Previous. This
value is essentially how close the system has gotten to a DOS file error due
to no more file handles being available.
The Blocks option reports the number of blocks the SFT is divided into. A
large number of blocks has little effect on performance, but may use up more
memory.
UNABASHED PLUG: If you are interested in actually seeing the contents of the
SFT as well as the major DOS data structures, download my FreeFile utility
from the same library that you got CFG from. Look for FREEFI.ZIP. This
function is essentially a stripped down version of FreeFile. FreeFile will
also free orphaned file handles, returning them to DOS for reuse. Very
educational and useful.
This function was written by the author.
══════════════════ FileSize . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine the size of the specified file.
Command line format:
FileSize [/Dn] [d:][/path]FileName
Exit ErrorLevels:
0 = File error or file size less than one block
1-255 = Blocks of the file
The function returns the number of full blocks in the file. Partial blocks
are ignored. The default block size is 1024 bytes (1 kilobyte). A different
block size may be specified with the /Dn switch. The /Dn switch n value for
this command is measured in bytes. If more than 255 blocks are on the drive,
the returned ErrorLevel will be 255.
This function was written by the author.
══════════════════ FileText . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if the Text string exists in the specified file.
Command line format:
FileText [d:][/path]FileName "String"
Exit ErrorLevels:
0 = String not present
1 = String present
This function performs a case sensitive search of the designated file for the
text string.
This function was written by the author.
══════════════════ GetKey . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Get any keyboard input or limit the allowed keys to those specified on the
command line.
Command line format:
GetKey [/F] ["String"] [[F]n]
Exit ErrorLevels:
With list = Position of key in list (1, 2, 3, etc.)
Without list = Scan code of key pressed
255 = Ctrl-Break/Ctrl-C pressed
where String is a series of characters representing valid keyboard input
(String must be enclosed in either single or double quotes), and n represents
function key numbers (which may be preceded by an "F"). The /F switch causes
GetKey to flush the keyboard buffer prior to execution.
Used without options, GetKey returns the scan code of the key that was
pressed. GetKey's optional key list provides additional functionality. If
you supply the optional "String" or Fn argument to GetKey, Cfg will wait
either until one of those keys listed has been pressed or until you break out
of the command with Ctrl-Break or Ctrl-C. All other keypresses are ignored.
GetKey is not case sensitive, so if either "Y" or "y" is pressed, the
ErrorLevel will be the same.
If you want the single quote included as a valid keypress, enclose it in
double quotes and vice versa for double quotes.
You can include the function keys (F1 through F12) in the GetKey list by
listing the key numbers without quotes. They may or may not be further
identified with a leading "F". Multiple function keys must be separated. A
special case is F0 which represents the Return or Enter key.
Example command lines:
GetKey "yn" F1 F2 F0
GetKey "yn" 1 2 0
If F1 is now pressed, the returned ErrorLevel will be 3, since F1 is the third
entry in the list. Both examples yield the same result.
Used without arguments, GetKey can also be used with the Shift command to
detect Alt- or Ctrl- key combinations. The scan code for the "Q" key is 16.
To check for an Alt-Q keypress, you would use the following batch file:
@Echo Off
:GetKey
Cfg GetKey
If Not ErrorLevel 16 GoTo GetKey
Cfg Shift-OR Alt
If Not ErrorLevel 1 GoTo GetKey
Echo Alt-Q was pressed.
This function was adapted and expanded from the BATCHMAN utility written by
Michael J. Mefford and published in the 30 January 1990 Utilities section of
PC Magazine.
══════════════════ IACAfill . . . . . . . . . . . . . . . . . . . . [CONFIG]
Write up to 16 bytes to the Inter-Application Communication Area for
communication between CONFIG.SYS and AUTOEXEC.BAT.
Command line format:
IACAfill String
There are 16 bytes at address 0040:00F0 called the Inter-Application
Communications Area (IACA). These bytes can be modified by any program, but
few applications actually use them since they are subject to change by any
program and do not provide much storage.
The IACAfill command moves the command line String to the IACA. The String
must be a single word. A space or carriage return will end the transfer.
The advantage of IACAfill is that it allows communication between CONFIG.SYS
and AUTOEXEC.BAT. When managing multiple configurations, this will allow you
to set a variable in each separate CONFIG.SYS file for appropriate action in
AUTOEXEC.BAT. Use the IACAread function to read the string from the IACA.
Example command line:
IACAfill 386Max
This will store "386MAX" in the IACA.
This function is based on the IACAFILL.SYS driver from the IACATALK.ZIP file
written on by Robert W. Babcock [Internet: peprbv@cfaamp.harvard.edu or
babcock@cfa.harvard.edu] [BIX: rbabcock] [BITNET: babcock@cfa]. Sande Nissen
provided the IACATALK.ZIP file.
══════════════════ IACAread . . . . . . . . . . . . . . . . . . . . . [BATCH]
Read up to 16 bytes from the Inter-Application Communication Area and writes
them to DOS StdOut.
Command line format:
IACAread [/F] [String]
where String may be any combination of characters that are desired to precede
the string read from the IACA. The /F switch causes the old data to be
flushed from the IACA.
IACAread functions by checking the IACA for a string. It then scans its
command line and writes anything it finds there to StdOut. It then writes the
IACA to StdOut and terminates. Writing to StdOut allows you to use DOS
command line redirection to place the temporary batch file where you want. A
RAM disk is ideal. You can easily write your own program to handle IACAread's
output since no error is generated for lack of command line input to IACAread.
IACAread will simply write the IACA to StdOut. The IACA is not cleared by
IACAread.
The original IACAread program included with the IACATALK.ZIP file was written
in C (I dislike C) and manipulated the DOS master environment directly. While
I have done quite a bit of programming using undocumented DOS, I did not want
to want to manipulate the master environment directly. If you have the
original C version of IACAread, it will operate the same as before with the
CFG IACAfill command replacing the IACAFILL.SYS device driver.
Example command lines:
CFG IACAread @SET EnvName=>%TEMP%IACA.BAT
CALL %TEMP%IACA.BAT
DEL %TEMP%IACA.BAT
where EnvName is the name of the environment variable to be set. This will
write "@SET EnvName=String" to DOS StdOut. An error message will be displayed
if there is no string in the IACA with an exit ErrorLevel of 1. An ErrorLevel
of 0 indicates proper function.
If the SET command in the example IACA.BAT file does not work, you should have
received an "Out of environment space" error from DOS during execution. Check
the available environment space using the Env command. Environment space may
be increased by placing a larger number after the /E: switch on the CONFIG.SYS
SHELL line or adding such a line with a /E: switch to the file if none exists
and rebooting. See the sample CONFIG.SYS file below.
This function was written by the author.
══════════════════ Intense . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Enable intense background colors.
Command line format:
Intense
Calls Interrupt 10H Function 10H Subfunction 3 to enable intense background
colors on EGA and above. Any blinking characters will stop blinking and have
intense backgrounds.
This function was written by the author.
══════════════════ IsVol . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if a particular disk volume exists on the named drive.
Command line format:
IsVol [d:]VolumeName
Exit ErrorLevels:
0 = Volume does not exist
1 = Volume exists
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ KeyFlush . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Flush any waiting keys from the keyboard buffer.
Command line format:
KeyFlush
This function checks for available keys and repeatedly reads the keyboard
until they are all cleared from the keyboard buffer.
This function was written by the author.
══════════════════ KeyPause . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Suspend execution if any of the Shift, Alt or Ctrl keys are pressed.
Command line format:
KeyPause
Exit ErrorLevels:
0 = Pause not executed
1 = Pause executed
One of the listed keys must be held down before program execution. Execution
resumes once the key is released. Use EchoPause to display a customized pause
message, Pause for a standard pause message or WaitFor for timed pausing.
This function was adapted from a debug script in a message in the CompuServe
ZiffNet ZNT:TIPS Forum Section 4 (User-to-User) from Neil Rubenking
[CompuServe: 72241,50] on 8 July 1992. The script was also published in the
27 October 1992 User-to-User section of PC Magazine.
══════════════════ KeyPress . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if there is a key waiting in the keyboard buffer.
Command line format:
KeyPress
Exit ErrorLevels:
0 = No keys available
1 = Keys are available
This function was written by the author.
══════════════════ Locate . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Set cursor position on active video page.
Command line format:
Locate r c
Exit ErrorLevels:
0 = No errors
255 = Input parsing error
where r corresponds to the row number and c corresponds to the column number.
The top row is row 1. The furthest left column is column 1. Decimal numbers
are required.
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ LptHide . . . . . . . . . . . . . . . . . . . . [CONFIG]
Hide and restore the printer port base addresses.
Command line format:
LptHide SubCommandName
The following are valid SubCommandNames: Hide, Restore. Each SubCommandName
may be abbreviated to its first letter. Error messages are displayed if the
routine fails. (See the error message section below.)
The specific program this was written for is the Iomega Bernoulli Box RCD.SYS
driver. During RCD.SYS execution, it interrogates the printer ports to
determine if there are any parallel port Bernoulli Boxes installed.
Unfortunately, some printers respond to this interrogation by printing the
interrogation sequence.
LptHide hides the printer port base addresses by copying them to another
location in memory when the Hide command is used. On restoration with the
Restore command, LptHide verifies the signature and checksum stored with the
port addresses to ensure that they were not accidently over-written during
RCD.SYS execution. LptHide then copies the base addresses back to their
normal location.
The default location for the hidden data is 7000:0000. This is below the 512
Kb boundary in the event that the machine only has that much base memory
available, and high enough to keep it from being over-written during execution
of other device drivers while the data is hidden.
Example command lines:
CFG.COM LptHide Hide
RCD.SYS /M0
CFG.COM LptHide Restore
This function was adapted and expanded from the device driver LPTHIDE.SYS
uploaded as LPTHID.SYS to CompuServe CIS:PCVENE Library 3 (Iomega Corp.) on 13
March 1992 by Ronald Routh [CompuServe: 75300,2511].
══════════════════ LptSwap . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Swap the printer base port addresses for the two printer ports specified.
Command line format:
LptSwap a b
where a and b are the numbers of the printer ports to be swapped. Valid
numbers are 1, 2 and 3. An error message will be given if one of the ports is
missing or invalid.
LptSwap switches the two ports as far as DOS is concerned. This is useful if
you need to shift the printer ports around and are loading a software print
buffer as a device driver. The contents of the port addresses are not checked
during the swap.
Example command line:
LptSwap 1 3
This function was written by the author.
══════════════════ Memory . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine amount of memory available.
Command line format:
Memory SubCommandName k [/R] [/Dn]
Exit ErrorLevels:
Without the /R switch
─────────────────────
0 = Requested amount of memory is not available or format error
1 = Requested amount of memory is available
With the /R switch
──────────────────
0 = Requested memory is not available or format error
Other = Number of blocks of memory available
where k is the number of kilobytes of memory required. Valid SubCommandNames
are: Base, Extended, Xpanded, Main. Each SubCommandName may be abbreviated to
its first letter. With the /R switch specified, a screen report is made and
the exit ErrorLevel is set to the number of full blocks of available memory.
The /Dn switch n value for this command is measured in kilobytes. The /Dn
switch has no meaning without the /R switch. Without the /R switch, CFG scans
the command line for a decimal number after the SubCommandName. A format
error is generated if a number is not found. This number is compared to the
number of available kilobytes of the requested type of memory. If available
memory is greater than or equal to that requested, an ErrorLevel of 1 is
returned. If available memory is less than that requested, an ErrorLevel of 0
is returned.
For the "B" base memory option, CFG executes BIOS Interrupt 12H to get the
among of contiguous memory installed in the system. For this option only, the
/R switch does not change the exit ErrorLevel. It will always give the number
of blocks of base memory. The default block size is 16 kilobytes.
For the "E" extended memory option, CFG checks the machine ID byte at
F000:FFFE for 286 or better machines. CFG then executes Interrupt 15H
Function 88H to get the amount of available extended memory. The default
block size is 64 kilobytes.
For the "X" expanded memory option, CFG checks for the existence of an
expanded memory driver. CFG then executes Interrupt 67H Function 42H to get
the number of free expanded memory pages. The pages are converted to
kilobytes for reporting. The default block size is 64 kilobytes.
For the "M" main memory option, CFG shrinks its own program memory to zero
then attempts to allocate FFFFH paragraphs to generate a DOS error returning
the number of free paragraphs of memory. This will be the amount of memory
available to a program run from the command line or a batch file. The
paragraphs are converted to kilobytes for reporting. The default block size
is 16 kilobytes.
If the screen report is not desired but the ErrorLevel is, redirect CFG's
output to the NUL device.
Example command lines:
CFG Memory M 512 --- Test for 512 KB main memory
CFG Memory Xpanded 2048 --- Text for 2 MB expanded memory
CFG Memory Base /R/D64 --- Report base memory in 64 KB blocks
This function was adapted and expanded from the BATCHMAN utility written by
Michael J. Mefford and published in the 30 January 1990 Utilities section of
PC Magazine.
══════════════════ Mono . . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Set a 25 line monochrome screen.
Command line format:
Mono
Performs a mode 7 reset of the display adapter using Interrupt 10H Function 0.
This works in a display independent way. Use this function only if a
monochrome monitor is installed.
This function was written by the author.
══════════════════ Page . . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Select the active video display page.
Command line format:
Page [n]
where n corresponds to the desired video display page. If n is omitted, no
page change occurs. This function always returns an ErrorLevel corresponding
to the current display page. For modes 0 and 1, pages 0-7 are valid. For
modes 2 and 3, pages 0-3 are valid. If anything else is specified on the
command line, no page change occurs.
Note that some programs write by default to page zero.
This function was written by the author.
══════════════════ Pause . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Suspend execution after printing a prompt message on the screen.
Command line format:
Pause
Pressing any key resumes execution. The standard prompt is "CFG 2.0 Pause -
Press any key to continue . . .". Use EchoPause to display a customized pause
message, KeyPause for optional pausing or WaitFor for timed pausing.
This function was adapted from a Debug script for PAUSE.SYS written by Jeff
Prosise and published in the 30 June 1992 Tutor section of PC Magazine.
══════════════════ Protected . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if 80286+ processor is in protected mode.
Command line format:
Protected
Exit ErrorLevels:
0 = Real mode
1 = Protected mode
Calls the CPU function then determines if the processor protected mode flag is
set for 80286+ processors.
This function was written by the author.
══════════════════ PrtScr . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Print the screen or controls print screen operation.
Command line format:
PrtScr [/F] [+|-|?]
Exit ErrorLevels:
0 = Disabled
1 = Enabled
Prints the current screen using BIOS Interrupt 5. A form feed is appended if
the /F switch is used.
If the optional arguments are present, no printer output is generated. The +
and - arguments turn the BIOS function on and off by changing its status byte
in the BIOS data area. The BIOS bases its action on receipt of an Interrupt 5
Print Screen on this status byte. If the byte indicates that a print screen
is currently in progress, the BIOS aborts the new request. This provides
control of Interrupt 5 without a memory resident program. A status message is
provided for each change in state. The ? argument reports the current print
screen interrupt status.
This function was written by the author.
══════════════════ RamDrive . . . . . . . . . . . . . . . . . . . . . [BATCH]
Detect if the specified drive is a ramdrive or search for one.
Command line format:
RamDrive [/S] [/A] [d:]
Exit ErrorLevels:
Without /S switch
─────────────────
0 = Drive is not a ramdrive
1 = Drive is a ramdrive
With /S switch
──────────────
0 = Ramdrive not found
Else = Ramdrive found (A:=1, B:=2, etc.)
This command has several variations. If d: is specified, that drive is
tested. If d: is omitted, the default drive is tested.
If the /S switch is specified, the command searches for the first ramdrive it
can find. If d: is specified with the /S switch, the search starts with that
drive and moves up the drive letter chain. If d: is not specified, the search
starts with the D: drive. The search stops when the first ramdrive is found
or the first nonexistent drive letter is encountered. DriveExist is called to
determine if a drive exists.
The /A switch causes an ASCII drive specification to be written to DOS StdOut.
This switch is functional only if the /S switch is specified.
Since there is no official way of detecting a ramdrive, this function makes
its determination by searching for three characteristic features: The drive
is non-removable, has only one FAT copy and has a cluster size of one sector.
If the first is true at least one of the last two are true, the drive is
considered to be a ramdrive. The tests are not completely foolproof. The
following are the ramdrives tested to date:
YES: Microsoft Vdisk
NO: Qualitas 386disk
This function was written by the author.
══════════════════ Rem . . . . . . . . . . . . . . . . . . . . . . [CONFIG]
Indicate the use of descriptive comments in the CONFIG.SYS file.
Command line format:
Rem [Text]
This allows the entry of remarks in CONFIG.SYS for all DOS versions without
generating errors.
REM is implemented in DOS Version 5.0, but is not available in earlier
versions. For people who need to maintain standard machine configurations,
this can be an impediment to clear documentation. While it slows CONFIG.SYS
execution slightly, this is the best that can be done (easily) for DOS prior
to version 5.0.
This function was written by the author based on a request by Sande Nissen
[Internet: snissen@carleton.edu] [CompuServe: 74716,3673].
══════════════════ RenDir . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Rename a directory.
Command line format:
RenDir old new
Exit ErrorLevels:
0 = No errors
255 = DOS error or DOSmajor < 3
This function requires DOS 3.0+. Include the complete path for both old and
new directory names. The path is not required if the directory being renamed
is off the default directory.
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ ROMdate . . . . . . . . . . . . . . . . . . . . . [BATCH]
Display the date of the ROM BIOS.
Command line format:
ROMdate
The displayed date is the string of ASCII characters found at F000:FFF5 in
memory. Not all BIOS may have the date at this location.
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ ROMmodel . . . . . . . . . . . . . . . . . . . . . [BATCH]
Display the model bytes of the ROM BIOS.
Command line format:
ROMmodel
The displayed bytes are in hexadecimal. If the system supports Interrupt 15H
Function C0H, then the model, submodel and BIOS revision bytes of the ROM
configuration table are displayed. If the system does not support this call,
the machine model byte at F000:FFFE is displayed. The exit ErrorLevel is
equal to the model byte.
This function was written by the author.
══════════════════ Rows . . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine the number of displayed rows.
Command line format:
Rows
The returned level is based on the value stored in the BIOS data area.
This function was written by the author.
══════════════════ Share . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if SHARE.EXE is installed.
Command line format:
Share
Exit ErrorLevels:
0 = Not installed, OK to install
1 = Not installed, not OK to install
2 = Installed
255 = Invalid DOS version
The function executes Interrupt 2FH Function 10H Subfunction 0. Note that if
DOS 4.01 SHARE was automatically loaded due to large disk volumes, file
sharing is in an inactive state until this call is made. This function
requires DOS version 3.0 or higher.
This function was written by the author.
══════════════════ Shift-AND . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if desired shift keys are depressed.
Command line format:
Shift-AND [Alt] [Ctrl] [Shift]
Exit ErrorLevels:
0 = Some or none of the keys listed are depressed
1 = All keys listed are depressed
The routine will work with either of the paired keys on the keyboard. The
requested keys are considered to be AND, meaning all keys listed must be
depressed. The arguments may be shortened to just the first letter, but must
always be separated by at least one space. Use the Shift-OR function to do an
OR comparison of the shift keys. Use the ShiftState function for identifying
individual shift keys.
This function was written by the author.
══════════════════ ShiftLock . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine status of keyboard NumLock, CapsLock, ScrollLock and Insert.
Command line format:
ShiftLock [SubCommandName]
Exit ErrorLevels:
With SubCommandName
───────────────────
0 = Lock state is inactive
1 = Lock state is active
Without SubCommandName
──────────────────────
0 = No lock states are active
1 = ScrollLock is active
2 = NumLock is active
4 = CapsLock is active
8 = Insert is active
The following are valid SubCommandNames: Caps, Insert, Num, Scroll. Each
SubCommandName may be abbreviated to its first letter.
Issued without a SubCommandName or with a wrong one, the function returns the
ErrorLevels noted above. These ErrorLevels are additive. The ErrorLevel
returned can be in the range of 0 to 15.
This function was written by the author.
══════════════════ Shift-OR . . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine if desired shift keys are depressed.
Command line format:
Shift-OR [Alt] [Ctrl] [Shift]
Exit ErrorLevels:
0 = None of the keys listed are depressed
1 = At least one of the keys listed is depressed
The routine will work with either of the paired keys on the keyboard. The
requested keys are considered to be OR, meaning at least one of the keys
listed must be depressed. The arguments may be shortened to just the first
letter, but must always be separated by at least one space. Use the Shift-AND
function to do an AND comparison of the shift keys. Use the ShiftState
function for identifying individual shift keys.
This function was written by the author.
══════════════════ ShiftState . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine which shift keys are depressed.
Command line format:
ShiftState
Exit ErrorLevels:
0 = None of the shift keys are depressed
1 = Right shift
2 = Left shift
4 = Right ctrl
8 = Left ctrl
16 = Right alt
32 = Left alt
The exit ErrorLevels are additive. The final ErrorLevel is the sum of the
listed values for the keys which are depressed. Use the Shift-OR function to
do an OR comparison of the shift keys. Use the Shift-AND function to do an
AND comparison of the shift keys.
This function was written by the author.
══════════════════ StacInst . . . . . . . . . . . . . . . . . . . . . [BATCH]
Identify the presence of a Stacker device driver in memory and optionally
determine if a specific drive is a Stacker volume.
Command line format:
StacInst [d]
Exit ErrorLevels:
Without argument:
0 = Driver not installed
Else = Driver installed (32*Major + Minor)
With argument:
0 = Not a Stacker volume
1 = Valid stacker volume
255 = Invalid drive letter
where d represents an optional drive letter to be checked as being a Stacker
volume.
When run without command line arguments, the program will display a message as
to whether a Stacker device driver is loaded into the system's memory. The
version 2.01 driver will return an ErrorLevel of 65.
If any character is included on the command line, the program checks to see if
it is a valid drive letter from A to Z. For legal drive letters, the program
checks to see if that drive corresponds to a valid Stacker volume. The
appropriate message is displayed in each case. The drive does not have to be
a valid DOS drive to be checked. The Stacker device driver consults an
internal table to determine if the drive is a Stacker volume. If a removable
disk drive is checked (such as a floppy disk or a Bernoulli), the drive must
be mounted in order to provide a valid response. A reserved removable drive
that does not have a volume mounted will return an invalid response.
This function was adapted from the SDETECT.ASM program downloaded from
CompuServe's CIS:PCVENE Forum Section 12 (Stac Electronics) as DETECT.ZIP. It
is also available on Stac's BBS as SDETECT.ZIP.
══════════════════ Toggle . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Modifies the current shift state of the keyboard NumLock, CapsLock or
ScrollLock keys.
Command line format:
Toggle [N[+|-]] [C[+|-]] [S[+|-]] [/S]
where N represents the NumLock state, C represents the CapsLock state and S
represents the ScrollLock state. Toggle changes the current shift state of
the keyboard NumLock, CapsLock or ScrollLock keys when used with just the
letters. The state of the three keys is explicitly turned on or off if the
optional + or - argument is supplied. The /S switch will write to the
keyboard port to synchronize the keyboard LEDs of systems that have a BIOS
that does not automatically perform the update.
This function was adapted and modified from the TOGGLE utility written by Jeff
Prosise and published in the 31 May 1988 Utilities section of PC Magazine.
══════════════════ Tones . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Programs the system's speaker port to emit a rising (Upward) or falling
(Downward) series of tones.
Command line format:
Tones SubCommandName
The following are valid SubCommandNames: Down, Up. Each SubCommandName may be
abbreviated to its first letter. Error messages are displayed if the routine
fails. (See the error message section below.)
Example command line:
Tones Up
This function was written by the author and is based on the sound routines
contained in the ALLKEYS.COM program written by Robert L. Morton and published
in the 28 June 1988 Utilities section of PC Magazine.
══════════════════ Typematic . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Set the keyboard typematic rate and delay.
Command line format:
Typematic [m,n|Fast]
Exit ErrorLevels:
0 = No errors
255 = Invalid value
where m corresponds to the typematic rate (1-32) and n corresponds to the
delay (1-4) in 1/4 second increments. For the rate, the larger the number,
the faster the rate. The Fast option is equivalent to options of 32,1,
setting the fastest repeat rate and shortest delay. If no arguments are
given, default values are used, equivalent to options of 20,2. The values
that the BIOS accepts are divisors that cannot be easily translated into
characters per second. The table below lists some of the rate values and the
equivalent number of characters per second:
1 = 2.0 │ 12 = 5.0 │ 20 = 10.0 │ 28 = 20.0
6 = 3.0 │ 14 = 6.0 │ 22 = 12.0 │ 30 = 24.0
9 = 4.0 │ 17 = 8.0 │ 25 = 16.0 │ 32 = 30.0
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ Verify . . . . . . . . . . . . . . . . . . . . . . [BATCH]
Return status of DOS Verify option.
Command line format:
Verify
Exit ErrorLevels:
0 = Off
1 = On
This function was written by the author.
══════════════════ VGA25 . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Set a 25 line color VGA screen.
Command line format:
VGA25 [/C]
Performs a mode 3 reset of the display adapter using Interrupt 10H Function 0.
This works on VGA in a display independent way. The /C switch clears the
screen after switching modes, if ANSI is installed, to set the screen color.
This function was written by the author.
══════════════════ VGA43 . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Set a 43 line VGA screen.
Command line format:
VGA43 [/C]
Forces the use of the display adapter's internal 8x14 font. Interrupt 10H
Function 11H Subfunction 11H performs an adapter mode reset when it executes.
This works on VGA in a display independent way. The /C switch clears the
screen after switching modes, if ANSI is installed, to set the screen color.
This function was written by the author.
══════════════════ VGA50 . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Set a 50 line VGA screen.
Command line format:
VGA50 [/C]
Forces the use of the display adapter's internal 8x8 font. Interrupt 10H
Function 11H Subfunction 12H performs an adapter mode reset when it executes.
This works on VGA in a display independent way. The /C switch clears the
screen after switching modes, if ANSI is installed, to set the screen color.
This function was written by the author.
══════════════════ VideoMode . . . . . . . . . . . . . . . . . . . . [BATCH]
Determine the current video mode.
Command line format:
VideoMode
The returned level is based on the value stored in the BIOS data area.
This function was written by the author.
══════════════════ WaitFor . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Delay program execution for the number of minutes and seconds given on the
command line.
Command line format:
WaitFor [m:]s
Where m is the delay time in minutes and s is in seconds. If a single number
is on the command line, it is assumed to be seconds. The default is one
second.
CFG only checks for a ':' between the minutes and seconds. Any other
character or separator will cause the minutes value to be treated as seconds
and the seconds value to be ignored. Spaces should not be used on either side
of the colon.
Pressing any key during the wait period will cancel the wait. WaitFor checks
the keyboard buffer at one second intervals for a key press.
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ WaitTo . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Delay execution until the specified time of day.
Command line format:
WaitTo hh:mm[:ss]
Exit ErrorLevels:
0 = Timed out as requested
1 = Exited prior to time out due to key press
255 = Format error
where hh is the hour (0-23), mm is the minute (0-59) and ss is the second (0-
59). If the seconds are omitted, 0 is assumed.
Pressing any key during the wait period will cancel the wait.
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ WarmBoot . . . . . . . . . . . . . . . . . . . . . [BATCH]
Perform a keyboard (Ctrl-Alt-Delete) system reset.
Command line format:
WarmBoot
All disk buffers that may not yet be written are flushed to disk via Interrupt
21H Function 0DH (Disk Reset) prior to system reset. The function jumps to
FFFF:0000 after setting the warm boot flag in the BIOS data area.
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
══════════════════ Window . . . . . . . . . . . . . . . . . . [CONFIG/BATCH]
Draw boxes on the screen in the desired color.
Command line format:
Window r c w h [b ["Fore [on] Back"]]
where r is the top row of the box, c is the left column of the box, w is the
box width, h is the box height and b is the box type (0-2). The color must be
enclosed by double quotation marks and follows the same requirements as the
Cls command. The top left screen corner is 1 1.
Three box types are available. For b=0, the box is drawn without borders.
For b=1, the box has single-line borders. For b=2, the box has double-line
borders. If b is omitted, b=0 is assumed. A value for b must be specified in
order to include a color. If a color is not specified, the current screen
colors are used.
The smallest window allowed is 2 characters in width and height. The area
inside the border is blanked with spaces. Text can be added to the frame
using the Locate and Cecho commands.
This function was adapted from the BATCHMAN utility written by Michael J.
Mefford and published in the 30 January 1990 Utilities section of PC Magazine.
──────────────────────────────────────────────────────────────────────────────
DISCLAIMER - RESTRICTIONS
──────────────────────────────────────────────────────────────────────────────
CFG is freeware, or what is known as "zero-cost shareware". CFG is not what
is generally called "public domain" software because the author retains the
copyright. However, the CFG package can be copied, used and distributed
freely as long as CFG.COM, CFG.DOC and CFG.ZIF are not altered and are
distributed together, preferably in the original Zip file.
CFG can be included in shareware packages as long as CFG and all its related
files are included in the shareware package. If you have received CFG as part
of some larger shareware package, please be aware that you may freely use,
copy and distribute CFG without paying a fee for, or registering, the larger
package.
The original IACAFILL.SYS driver is copyright 1991 by R. W. Babcock and WSS
Division of DDC. BATCHMAN is copyright 1989 Ziff Communications, Co.
CFG is supplied as is. The author disclaims all warranties, expressed or
implied, including, without limitation, the warranties of merchantability and
of fitness for any purpose. The author assumes no liability for damages,
direct or consequential, which may result from the use of CFG.
If you find CFG useful, I would like to know. I would appreciate a short note
via US Mail or CompuServe Mail telling me what you like or dislike about CFG.
If you need other functions or output, please contact me.
I will upload the most recent version of CFG to various forums on CompuServe
and ZiffNet under the file name "CFG.ZIP". If the file does not appear with
my PPN, it may not be the most recent upload.
──────────────────────────────────────────────────────────────────────────────
ACKNOWLEDGEMENTS
──────────────────────────────────────────────────────────────────────────────
My thanks and recognition goes to the authors noted above for their original
versions of the utilities presented here. Thanks to Sande Nissen for passing
IACAtalk my way. A special tip of the hat goes to Rod Pullman [CompuServe:
76226,3120] for his very useful DEVICE.COM utility. DEVICE loads DOS
character device drivers subsequent to system boot. It also works great to
test nonresident character device drivers like CFG. Without it, initial
testing and debugging of CFG would have been too hard to contemplate.
──────────────────────────────────────────────────────────────────────────────
ERROR MESSAGES
──────────────────────────────────────────────────────────────────────────────
ANSI not installed.
─── Issued if CFG determines that the ANSI driver has not been loaded into
memory when required for a command.
Cannot find File.
─── Issued if the requested file cannot be located by the DOS file system.
Cannot swap the same port.
─── Issued if the ports requested are the same.
Checksum invalid, ports not restored.
─── The checksum stored with the hidden ports shows that the data has been
changed since it was written, probably due to being over-written.
Command not available.
─── Issued if the command is not available in the current program mode.
Check this document to see which commands are available from CONFIG.SYS
and which are available from batch files.
Could not locate hidden ports.
─── Issued if the signature is missing from the upper memory hidden storage
location. This could be due to the area having been over-written or due
to a Restore being run without a preliminary Hide operation.
File error.
─── Issued if DOS returns any error when attempting to open or perform other
file operations.
Hidden ports already present.
─── Issued if Hide is run twice in succession without a Restore in between.
A second Hide action is prevented since it would permanently erase the
base port addresses.
IACA already in use.
─── Issued if the first character of the IACA is not an ASCII 0, indicating
other information has already been placed in the IACA.
IACA is empty.
─── Issued if the first character of the IACA is an ASCII 0, indicating that
nothing has been written to the IACA.
Invalid color.
─── Issued if anything appears after the CommandName that cannot be parsed
as a screen color.
Invalid command.
─── Issued if specified CommandName is incorrect or missing.
Invalid drive designation.
─── Issued if StacInst does not find a valid drive character when something
is specified on the command line.
Invalid format.
─── Issued if the command line format does not match that required by the
command.
Invalid SFT format.
─── Issued if the Files command finds an unexpected System File Table format
when performing its initial verification.
Invalid SubCommandName.
─── Issued if CommandName Option does not begin with the correct letter.
CFG only checks the first character after the CommandName, the rest of
the line is ignored.
Missing or incorrect command option.
─── Issued if CommandName Option is missing or does not begin with the
expected letter or number. CFG only checks the first character after
the CommandName for the ComHide, LptHide and Tone commands. The rest of
the line is ignored.
Missing or invalid port.
─── Issued if only one port is given on the command line or if the port
requested is other than 1/2/3/4 for ComSwap or 1/2/3 for LptSwap.
Wrong color format or spelling.
─── Issued if anything appears after the CommandName that cannot be parsed
as screen colors.
Wrong DOS version.
─── Issued if the function requires a specific minimum DOS version that does
not match the version currently running.
──────────────────────────────────────────────────────────────────────────────
REVISION HISTORY
──────────────────────────────────────────────────────────────────────────────
Version 1.0 --- 28 August 1992
* First version. Supported Beep, Cls, ComHide, ComSwap, Echo, EchoPause,
EGA25, EGA43, KeyPause, LptHide, LptSwap, Mono, Pause, Tones, VGA25,
VGA43, VGA50 and WaitFor commands.
Version 1.1 --- 11 September 1992
* Revised command line parsing. Now recognizes the plus sign, equals sign
and comma as separators.
* Revised the method for detecting ANSI. Previously, the ANSI Device
Status Report sequence was used. This proved unreliable on some systems
when StdIn did not reflect a valid Cursor Position Report from ANSI.
The new method uses cursor positioning sequences.
* Changed several things in Cls command: Fixed a bug that caused bright
colors to sometimes be displayed in low intensity, removed a mismatch
between the DOS and ANSI color values, and added color parsing error
messages.
* Corrected error which made the Tones command unavailable.
* Added the Color, IACAfill and Rem commands as well as the IACAread
companion program.
* Revised and updated the documentation.
Version 2.0 --- 1 January 1993
* Program is now dual mode with a .COM extension. The separate IACAread
program is no longer required since that function is incorporated from
the command line.
* The Cls command now sets the screen border color to that of the
background and restores the cursor to its previous size.
* The screen mode commands (EGA25, EGA43, VGA25, VGA43 and VGA50) now
optionally issue a ANSI escape sequence to clear the screen after the
mode change to reset the screen color.
* The KeyPause command now also sets an ErrorLevel.
* The Beep command now optionally allows specification of frequency and
length of sound, with the ability to do multiple sounds from a single
command line.
* Added the AM, ANSI, ASCII, Blink, Border, Break, CanCopy, Cecho,
ColdBoot, Cols, Compare, CoProc, CPU, Cursor, Day, DESQview, DirExist,
Display, DOSmajor, DOSminor, DOSversion, Drive, DriveExist, DriveReady,
DriveSize, DriveSpace, EMSversion, Env, FileDTC, FileExist, Files,
FileSize, FileText, FullYear, GetKey, Hour, IACAread, Intense, IsVol,
Locate, Memory, Minute, Month, Page, PM, Protected, PrtScr, RamDrive,
RenDir, ROMdate, ROMmodel, Rows, Second, Share, Shift-AND, ShiftLock,
Shift-OR, ShiftState, StacInst, Toggle, Typematic, Verify, VideoMode,
WaitTo, WarmBoot, WeekDay, Window and Year commands. (Whew!)
* Improved error handling and reporting.
* Deleted the plus sign from the list of separator characters.
* Revised, updated and reformatted the documentation.
──────────────────────────────────────────────────────────────────────────────
DISCUSSION
──────────────────────────────────────────────────────────────────────────────
Many utilities exist for use from the command line, but none were available
for use in CONFIG.SYS. When I added Qualitas' BlueMax 6.0 to my system (see
below), what was once a relatively short boot display became quite a
protracted affair. I wanted to organize and add color to the device driver
installation phase as well as add messages (if necessary) and optional pauses.
I foresaw my disk becoming overrun by numerous small device drivers (more so
than it already was), so I wrote the basic CFG shell handler and then started
looking around for useful utilities.
When CFG is executed during the device driver installation phase of system
boot, it does not remain resident in memory and may be run multiple times.
CFG sets up its own 512 byte stack during device driver execution to avoid
overflowing the DOS stack. The program then moves the command line from the
system buffer to a local buffer for parsing. The CommandName is scanned and
the appropriate function is executed. The function is responsible for any
additional command line parsing. Upon completion of the function, the command
handler regains control and performs the final clean-up processing required by
DOS for termination of the driver. The DOS stack in use at program entry is
restored and CFG ends with a Far Return to DOS.
Since I wanted to access many CFG routines from the DOS command line or a
batch file, I rewrote CFG as a dual mode program: both device driver and
command line utility. Not all commands are available in each mode. An error
message will be displayed if a command is requested when it cannot be run. If
the file is renamed CFG.SYS, it will function identically as versions 1.0 and
1.1.
General parsing allows any of the standard DOS separator characters to be
ignored. With the exception of the bright Cls colors noted above, the number
of spaces between command line words does not matter.
Not many DOS functions are available during device driver installation,
since the program fragments that will be the whole operating system are still
being assembled when the drivers' initialization routines are run. DOS
(Interrupt 21H) functions that are available are: 01-0CH (various character
and string input and output routines), 25H (Set Interrupt Vector), 30H (Get
MS-DOS Version Number), and 35H (Get Interrupt Vector). All BIOS video and
keyboard routines are available. Within these limits, some very useful things
can be done.
──────────────────────────────────────────────────────────────────────────────
SAMPLE CONFIG.SYS
──────────────────────────────────────────────────────────────────────────────
The following is a recent copy of my CONFIG.SYS file showing usage of several
of the commands. Line wrap is indicated by indentation.
Break=On
Buffers=10
Dos=High
FCBS=1
Files=8
LastDrive=G
Stacks=0,0
Switches=/W
Shell=C:\Dos\Command.Com C:\Dos\ /E:512 /P /F
Device=C:\Dos\Start\Cfg.Com VGA50
Device=C:\Dos\Start\Cfg.Com Cls Bright White on Blue
Device=C:\BlueMax\BlueMax.Sys Pro=C:\BlueMax\BlueMax.Pro Dos5
Device=C:\Dos\Start\Cfg.Com Cursor Hide
Device=C:\Dos\Start\Cfg.Com KeyPause
Device=C:\BlueMax\386Load.Sys Terse Size=1184 PrgReg=4 FlexFrame
Prog=C:\Dos\Start\DASDDrvr.Sys
Device=C:\Norton\Ncache.Exe /Install /Ini=C:\Norton
Device=C:\Dos\Start\Cfg.Com KeyPause
Device=C:\BlueMax\386Load.Sys Terse Size=37056 PrgReg=3 FlexFrame
Prog=C:\Dos\Start\Mouse.Sys Ser 2 S06 NB
Device=C:\Dos\Start\Cfg.Com KeyPause
Device=C:\BlueMax\386Load.Sys Terse Size=5280 FlexFrame
Prog=C:\Dos\Start\Bridge_B.Drv /PS60:1B
Device=C:\Dos\Start\Cfg.Com LptHide Hide
Device=C:\Dos\Start\Cfg.Com KeyPause
Device=C:\BlueMax\386Load.Sys Terse Size=30880 PrgReg=3 FlexFrame
Prog=C:\Dos\Start\RCD.Sys /M0
Device=C:\Dos\Start\Cfg.Com LptHide Restore
Device=C:\Dos\Start\Cfg.Com KeyPause
Device=C:\Dos\Start\Cfg.Com Cls Bright White on Blue
Device=C:\BlueMax\386Load.Sys Terse Size=6768 PrgReg=2 FlexFrame
Prog=C:\BlueMax\386Disk.Sys 1024 512 64 /XMS
Device=C:\Dos\Start\Cfg.Com KeyPause
Device=C:\BlueMax\386Load.Sys Terse Size=9040 PrgReg=2 FlexFrame
Prog=C:\Dos\Start\ANSI.Sys
Device=C:\Dos\Start\Cfg.Com Color Bright White on Blue
Device=C:\Dos\Start\Cfg.Com KeyPause
Device=C:\Stacker\Screate.Sys F:
Device=C:\Dos\Start\Cfg.Com KeyPause
Device=C:\BlueMax\386Load.Sys Terse Size=40907 PrgReg=3 FlexFrame
Prog=C:\Stacker\Stacker.Com D:\StacVol.Dsk @ F: /EMS /NB
Device=C:\Dos\Start\Cfg.Com KeyPause
Device=C:\Stacker\Sswap.Com D:\StacVol.Dsk
Device=C:\Dos\Start\Cfg.Com KeyPause
Device=C:\BlueMax\386Load.Sys Terse Size=62573 PrgReg=3 FlexFrame
Prog=C:\NAV\NAV_.Sys /W
Device=C:\Dos\Start\Cfg.Com KeyPause
Device=C:\Dos\Start\Cfg.Com VGA25 /C
Device=C:\Dos\Start\Cfg.Com Cursor 2 2