$+ Index
Commands
What MEMFIX.EXE does 

For support E-mail: ashbysoft@cix.compulink.co.uk, or join the ashbysoft_supp conference on CiX.

This program and it’s help file are copyright (c) SP & PA Ashby (AshbySoft *) 1995. 
Please see the file COPYING supplied with this program for more details.

$ + K # Commands
Available commands are:

Help
Blocks
Set
Scan

+ # Help
You’re looking at it !.

+ # Blocks
This sets the number of 512bytes DOS memory blocks to reserve.
It can also be set on the command line: e.g. MEMFIX.EXE 20

+ # Set
This reserves the number of DOS memory blocks specified in the Blocks setting (if possible).

+ # Scan
This scans DOS memory, and reports the size of the largest single contiguous block available. It is normally slightly less than the total free DOS memory, but since this is what programs ask for, it is more useful to know than the total free DOS memory. Honest !

$ # What MEMFIX.EXE does

MEMFIX ensures you do NOT get ‘insufficient memory’ errors when starting new Windows programs. Usually...

This is how it does it !

$ # How?

Windows is basically a DOS extender; i.e. a program which lets applications run in a non-DOS mode and still use DOS facilities like the disk, the network, the CD, the sound card, etc. This means programs still need to place a record of who they are, where they are, etc. in DOS memory (i.e. memory below the 640kbyte boundary) when they start. This is called a Program Segment Prefix or PSP. It needs a miniscule 512bytes. Unfortunately, Windows itself also needs DOS memory - lots of it ! Windows 3.11 is particularly bad here, especially if you run another network protocol alongside the Windows one. Also, lots of Windows programs eat up DOS memory for their own peculiar reasons (usually unecessarily !).

MEMFIX.EXE fixes the problem of not having any DOS memory left for creating new PSPs when new programs are started. It does this by grabbing a bunch of 512 byte blocks itself and only making every other one available. Since most non-PSP DOS memory blocks are bigger than 512bytes, they have to go elsewhere...usually above the MEMFIX area. It is possible that MEMFIX will stop programs operating properly if they really do need DOS memory to work; however most don’t. Should this happen, just close MEMFIX and try the other program again. If it still doesn’t work, you have too many programs loaded ! Kill something. You can restart MEMFIX afterwards.

Source code is available (Windows 3.0 compatible) if required.