uses an extra path and environment variable MFCONFIG. (See section for further details on the environment.) The Ini and Vir programs will search these directories for a file called mfmemory.config, which is expected to contain instructions, one per line, of the form
set memmax 100000 set screenheight 400 set scalefactor 2The example file given in the config directory `sets' what are my present standard configuration, slightly higher than the internal defaults. Not all settings need to be given in the file. Note that you can't just set everything to the maximum – that would require more than 8 Giga bytes of Fast!3
If you create a standard base file with Ini, any change to the configuration mfmemory.config will be acceptable for Vir in connection with this specific base, except changes to memtop. This will result in the message ``(Fatal base file error; I'm stymied),'' indicating that this base was produced with a different Ini.
Here is a complete list of all parameters allowed in the configuration file, their internal defaults and some rules for their minimum and maximum values:
Setting | Default | Maximum | Purpose |
memmax | 30000 | maxhalfword | Size of main storage |
maxinternal | 100 | ≤259774 | Number of internals |
bufsize | 500 | maxhalfword | Input characters |
errorline | 72 | maxhalfword | Error context width |
halferrorline | 42 | <errline-15 | First error line |
maxprintline | 79 | ≥60 | Output text line width |
screenwidth | 768 | 4095 | Width of display screen |
screenheight | 1024 | 4095 | Height of display screen |
stacksize | 30 | 300 | Number of input sources |
maxstrings | 2000 | maxhalfword | Number of strings |
poolsize | 32000 | maxhalfword | Characters in strings |
movesize | 5000 | 10000 | Storage for octant moves |
maxwiggle | 300 | 1000 | Autorounded points per cycle |
gfbufsize | 100 | 4096 | Size of the output buffer |
pathsize | 300 | 1000 | Number of knots in a path |
bistacksize | 785 | 785 | Stack for bisection algorithm |
headersize | 25 | 100 | Number of header words |
ligtablesize | 5000 | 32510 | Ligature/kern steps |
maxkerns | 500 | 1000 | Distinct kerns |
maxfontdimen | 50 | 100 | Number of `fontdimen's |
memtop | 30000 | memmax | Largest memory index |
scalefactor | 1 | 10 | Display is `' times reduced |
maxinopen | 6 | 20 | Number of input files |
paramsize | 150 | 1000 | Macro parameters |
You may control the size of the online display by changing the values for screenwidth, screenheight, and scalefactor. The meaning of the first two should be clear, just keep in mind, that screenheight denotes the interlaced setting, although non-interlaced screenmodes will automatically be detected and taken care of, i.e., only half as much pixel lines will actually be drawn. And the two values don't set the size of the window, but the respective innerwidth and innerheight. The scalefactor is a reduction factor, i.e., the online display will be reduced by this factor in both its width and height. To make sensible use of this feature, the plain.base provided with this package was compiled with the internal settings
screen_rows:=4095; screen_cols:=4095; % infinitydefined in the printer modes file. When drawing on screen uses the smaller value of screenheight and screen_rows respectively screenwidth and screen_cols, so actually the configuration overrides the internal settings.