The LazyBoy Library Manual - Conditional Defines

Okay, here are the conditional defines that effect how the overall library behaves and also what gets excluded from automatic initialization at program startup. Simply create the define prior to the %include "lazy.inc" in your program.

%define STACK_SIZE 512Override the default stack size of 512 bytes.
Warning: XMS calls require a minimum of 256 bytes free on the stack.
 
%define DEBUGEnable debugging code generation. This is not for a debugger. This causes the library to include a bunch of checks to help trouble shoot bugs in a program. It will include automatic stack overflow checking and some range checking. For example, providing coordinates outside the current CRT text window will cause the program to terminate with error messages. This will create a lot of extra code and effect program performance. This should not be enabled when a program is released.
 
%define NO_DOS_CHECKExclude checking that the operating system is compatible with DOS 5.00 or better. Many portions of the library require DOS 5 or better. This only excludes the test for DOS 5 support, not the requirement.
 
%define NO_MEM_CHECKExclude verification that at least 64k of memory was allocated for the program.
 
%define NO_CRTExclude all the fancy CRT features. Like Windows, color, four-way scrolling, etc. Since the mouse would be of no use, it will not be initialized either. This will save about 2kb total. There is a lot that goes into preparing the CRT and Mouse for usage.
 
%define NO_MICEExclude mouse support. This happens anyway when NO_CRT is defined. But if you just don't need a mouse, this will exclude support for it saving about 1kb.
 
%define CRT_BIOS_TIMERDon't enable this. Seriously, do not do it! The default behaviour is to just count timer ticks for a rough delay. However when this option is defined, the Delay macro will attempt to use BIOS Interrupt 0x15 for more accurate delays. But, that requires an AT/PS or better. Also, many systems gotten stuck or locked up when this method is used. If more precise timing is required, there are far better alternatives to using either INT15 or counting timer ticks. The library will even ignore this define if you don't target at least a 286 or better.
 
%define FULL_CPU_MIMICWhen defined, the extended assembly instructions will add additional code to mimic things that would occur as if the cpu actually supported the instruction. Things like using PUSHA on a 8086 (the instruction did not actually exist until the 186 class CPU). The correct value for SP will be on the stack. Also, all of the FLAGS when processing very large numbers (like qwords, twords, etc.) will be set like the instruction existed. This kind of thing is slow and requires a lot of overhead. It is not recommended and I may drop support for this under most circumstances. Normally, just the common flags (like CARRY for ADD and ADC) are generally automatically supported. It is far less cumbersome for your program to simply use TEST to check the less commonly used flags on the rare occasion that they are needed.
 
%define NO_BIOS_VIDEOWhen defined, CRT and MOUSE will only have support for DirectVideo. This should be fine for nearly all hardware. However, there are edge cases that the program will terminate with an unsupported video mode error. This define saves about of 200-500 bytes total when the CRT is not excluded.
 
%define NO_DIRECT_VIDEO When defined, CRT and MOUSE will only have support for BIOS Video. This is fine. But, on most hardware there will be a noticable difference in performance. And, the mouse and some functions will cause the cursor to flitter about the screen when it is visible. This define has a similar byte saving to that of NO_BIOS_VIDEO. Either, BIOS or Direct video is required by the CRT macros.
 
%define NO_OPTIONAL_CLD Many of the library's macros rely on the direction flag being clear to operate correctly. The cld instruction is only optional in the sense that (under DOS) a program starts out with the flag clear and if you never set that flag it will stay clear. If you are not modifying the direction flag or you always return it to it's cleared state before invoking the library macros, you can enable this option to remove all those optional cld instructions from being compiled into the program. This can save a couple dozen bytes of compiled code. But in general, this is probably not worth the headaches it will most likely cause you to have. You should probably just leave this disabled.
 
%define NO_INITIALIZE When defined, no startup or initialization will occur when the the library is included. This could be useful when creating Device Drivers or other programs that require specific data or code at the start of the binary. If you use this define, do not use any macros from the macro groups which require initialization until you manually invoke LAZY_INIT in your program.