Symbol definition

%define <def_name> <def_value> Defines a symbol for the given driver, i.e. scope of applicability will be limited to the framework of the given file, the symbol possess <def_value>value; from <def_value>, all spaces at the start and at the end of this value will be removed with subsequent replacement of macros.
%define! <def_name> <def_value> The same as with %define, but if a symbol of the same name exists (and is a local symbol, i.e. driver-defined), the symbol will be re-defined instead of invoking an error; from <def_value>, all spaces at the start and at the end of this value will be removed with subsequent replacement of macros.
%define_prj <def_name> <def_value> Defines a symbol for the project as such, the symbol value will be <def_value>; will not work for TST and CHG scripts, when only a local symbol will be defined (while the local symbols from main.tst will be available for starting TST component as well); the symbol name can be defined using macros, for example, iv%IntDevice; from <def_value> all spaces at the start and at the end of this value will be removed with subsequent replacement of macros; define_prj. Allows for re-defining the formerly defined value, which should be, however, used only exceptionally.
%undef <def_name> Deletes the definition of a driver-defined local symbol/list, if the symbol does not exist, error will be reported.
%undef! <def_name> If a local driver-defined <def_name> symbol/list exists, this will delete the definition of such symbol/list.
%compute_fraction(<def_name>, <real_value>, <number>) Calculates a fraction, which is the closest, by its value, to the real number specified and define the output into the <def_name>_mul and <def_name>_div symbols (if the symbols exist, they will be re-defined) - when both such values must be lesser or equal to integer <number>; the function operates with 32-bit signed integer only; serves for generating a timer driver.