rogerson@PEDEV.Columbia.NCR.COM (Dale Rogerson) (02/23/90)
Here is something that I believe everyone has been looking
for. I found it on GENIE in the Microsoft Users Group.
Help it is helpful.
-----Dale
Rogerson-----
=========================================================================
Windows/286 and /386 WIN.INI Switches:
[WIN386]
EmmSize = <KB Value>
This is used to set the amount of Expanded Memory. Leaving the value
blank, will allocate as much available memory to expanded.
Setting the value to 0 will disable the allocation of an EMS page
frame. This is useful for testing purposes, to discover if the
problem you are experiencing is due to an EMS page frame conflict
with devices using high memory locations.
WindowMemSize = <KB Value>
WindowMemSize controls the size of the Windows virtual machine
(VM1). It can be thought of as the Memory Required PIF setting
for VM1. The default (and maximum) for this setting is 640.
We recommend leaving this set to 640 in virtually all cases.
For adjustments to the windowmemsize= setting in your win.ini
to be effective, the emmsize= entry must be set to 0.
If you want to set the windowmemsize= setting to a value other than
640, you must set your emmsize= setting to 0. For example, if you
want to allocate 448 kilobytes for running Windows and Windows
applications, put the following lines in your WIN.INI file:
windowmemsize=448
emmsize=0
Page 25 in "Using Microsoft Windows/386" lists the minimum value for
the windowmemsize= setting as 384. Generally this is true; however,
if you have a large number of device drivers or a network installed
on your system, this value cannot be set as low. If, when you start
Windows/386, you receive the message "Not enough memory to run
Windows", try setting windowmemsize= to higher values.
EMMPageFrame = <Address>
This is set to the starting address where the 64K pageframe will
begin. It allocates a 64K contiguous EMS page frame beginning at
the four-digit hexadecimal address specified; regardless of what
other adapters may be using the range of memory. Valid addresses
begin at C000.
LastEMMSeg = <Address>
This sets the last address win386 will examine with its automatic
search to establish the 64K pageframe. The default and maximum
is address E000h.
VirtualHdIrq = 0 (Turn Off)
1 (Default)
This is used mainly for systems using a non-standard disk controller.
With the default, the ROM routine which performs the disk access is
bypassed to allow Windows/386 to perform its own handling of the
disk. By setting the VirtualHDIrq to 0, you allow the ROM routine
to perform the access. This is slower, but necessary in some cases
where the disk controller and/or third-party disk partitioning
software is incompatible with Windows/386' direct disk access.
New Windows/386 2.1 EMM Memory Switches:
There has been a problem on some configurations running WIN386 regarding
use of the memory from C000:0 to EFFF:F. WIN386 does a ROM RAM scan in this
area to try to find "holes" it can use for an EMS page frame. This causes
problems with some adaptors which don't like their memory getting "touched",
or with adaptors that only map the memory in when they are using it (i.e.
Token Ring adaptors), and leave it unmapped at other times.
There are now two WIN.INI entries for the [WIN386] section which will allow
the user to override the default action of WIN386 and force WIN386 to treat
a memory address range in a user specified way regardless of what may be
occupying that address range.
emmexclude=<range>
emminclude=<range>
<range> is startseg-endseg where startseg and endseg are segment
values in the range C000 - EFFF. This field is identical to the
range given on the /X and /I switches for most EMM drivers.
To include or exclude multiple ranges, use multiple lines:
emmexclude=<range1>
emmexclude=<range2>
emmexclude=<range3>
emminclude=<range1>
emminclude=<range2>
emminclude=<range3>
EMMEXCLUDE specifies a range which is to be excluded from consideration for
use as an EMM page. This has the side effect of turning off the ROM RAM
search code for the range.
EMMINCLUDE specifies a range which is to be considered for use as an EMM page
regardless of what may be there.
NOTES on range:
o Ranges specify addresses between C000 and EFFF. Segment values
less than C000 are changed to C000. Segment values greater
than EFFF are changed to EFFF.
B800-F3FF is changed to become C000-EFFF
o Ranges specify 16K pages, so the startseg is rounded DOWN to the
nearest 16K page boundary, and the endseg is rounded UP to
the nearest 16K page boundary - 1.
D300-D4FF is rounded to become D000-D7FF
The 16K boundaries are at:
C000
C400
C800
CC00
D000
D400
D800
DC00
E000
E400
E800
EC00
F000
o endseg must be greater than startseg (after above noted adjustments).
Ranges that do not satisfy this are ignored.
o Ranges are INCLUSIVE. thus:
C000-D000 is rounded to C000-D3FF.
To stop at D000, the correct range specification is:
C000-CFFF
General NOTES:
o EMMINCLUDE must be used very carefully.
o Remember that you are specifying a range that will be
considered for EMM use REGARDLESS of whether there is any
ROM or RAM there.
o Remember also about the rounding to 16K boundaries that
will be done on the range!
o Failure to consider things carefully will crash the system,
or defeat the ability to use a particular adaptor under
Windows/386.
o EMMINCLUDE takes precedence over EMMEXCLUDE if you specify ranges
which overlap. It is VERY STRONGLY recommended that you do not
rely on overlapping range behavior as it may be changed in a
future release.
o EMMINCLUDE of a range does not guarantee that it will be used for
EMM by WIN386. EMMEXCLUDE of a range does guarantee that it will
not be used for EMM by WIN386.
o The DEFAULT end of EMM consideration is not actually F000, it is
E000. This is controled by the LASTEMMSEG win.ini entry. The
default LASTEMMSEG value is 0E000. Users should be careful
about putting in "LASTEMMSEG=0F000" because the behavior of the
E000-F000 region is unpredictable on most machines.
EXAMPLE:
[win386]
; Windows/386 will allocate the amount of memory specified in the
; windowmemsize entry to Windows. The minimum memory that can be
; allocated is around 420, but this will vary depending upon whether
; or not you are running with a network, which version of DOS you
; are running with, and so on. The emmsize entry fixes the MAXIMUM amount
; amount of extended memory that can be used as expanded memory at any
; one time. Both your DOS applications and Windows itself will use this
; expanded memory. You are probably best off leaving this entry blank,
; since Windows/386 will use a default value.
windowmemsize=640
emmsize=
emmexclude=C400-C7FF
emmexclude=D800-DFFF
emminclude=D000-D7FF
;
; The AltEscape, AltEnter, and similar entries allow you to disable
; Windows/386's use of these special alt-key sequences. Normally they
; should all be enabled (set to "on"), in which case these sequences are
; used by Windows/386 and are not seen by other applications. If you need
; to run an application which relies on one of these sequences, you may
; set that entry to "off", then Windows/386 will ignore that key sequence,
; and it will be passed on to applications.
altescape=on
altenter=on
altspace=on
alttab=on
altprintscn=on
Windows/286 EMS Line Control Switch
Moveable EMS line
The syntax is:
win /l[+-]nnnn
nnnn is the number of kb by which you want to
move the line. This number is currently limited
to -16 <= nnnn <= +256. In practice, raising the
line by much above 100k usually drops you into
small frame EMS.
The /l flag is incompatible with the /n flag.
Don't use both.
The '+' in /l[+-]nnnn is in fact optional.abukarb@prism.cs.orst.edu (Bassam A. Abu-Karroum) (02/24/90)
In article <2932@PEDEV.Columbia.NCR.COM> rogerson@PEDEV.Columbia.NCR.COM (Dale Rogerson) writes: > >EMMPageFrame = <Address> > > This is set to the starting address where the 64K pageframe will > begin. It allocates a 64K contiguous EMS page frame beginning at > the four-digit hexadecimal address specified; regardless of what > other adapters may be using the range of memory. Valid addresses > begin at C000. > other adapters may be using the range of memory. Valid addresses > begin at C000. > The above paragraph needs a little clarification. It is true that Windows/386 will set the pageframe at that address. However, if any other device or adaptor is using the range, Windows File.About command will not report any expanded memory. Also, to allocate the pageframe at the desired address you need to precede the address with a zero. Yes, a zero on the left side. This is the only WIN.INI switch that REQUIRES the zero. A sample line would be: emmpageframe=0D000 Without the leading zero, the above statement is useless. Please note that all entries for the WIN.INI need to be in lower case. (Unfortunately, not mentioning the leading zero was an error on Microsoft part) Bassam
brent@well.sf.ca.us (Brent Southard) (02/26/90)
In article <16199@orstcs.CS.ORST.EDU> abukarb@prism.CS.ORST.EDU (Bassam A. Abu-Karroum) writes: >...to precede the address with a zero. Yes, a zero on the left side. This is >the only WIN.INI switch that REQUIRES the zero. A sample line would be: > > emmpageframe=0D000 > >Without the leading zero, the above statement is useless. >Please note that all entries for the WIN.INI need to be in lower case. While the bit about the leading zero is correct, the statement regarding lowercase is wrong. I routinely use the following statement: EMMPageFrame=0E000 By the way, this is the exact case in which Microsoft documents the switch. Brent -- brent southard (313) 656-8349 | usenet: ...!well!brent ImageTech Corp (313) 362-3141 | "When frog licking is outlawed, only outlaws will lick frogs."