The Rolling Stone Essay, Research Paper
Microsoft Windows 95 README for MS-DOS Device Drivers
(c) Copyright Microsoft Corporation, 1995
This document provides complementary or late-breaking information to
supplement the Microsoft Windows 95 documentation.
How to Use This Document
To view Msdosdrv.txt on screen in Notepad, maximize the Notepad window.
To print Msdosdrv.txt, open it in Notepad or another word processor,
then use the Print command on the File menu.
In syntax lines, except where noted, lowercase text signifies replaceable
parameters and uppercase text must be typed as it appears.
NOTE: The Config.txt file contains more Help for MS-DOS commands. Also
you can type the name of the command at the command prompt, followed by
a slash and question mark (/?). For example:
Note: In this section, uppercase letters in syntax and ANSI escape
sequences indicate text you must type exactly as it appears.
Defines functions that change display graphics, control cursor movement, and
reassign keys. The ANSI.SYS device driver supports ANSI terminal emulation
of escape sequences to control your system’s screen and keyboard. An ANSI
escape sequence is a sequence of ASCII characters, the first two of which
are the escape character (1Bh) and the left-bracket character (5Bh). The
character or characters following the escape and left-bracket characters
specify an alphanumeric code that controls a keyboard or display function.
ANSI escape sequences distinguish between uppercase and lowercase letters;
for example,”A” and “a” have completely different meanings.
This device driver must be loaded by a DEVICE or DEVICEHIGH command in
your CONFIG.SYS file.
DEVICE=[drive:][path]ANSI.SYS [/X] [/K] [/R]
Specifies the location of the ANSI.SYS file.
Remaps extended keys independently on 101-key keyboards.
Causes ANSI.SYS to treat a 101-key keyboard like an 84-key
keyboard. This is equivalent to the command SWITCHES=/K.
If you usually use the SWITCHES=/K command, you will need
to use the /K switch with ANSI.SYS.
Adjusts line scrolling to improve readability when ANSI.SYS
is used with screen-reading programs (which make computers
more accessible to people with disabilities).
Parameters used in ANSI escape sequences:
Numeric parameter. Specifies a decimal number.
Selective parameter. Specifies a decimal number that you use to select
a function. You can specify more than one function by separating the
parameters with semicolons (;).
Line parameter. Specifies a decimal number that represents one of the
lines on your display or on another device.
Column parameter. Specifies a decimal number that represents one of the
columns on your screen or on another device.
ANSI escape sequences for cursor movement, graphics, and keyboard settings:
In the following list of ANSI escape sequences, the abbreviation ESC
represents the ASCII escape character 27 (1Bh), which appears at the
beginning of each escape sequence.
Cursor Position: Moves the cursor to the specified position
(coordinates). If you do not specify a position, the cursor moves to the
home position--the upper-left corner of the screen (line 0, column
0). This escape sequence works the same way as the following Cursor
Position escape sequence.
Cursor Position: Works the same way as the preceding Cursor Position
Cursor Up: Moves the cursor up by the specified number of lines without
changing columns. If the cursor is already on the top line, ANSI.SYS
ignores this sequence.
Cursor Down: Moves the cursor down by the specified number of lines
without changing columns. If the cursor is already on the bottom line,
ANSI.SYS ignores this sequence.
Cursor Forward: Moves the cursor forward by the specified number of
columns without changing lines. If the cursor is already in the
rightmost column, ANSI.SYS ignores this sequence.
Cursor Backward: Moves the cursor back by the specified number of
columns without changing lines. If the cursor is already in the leftmost
column, ANSI.SYS ignores this sequence.
Save Cursor Position: Saves the current cursor position. You can move
the cursor to the saved cursor position by using the Restore Cursor
Restore Cursor Position: Returns the cursor to the position stored
by the Save Cursor Position sequence.
Erase Display: Clears the screen and moves the cursor to the home
position (line 0, column 0).
Erase Line: Clears all characters from the cursor position to the
end of the line (including the character at the cursor position).
Set Graphics Mode: Calls the graphics functions specified by the
following values. These specified functions remain active until the next
occurrence of this escape sequence. Graphics mode changes the colors and
attributes of text (such as bold and underline) displayed on the
0 All attributes off
1 Bold on
4 Underscore (on monochrome display adapter only)
5 Blink on
7 Reverse video on
8 Concealed on
Parameters 30 through 47 meet the ISO 6429 standard.
Set Mode: Changes the screen width or type to the mode specified
by one of the following values:
0 40 x 148 x 25 monochrome (text)
1 40 x 148 x 25 color (text)
2 80 x 148 x 25 monochrome (text)
3 80 x 148 x 25 color (text)
4 320 x 148 x 200 4-color (graphics)
5 320 x 148 x 200 monochrome (graphics)
6 640 x 148 x 200 monochrome (graphics)
7 Enables line wrapping
13 320 x 148 x 200 color (graphics)
14 640 x 148 x 200 color (16-color graphics)
15 640 x 148 x 350 monochrome (2-color graphics)
16 640 x 148 x 350 color (16-color graphics)
17 640 x 148 x 480 monochrome (2-color graphics)
18 640 x 148 x 480 color (16-color graphics)
19 320 x 148 x 200 color (256-color graphics)
Reset Mode: Resets the mode by using the same values that Set Mode
uses, except for 7, which disables line wrapping. The last character
in this escape sequence is a lowercase L.
Set Keyboard Strings: Redefines a keyboard key to a specified string.
The parameters for this escape sequence are defined as follows:
o Code is one or more of the values listed in the following table.
These values represent keyboard keys and key combinations. When using
these values in a command, you must type the semicolons (;) shown in
this table in addition to the semicolons required by the escape
sequence. The codes in parentheses are not available on some
keyboards. ANSI.SYS will not interpret the codes in parentheses for
those keyboards unless you specify the /X switch in the DEVICE
command for ANSI.SYS.
o String is either the ASCII code for a single character or a string
contained in quotation marks ("). For example, both 65 and "A" can be
used to represent an uppercase A.
IMPORTANT: Some of the values in the following table are not valid for all
computers. Check your computer's documentation for values that
Key Code SHIFT+code CTRL+code ALT+code
F1 0;59 0;84 0;94 0;104
F2 0;60 0;85 0;95 0;105
F3 0;61 0;86 0;96 0;106
F4 0;62 0;87 0;97 0;107
F5 0;63 0;88 0;98 0;108
F6 0;64 0;89 0;99 0;109
F7 0;65 0;90 0;100 0;110
F8 0;66 0;91 0;101 0;111
F9 0;67 0;92 0;102 0;112
F10 0;68 0;93 0;103 0;113
F11 0;133 0;135 0;137 0;139
F12 0;134 0;136 0;138 0;140
HOME (num keypad) 0;71 55 0;119 --
UP ARROW (num keypad) 0;72 56 (0;141) --
PAGE UP (num keypad) 0;73 57 0;132 --
LEFT ARROW (num keypad) 0;75 52 0;115 --
RIGHT ARROW (num 0;77 54 0;116 --
END (num keypad) 0;79 49 0;117 --
DOWN ARROW (num keypad) 0;80 50 (0;145) --
PAGE DOWN (num keypad) 0;81 51 0;118 --
INSERT (num keypad) 0;82 48 (0;146) --
DELETE (num keypad) 0;83 46 (0;147) --
HOME (224;71) (224;71) (224;119) (224;151)
UP ARROW (224;72) (224;72) (224;141) (224;152)
PAGE UP (224;73) (224;73) (224;132) (224;153)
LEFT ARROW (224;75) (224;75) (224;115) (224;155)
RIGHT ARROW (224;77) (224;77) (224;116) (224;157)
END (224;79) (224;79) (224;117) (224;159)
DOWN ARROW (224;80) (224;80) (224;145) (224;154)
PAGE DOWN (224;81) (224;81) (224;118) (224;161)
INSERT (224;82) (224;82) (224;146) (224;162)
DELETE (224;83) (224;83) (224;147) (224;163)
PRINT SCREEN -- -- 0;114 --
PAUSE/BREAK -- -- 0;0 --
BACKSPACE 8 8 127 (0)
ENTER 13 -- 10 (0
TAB 9 0;15 (0;148) (0;165)
NULL 0;3 -- -- --
A 97 65 1 0;30
B 98 66 2 0;48
C 99 66 3 0;46
D 100 68 4 0;32
E 101 69 5 0;18
F 102 70 6 0;33
G 103 71 7 0;34
H 104 72 8 0;35
I 105 73 9 0;23
J 106 74 10 0;36
K 107 75 11 0;37
L 108 76 12 0;38
M 109 77 13 0;50
N 110 78 14 0;49
O 111 79 15 0;24
P 112 80 16 0;25
Q 113 81 17 0;16
R 114 82 18 0;19
S 115 83 19 0;31
T 116 84 20 0;20
U 117 85 21 0;22
V 118 86 22 0;47
W 119 87 23 0;17
X 120 88 24 0;45
Y 121 89 25 0;21
Z 122 90 26 0;44
1 49 33 -- 0;120
2 50 64 0 0;121
3 51 35 -- 0;122
4 52 36 -- 0;123
5 53 37 -- 0;124
6 54 94 30 0;125
7 55 38 -- 0;126
8 56 42 -- 0;126
9 57 40 -- 0;127
0 48 41 -- 0;129
- 45 95 31 0;130
= 61 43 --- 0;131
[ 91 123 27 0;26
] 93 125 29 0;27
92 124 28 0;43
; 59 58 — 0;39
‘ 39 34 — 0;40
, 44 60 — 0;51
. 46 62 — 0;52
/ 47 63 — 0;53
` 96 126 — (0;41)
ENTER (keypad) 13 — 10 (0;166)
/ (keypad) 47 47 (0;142) (0;74)
* (keypad) 42 (0;144) (0;78) –
- (keypad) 45 45 (0;149) (0;164)
+ (keypad) 43 43 (0;150) (0;55)
5 (keypad) (0;76) 53 (0;143) –
DBLBUFF.SYS — Double Buffering
Loads the Dblbuff.sys device driver to perform double buffering. Double
buffering provides compatibility for certain hard-disk controllers that
cannot work with memory provided by EMM386 or Windows running in 386
If Windows Setup determined that your system may need double-buffering,
it will add a DoubleBuffer=1 entry to the [Options] section of Msdos.sys,
which will automatically load Dblbuff.sys. To manually enable double-
buffering, you can either add the above entry to Msdos.sys, or add
a DEVICE command in your CONFIG.SYS file.
Specifies the location of the Dblbuff.sys file.
Instructs Dblbuff.sys to double-buffer all disk I/O all the time.
By default, it will only double-buffer I/O to UMBs, and it will
automatically stop double-buffering if it appears to be unnecessary.
Enables you to display international character sets on EGA, VGA, and LCD
monitors. This device driver must be loaded by a DEVICE or DEVICEHIGH
command in your CONFIG.SYS file.
Specifies the location of the DISPLAY.SYS file.
Specifies the display adapter in use. Valid values include EGA and LCD.
The EGA value supports both EGA and VGA display adapters. If you omit
the type parameter, DISPLAY.SYS checks the hardware to determine which
display adapter is in use. You can also specify CGA and MONO as values
for type, but they have no effect because character-set switching is not
enabled for these devices.
Specifies the number of the character set that your hardware supports.
The following list shows the character sets that MS-DOS supports and the
country or language for each:
437 United States
850 Multilingual (Latin I)
852 Slavic (Latin II)
Additional character sets are supported by the EGA2.CPI and EGA3.CPI
Specifies the number of character sets the hardware can support in
addition to the primary character set specified for the hwcp parameter.
Valid values for n are in the range 0 through 6. This value depends on
your hardware. For EGA display adapters, the maximum value for n is 6;
for LCD display adapters, the maximum value for n is 1.
Specifies the number of subfonts the hardware supports for each code
page. The default value is 2 if type is EGA, and 1 if type is LCD.
Determines the final memory location of DRVSPACE.BIN or DBLSPACE.BIN, the
part of MS-DOS that provides access to your compressed drives.
DxxSPACE.SYS loads the real-mode driver into upper memory blocks. This
can save 60K of conventional memory when you run Windows 95 in real mode,
and can save 100K or more if you use Microsoft Plus! for Windows.
When you start your computer, Windows loads DRVSPACE.BIN or DBLSPACE.BIN
along with other operating-system functions, before carrying out the
commands in your CONFIG.SYS and AUTOEXEC.BAT files. DxxSPACE.BIN initially
loads in conventional memory because it loads before device drivers that
provide access to upper memory.
When you use DriveSpace or DoubleSpace to create a compressed drive on your
computer, the program adds a command for DxxSPACE.SYS to your CONFIG.SYS
In the following syntax, for DxxSPACE type the filename for the program
you are using.
DEVICE=[drive:][path]DxxSPACE.SYS /MOVE [/NOHMA] [/LOW]
DEVICEHIGH=[drive:][path]DxxSPACE.SYS /MOVE [/NOHMA] [/LOW]
Moves DxxSPACE.BIN to its final location in memory.
Initially, DxxSPACE.BIN loads at the top of conventional memory. After
Windows finishes carrying out the commands in the CONFIG.SYS file, it
moves DxxSPACE.BIN to the bottom of conventional memory. When
DxxSPACE.SYS is loaded by using the DEVICE command, it moves
DxxSPACE.BIN from the top of conventional memory to the bottom. This can
be useful for avoiding conflicts with programs that are loaded from the
CONFIG.SYS file and require access to the top of conventional memory.
When DxxSPACE.SYS is loaded by using the DEVICEHIGH command,
DxxSPACE.BIN moves to upper memory, if available. Moving DxxSPACE.BIN
to upper memory makes more conventional memory available.
Prevents DxxSPACE.SYS from moving a portion of DxxSPACE.BIN to the high
memory area (HMA).
If MS-DOS is loaded into the HMA, DxxSPACE.SYS moves a portion of
DxxSPACE.BIN to the HMA (if there is enough room in the HMA). Use this
switch if you do not want DxxSPACE.BIN to use the HMA.
Prevents DxxSPACE.SYS from loading at the top of conventional memory.
Use this switch if you have an MS-DOS-based program that does not support
DriveSpace or DoubleSpace at the top of conventional memory. Note that
use of this switch will prevent Windows from reusing the memory
occupied by DxxSPACE.sys.
Specifies the location of the DxxSPACE.SYS file.
Saves and restores the display when the MS-DOS Shell Task Swapper is used
with EGA monitors. If you have an EGA monitor, you must install the EGA.SYS
device driver before using Task Swapper. This device driver must be loaded
by a DEVICE or DEVICEHIGH command in your CONFIG.SYS file.
Specifies the location of the EGA.SYS file.
Provides access to the upper memory area and uses extended memory to
simulate expanded memory. This device driver must be loaded by a DEVICE
command in your CONFIG.SYS file and can be used only on computers with an
80386 or higher processor.
EMM386 uses extended memory to simulate expanded memory for programs that
can use expanded memory. EMM386 also makes it possible to load programs and
device drivers into upper memory blocks (UMBs).
DEVICE=[drive:][path]EMM386.EXE [ON|OFF|AUTO] [memory] [MIN=size]
[W=ON|W=OFF] [Mx|FRAME=address|/Pmmmm] [Pn=address] [X=mmmm-nnnn]
[I=mmmm-nnnn] [B=address] [L=minXMS] [A=altregs] [H=handles] [D=nnn]
[RAM=mmmm-nnnn] [NOEMS] [NOVCPI] [HIGHSCAN] [VERBOSE] [WIN=mmmm-nnnn]
[NOHI] [ROM=mmmm-nnnn] [NOMOVEXBDA] [ALTBOOT] [NOBACKFILL]
Specifies the location of the EMM386.EXE file.
Activates the EMM386 device driver (if set to ON), or suspends the
EMM386 device driver (if set to OFF), or places the EMM386 device driver
in auto mode (if set to AUTO). Auto mode enables expanded-memory support
and upper memory block support only when a program calls for it. The
default value is ON. Use the EMM386 command to change this value after
EMM386 has started.
Specifies the maximum amount of extended memory (in kilobytes) that you
want EMM386 to provide as expanded/Virtual Control Program Interface
(EMS/VCPI) memory. This amount is in addition to the memory used for
UMBs and EMM386 itself. Values for memory are in the range 64 through
the lesser of either 32768 or the amount of extended memory available
when EMM386 is loaded. The default value is the amount of free extended
memory. If you specify the NOEMS switch, the default value is 0. EMM386
rounds the value down to the nearest multiple of 16.
Specifies the minimum amount of EMS/VCPI memory (in kilobytes) that
EMM386 will provide, if that amount of memory is available. EMM386
reserves this amount of extended memory for use as EMS/VCPI memory when
EMM386 is loaded by the DEVICE=EMM386.EXE command in your CONFIG.SYS
file. EMM386 may be able to provide additional EMS/VCPI memory (up to
the amount specified by the MEMORY parameter) if sufficient XMS memory
is available when a program requests EMS/VCPI memory. Values are in the
range 0 through the value specified by the MEMORY parameter. The default
value is 256. If you specify the NOEMS switch, the default value is 0.
If the value of MIN is greater than the value of MEMORY, EMM386 uses the
value specified by MIN.
Enables or disables support for the Weitek co-processor. The default
setting is W=OFF.
Specifies the address of the page frame. Valid values for x are in the
range 1 through 14. The following list shows each value and its
associated base address in hexadecimal format:
1 =* C000h 8 =* DC00h
2 =* C400h 9 =* E000h
3 =* C800h 10 =* 8000h
4 =* CC00h 11 =* 8400h
5 =* D000h 12 =* 8800h
6 =* D400h 13 =* 8C00h
7 =* D800h 14 =* 9000h
Values in the range 10 through 14 should be used only on computers that
have 512K of memory.
Specifies the page-frame segment base directly. To specify a specific
segment-base address for the page frame, use the FRAME switch, and
specify the address you want. Valid values for address are in the ranges
8000h through 9000h and C000h through E000h, in increments of 400h. To
provide expanded memory and disable the page frame, you can specify
FRAME=NONE; however, this may cause some programs that require expanded
memory to work improperly.
Specifies the address of the page frame. Valid values for mmmm are in
the ranges 8000h through 9000h and C000h through E000h, in increments of
Specifies the segment address of a specific page, where n is the number
of the page you are specifying and address is the segment address you
want. Valid values for n are in the range 0 through 255. Valid values
for address are in the ranges 8000h through 9C00h and C000h through
EC00h, in increments of 400h. The addresses for pages 0 through 3 must
be contiguous in order to maintain compatibility with version 3.2 of the
Lotus/Intel/Microsoft Expanded Memory Specification (LIM EMS). If you
use the Mx switch, the FRAME switch, or the /Pmmmm switch, you cannot
specify the addresses for pages 0 through 3 for the /Pmmmm switch.
Prevents EMM386 from using a particular range of segment addresses for
an EMS page or for UMBs. Valid values for mmmm and nnnn are in the range
A000h through FFFFh and are rounded down to the nearest 4-kilobyte
boundary. The X switch takes precedence over the I switch if the two
Specifies a range of segment addresses to be used (included) for an EMS
page or for UMBs. Valid values for mmmm and nnnn are in the range A000h
through FFFFh and are rounded down to the nearest 4-kilobyte boundary.
The X switch takes precedence over the I switch if the two ranges
Specifies the lowest segment address available for EMS “banking”
(swapping of 16KB pages). Valid values are in the range 1000h
through 4000h. The default value is 4000h.
Ensures that the specified amount (in kilobytes) of extended memory will
still be available after EMM386 is loaded. The default value is 0.
Specifies how many fast alternate register sets (used for multitasking)
you want to allocate to EMM386. Valid values are in the range 0 through
254. The default value is 7. Every alternate register set adds about 200
bytes to the size in memory of EMM386.
Specifies how many handles EMM386 can use. Valid values are in the range
2 through 255. The default value is 64.
Specifies how many kilobytes of memory should be reserved for buffered
direct memory access (DMA). Discounting floppy disk DMA, this value
should reflect the largest DMA transfer that will occur while EMM386 is
active. Valid values for nnn are in the range 16 through 256. The
default value is 32.
Specifies a range of segment addresses to be used for UMBs and also
enables EMS support. If you do not specify a range, EMM386 uses all
available adapter space to create UMBs and a page frame for EMS.
Provides access to the upper memory area but prevents access to expanded
Disables support for VCPI programs. This switch must be used with
the NOEMS switch. If you specify the NOVCPI switch without specifying
the NOEMS switch, EMM386 does not disable VCPI support. If you specify
both switches, EMM386 disregards the MEMORY parameter and the MIN
switch. Disabling support for VCPI programs reduces the amount of
extended memory allocated.
Specifies that EMM386 use an additional check to determine the
availablity of upper memory for use as UMBs or EMS windows. On some
computers, specifying this switch may have no effect or cause EMM386 to
identify upper memory areas as available when they are not. As a
result, your computer might stop responding.
Directs EMM386 to display status and error messages while loading. By
default, EMM386 displays messages only if it encounters an error
condition. You can abbreviate VERBOSE as V. (To display status messages
without adding the VERBOSE switch, press and hold down the ALT key
while EMM386 starts and loads.)
Reserves a specified range of segment addresses for Windows instead of
for EMM386. Valid values for mmmm and nnnn are in the range A000h
through FFFFh and are rounded down to the nearest 4-kilobyte boundary.
The X switch takes precedence over the WIN switch if the two ranges
overlap. The WIN switch takes precedence over the RAM, ROM, and I
switches if their ranges overlap.
Prevents EMM386 from loading into the upper memory area. Normally, a
portion of EMM386 is loaded into upper memory. Specifying this switch
decreases available conventional memory and increases the upper memory
area available for UMBs.
Specifies a range of segment addresses that EMM386 uses for shadow
RAM–random-access memory used for read-only memory (ROM). Valid values
for mmmm and nnnn are in the range A000h through FFFFh and are rounded
down to the nearest 4-kilobyte boundary. Specifying this switch may
speed up your system if it does not already hav
Loads the MS-DOS version table into memory. This device driver must be
loaded by a DEVICE or DEVICEHIGH command in your CONFIG.SYS file.
SETVER.EXE loads into memory the MS-DOS version table, which lists names of
programs and the number of the MS-DOS version with which each program is
designed to run.
Specifies the location of the SETVER.EXE file.