SUMMARY
At the end of a successful compilation, the BC.EXE compiler displays
the following message:
nnnnn Bytes Available
nnnnn Bytes Free
0 Warning Error(s)
0 Severe Error(s)
This message gives the amount of compiler workspace available before
(Bytes Available) and after (Bytes Free) a program is compiled.
If Bytes Free is approaching 1024 or less, then the compiler is
reaching internal workspace limits in generating code for this module.
As your program approaches the compiler's limits, you should break
your program into smaller, separately compiled modules that contain
callable SUBprogram or FUNCTION procedures. The main module can CALL
the procedures in the support module(s). The separate support .OBJ
modules must be linked with your main module.
You can also break your program into smaller .EXE programs that use
the CHAIN statement to transfer control from one .EXE program to
another.
Note that BC.EXE can give you a "Program-memory overflow" or "Out of
Memory" error at compile time when there are still plenty of "Bytes
Free". This happens when the compiler has enough workspace but the
code segment that it generates exceeds 64K. (To monitor how close the
code segment size is growing toward 64K, you can check the size of the
BC_CODE item in the linker's optional .MAP file, but only after
compiling and linking with no errors.)
To work around this 64K-per-module code-generation limitation, you
need to break the program into separately compiled (.OBJ) modules
containing called procedures, or into separately compiled main .EXE
programs that can run each other with the CHAIN statement.
This information applies to BC.EXE in the Standard and Professional
Editions of Microsoft Visual Basic for MS-DOS version 1.0; to BC.EXE
in Microsoft QuickBasic for MS-DOS versions 4.0, 4.0b, and 4.5; to
BC.EXE in Microsoft Basic Compiler for MS-DOS and MS OS/2 versions 6.0,
6.0b; to BC.EXE in Microsoft Basic Development System (PDS) for MS-DOS
and MS OS/2 versions 7.0 and 7.1; to QB.EXE in Microsoft QuickBasic for
MS-DOS versions 2.0, 2.01 and 3.0; and to BASCOM.EXE in Microsoft Basic
Compiler for MS-DOS versions 5.35 and 5.36.