Insufficient memory in Windows - dBASE v2.0

 

INSUFFICIENT MEMORY WINDOWS v2.0 and Compiled apps. You should be able to run from within Windows -- assuming sufficient available memory resources. Due to differences in how Windows manages memory (versus DOS), running dBASE has a couple extra requirements. You must either have 3Mb of free XMS memory (after starting Windows) or you must have Windows set up to use a permanent swapfile.

The conclusive means to determining if dBASE IV 2.0 can run in Windows -using your configuration- is to modify the dBASEIV.PIF file to execute PMINFO.EXE instead of dBASE.EXE.

  • Use the PIF Editor in Windows, and bring up the dBASEIV.PIF file on the dBASE directory.

  • Change Program filename to be "C:\dBASE\PMINFO\.EXE"

  • Change the checkbox for "Close Window in Exit" to be un-X'ed, or unchecked, so that the window will remain open after PMINFO is running

  • Save these changes - Double-click on the dBASE IV (for v2.0) icon, this will run PMINFO and the screen output will remain available to viewing.

  • After finishing collecting data restore the original settings to the dBASEIV.PIF file to restore normal operations.

Observe the line specifying the "K bytes available for DOS/16M programs" in the extended memory column. This must show about 3224K+ bytes free in order to run v2.0 and/or compiled apps from within Windows.

If you receive the insufficient memory error check out the following:

dBASE IV v2.0 as a default will try to load into a minimum of 5Mb of virtual memory (base memory + available extended + swap file space). In Windows try looking at the following factors:

  • Use the Windows' -Control Panel- application to check the following;

    • Check the size of the Windows swap file, make sure it is large enough to accommodate dBASE plus some other apps. Since the swap file is a regular DOS file, space must be available to accommodate it. Having no swap file may yield an insufficient memory message under Windows.

    • Make the swap file permanent and route it to an uncompressed disk partition.

    • Enable 32-bit access, if possible.

  • Try decreasing the amount of KB desired/required for conventional memory in the .PIF file. Decreasing the amount of memory under the KB Required and KB Desired can free some memory for Windows to allocate as extended memory. If a -1 value is used try changing it to a different value like 640 or 512 or as low as 130. BIN files are held in lower memory so don't lower the KB Required to as low as 130 but choose a corresponding higher value that reflects that amount of memory taken up by the BIN plus some extra for buffer space. Under Windows, using -1 for the KB Desired value in some conditions will give an "insufficient memory" error.

  • In order to limit dBASE IV's use of memory the DOS16M environment variable is used. As per the README file, the SET DOS16M=: must be set to 4M or higher. For example:

SET DOS16M=:5M 

* Make sure you follow this exact syntax
* These following two lines will not work!

SET DOS16M =:5M 
SET DOS16M = :5M 
          ^ ^ no spaces 

The colon is required and M indicates megabytes. Removing the M indicates kilobytes. Look at the README file on the dBASE directory and QDOS16.ZIP in Lib 10, for more information about the SET DOS16M environment setting. For v2.0, the BDC Compiler and 16 bit generated .EXE's, when used under Windows, SET DOS16M= will limit the maximum amount of memory used by that program.

  • dBASE will not use virtual memory when interfacing with a DPMI server. Common DPMI server environments are Microsoft Windows 3.1, OS/2 2.x, Qualitas' 386MAX v6.x memory manager. Therefor under Windows the .VMC file settings will be ignored and unused. When you run a compiled application from within Windows (started in enhanced mode), the VMM never comes into play. All virtual memory management is effected by Windows. If there is not enough extended/XMS memory for the compiled application to run, Windows will swap the rest out to its swap file. As far as the compiled application is concerned, it is using memory only. It does not detect the difference between actual RAM memory and virtual memory as provided by Windows. (This is assuming a permanent Windows swap file.)

  • If running dBASE.EXE or a compiled app from the -File | Run- this will probably fail because the settings used are those configured in the _DEFAULT.PIF. The Windows _DEFAULT.PIF sets XMS KB Required to 0. dBASE will not run with the _DEFAULT.PIF settings or from the default MSDOS/PROMPT icon in Standard mode. However _DEFAULT.PIF and the MSDOS/PROMPT icon will run dBASE IV version 2.0 in enhanced mode. (see next item, regarding standard vs. enhanced mode) Either change the _DEFAULT.PIF settings or run from the dBASE icon, the icon will use the settings in the dBASEIV.PIF file. Create a separate .PIF file for the .EXE's and configure them similar to the dBASEIV.PIF settings.

  • To slightly decrease the 3224K memory requirement, before entering Windows, issue the command: SET DBASEIV_BUFF=7 Setting the bufmin parameter in DBASEIV_BUFF will force dBASE to use less memory for buffering and make more available for program use. Setting the buffsize parameter in DBASEIV_BUFF environment variable to 9, 8, 7 or 4 will typically make more memory available than not setting it at all. DBASEIV_BUFF=7 should drop the memory requirement from about 3224K to 2753K.

  • Standard Mode vs. Enhanced Mode
    dBASE/16M uses DPMI under Windows 386 Enhanced mode only. (PMINFO shows DOS/16M switch mode 0.) Windows Standard mode does not support DPMI. When in Standard mode, dBASE uses the same memory configuration that it would use outside of Windows. ( PMINFO will return a switch mode >0 ) When you run a DOS program from within Windows (in standard mode), by default no extended/XMS memory is provided. Further, Windows will not effect any virtual memory -- all that is available to the DOS app is true RAM. This is evidenced by running the DOS command MEM. However, the PIF file can be modified to provide extended/XMS memory (assuming it is there to be provided). If there is sufficient RAM memory, modify the PIF file to provide enough to run the compiled application. (Note: the PIF Editor interface will appear different when Windows is run in enhanced mode versus standard mode.) When running under Standard mode, dBASE requires a .PIF with XMS Memory settings. The XMS Memory, KB Required setting must be set to at least 1024.

    In Enhanced mode the XMS memory settings do not effect 16M memory use. Note Windows cannot be run in enhanced mode on 80286 computers, so no permanent swap file is possible. This means that the free RAM memory requirement is the only possible choice on these computers. On this computer you would only be able to run the compiled application under DOS.


[Home] [FAQ Index]