Quarterdeck QRAM 1.00 Released in 1990 by Quarterdeck For 8088/8086/286 class PCs running DOS. QRAM is a memory management tool for 8088, 8086, and 286 based PCs. It can work with LIM 4.0 EMS memory cards, shadow RAM, and even VGA memory to free up or add to the base 640k memory. It also provides XMS compatible extended memory services, so it can replace Microsoft's himem.sys. For 386's please see Quarterdeck QEMM. Ser# 216-D1-6789 One 5.25 360k floppy disk. Winimage archived. Frees up available memory on that PC/XT ************************************* Features: XMS compatible extended memory management High memory management for PC's with EMS 4/EEMS memory or shadow RAM, QRAM enables you to run device drivers and TSR's or load DOS resources in high memory (640-1024K). DOS conventional memory extension. Extends conventional memory by 96K (from 640K to 736K) for PC's with EGA/VGA graphic adapters, when graphics capabilities are not needed. Low overhead. Requires only 1.5K of conventional memory. ************************************* System requirements: 8088, 8086, 80286 PC's. Use of high memory is only available when PC has EMS 4 or EEMS expanded memory or Chipt & Technologies shadow RAM. Operating System: PC DOS 2.0 - 4.x; MS DOS 2.0 - 4.x QRAM Version 1 Additional Information This file contains information which does not appear in the current manual. **** If you would like to print this file, simply type COPY READ.ME PRN: at the DOS prompt. **** Order of loading programs Normally the INSTALL procedure will place QRAM.SYS into its correct place in your CONFIG.SYS file. Simply stated, there should not be any other drivers between your expanded memory manager and QRAM.SYS, and QRAM.SYS should follow the expanded memory manager. Also, if you use the QEXT.SYS driver for XMS support or for DESQview, it should now be AFTER the QRAM.SYS driver. This is because it is possible to have QEXT.SYS loaded into high RAM, but only after the high RAM is created by QRAM.SYS. As mentioned in the DESQview manual, QEXT.SYS should be the first program which uses exTENDed memory. If you have a driver which controls both extended and expanded memory, such as QEMM-50/60 or ALLEMM4, then be sure to reserve at least 64K for QEXT's use. For example, when using QEMM-50/60 you would add the parameter EXTMEM=64. **** Lotus 1-2-3 reports that "123 cannot start because the driver set is invalid." If you get this message you are probably using VIDRAM. 1-2-3 is trying to check on the graphics card's capabilities and VIDRAM is telling it that no graphics are allowed. If you run the 1-2-3 INSTALL program and delete the graphics entry, then 1-2-3 will work. The best way is to use 1-2-3 INSTALL's "Advanced Options" and "Modify Current Driver Set" selections. Then select the "Graph Display" item. Using the "Del" key on the driver which is selected. After doing this, press the "Esc" key and use "Save Changes" to save the driver set with a different name (we suggest 123VID). Then when you use 1-2-3 with VIDRAM simply enter 123 123VID and the right driver will be used. DESQview users may want to install a second version of 1-2-3 which passes 123VID as another parameter. **** Extra messages from OPTIMIZE The OPTIMIZE program may report things which are not mentioned in the documentation: 1) The number of combinations OPTIMIZE uses to figure out the best possible locations for your programs. This number depends on the number of programs which need to be loaded high, and the number of High RAM areas. If you have few High RAM areas, then the number will be smaller than if you have many. 2) The amount of memory you gain or lose by using OPTIMIZE is reported. OPTIMIZE will save the current memory size when it is run and then calculates the difference when it has finished its 2nd reboot. If you have previously run OPTIMIZE (i.e. you already have some programs loaded high), then the memory savings or loss is reflected in the new memory values. 3) Unable to optimize a line in AUTOEXEC.BAT because it is too long. Since OPTIMIZE needs to add some extra parameters to each LOADHI, it is possible that the line will end up longer than 128 characters. Lines in AUTOEXEC are limited to 128 characters, so OPTIMIZE can't test if LOADHI will work for that line so, you might try OPTIMIZE /PATH which will avoid adding the path to each LOADHI (instead, it adds the QRAM subdirectory to your PATH). You may have to watch carefully for these items, since they may happen in the middle of your AUTOEXEC file. **** Additional switches for OPTIMIZE Several switches have been added to OPTIMIZE since the manual was printed. Some of these switches are for its own use while others may be useful to you. You can see the switches yourself by typing: OPTIMIZE /HELP The /PATH switch tells OPTIMIZE to add the path to OPTIMIZE to your PATH= statement in the AUTOEXEC.BAT file. The /EMM:fname switch tells OPTIMIZE the name of your expanded memory manager. Most expanded memory managers have "EMM" somewhere in their name, but if yours does not, then you may have to use this switch so the OPTIMIZE will know which line in your CONFIG.SYS is the expanded memory manager. The /LOADHIONLY switch tells OPTIMZE to only modify lines which alread have LOADHI in them. This will keep OPTIMIZE from trying to add LOADHI to lines which you may not want loaded high. **** What are those numbers in the LOADHI.OPT file that OPTIMIZE creates? When OPTIMIZE is gathering statistics on your programs, it uses the "GS" parameter with the output sent to a file. The file name is LOADHI.OPT and will usually be found in the QRAM directory. You can see the same numbers if you use the "/GS" parameter yourself. The first item on each line is the name of the program. The second item is a number which is the amount of memory the program needs to load in. The third item is the amount of memory the program leaves resident in memory (a 0 indicates a program which leaves nothing resident, no reason to load that one high). The two letters are something OPTIMIZE uses to keep track of which programs and device drivers are where. By the way, if you use DESQview and are wondering how to figure out how much memory a program needs, you can use LOADHI/GS progname for any program. The first number you get (when you exit the program) is that program's minimum memory usage to load. **** There should be enough room to LOADHI a program, but it won't load into high RAM First, see the item 'Attempting to LOADHI a program reports "Not enough room to load High"' in Appendix A. Second, If you think a program should be able to LOADHI but it won't, check the LOADHI.OPT file for its size. Perhaps if you load the items in your CONFIG or AUTOEXEC files in a different order it may be able to fit. This is especially true of programs which start out using large amounts of memory to load in and then leave small amounts resident. In general, if you can load the programs which use the most amount of RESIDENT memory first, you'll be able to fit more programs into memory. Third, maybe you have "too many" high RAM areas. This means that you have some devices using memory between 640K and 1024K (A000-FFFF) which fragment the high RAM. This is especially true on PS/2 computers. Devices such as network cards, hard disks, and 3270 cards can put ROM and RAM in this area. "Fragmenting" the area above 640K, means that these ROMs and RAMs are leaving empty places between them. The best thing to do is to move each of the ROM and/or RAM pieces to the beginning or end of your usuable area. This means to move them as close to C000 (the lowest possible) or E000 (the highest possible) as you can. Try to get the end of one device and the start of the next device to be right next to each other. Then you'll have fewer high RAM areas, but they will be larger in size (the same amount of memory is available, it's just in bigger pieces). **** New Parameter NOVIDEORAM prevents high RAM in the video area When using Monochrome, Hercules, or CGA video adapters, QRAM normally fills the unused memory areas between 640K and 736K with memory and raises the DOS upper memory limit to 704K or 736K. This process is call "video filling". If you do not want the DOS memory limit increased, then you must specify NOVIDEOFILL. The video areas will be treated as High RAM if NOVIDEOFILL and RAM are specified. If you do not want the area treated as High RAM, then you may specify NOVIDEORAM which will prevent any area below C000 not explicitly specified as high RAM from becoming high RAM. Most people won't need to use this parameter; it is intended to make VIDRAMEGA and VIDRAMEMS easier to understand. **** New Parameters for use along with VIDRAM If you wish to use the VIDRAM program, you may find two new parameters to be of some use. These parameters are VIDRAMEGA and VIDRAMEMS. These parameters affect how QRAM treats the memory area between A000 to BFFF, commonly called "the video area". VIDRAMEGA tells QRAM that the video area is not to be mappable. This is equivalent to having the following parameters on the QRAM line: X=A000-BFFF VIDRAMEMS tell QRAM that the video area is mappable but it is not a part of conventional memory nor will be converted to high RAM. This is equivalent to the following parameters on the QRAM line: NOVIDEOFILL NOVIDEORAM I=A000-AFFF These two new parameters are meant to be used along with the VIDRAM program. VIDRAM will allow you to use the EGA/VGA video area as conventional memory as long as you don't use a graphics program. With VIDRAMEGA, the memory used to fill in the video area by the VIDRAM program comes from the EGA or VGA card's memory. While this will conserve your extended memory for use as expanded memory, the memory provided is usually very slow, often less than half the speed of your other memory. With VIDRAMEMS, the memory used to fill in the video area by the VIDRAM program comes from expanded memory (EMS). This memory is usually just as fast as your other memory, and since it is mappable, the size of background programs inside DESQview will increase as well. The VIDRAMEMS option will confuse versions of DESQview prior to 2.26. You should NOT use VIDRAMEMS with DESQview unless you have version 2.26 or higher. **** New parameters to allow the Page Frame to be smaller than 64K FORCEEMS, (FEMS), instructs QRAM to allow EMS memory requests to be honored. Use this parameter only if you have used the FRAMELENGTH parameter (see below) with a value less than four. This will allow programs limited access to expanded memory even without a full page frame. Be aware that some programs which use expanded memory may not work with a partial or missing page frame if you use this option. FRAMELENGTH=x, (FL), instructs QRAM to assume a page frame containing "x" pages, where "x" is a number from 0 to 4. Setting "x" to zero is equivalent to not having a page frame at all. See also FRAME=NONE. Setting "x" to four is equivalent to the EMS standard. Normally a page frame is established by the expanded memory manager and consists of four 16K pages. With this parameter, QRAM allows you to free up one or more of these pages for use as high RAM. Or, you can use this option with FORCEEMS if you have programs which can make use of expanded memory in the absence of a page frame, or with a partial page frame. This can be important if none of your high memory areas is large enough for a standard size page frame. See also FORCEEMS and NOEMS. **** Using Super PC-Kwik with LOADHI The Super PC-Kwik disk cache may cause OPTIMIZE some confusion when it is loaded high. While it is possible to load this program hign, the amount of memory it may take when loaded high can be different than when the program is loaded low. Since OPTIMZE loads all programs in low memory to calculate its size, you may find that programs loaded after the disk cache may not be able to load high. One possible way to avoid this problem is to use /t:8 with SUPERPCK. This parameter limits the amount of "look ahead" the cache uses to less than a full track. Refer to the Super PC-Kwik manual for mor information about the "/t" switch.