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."