               BAPC 3.0 - Compile-controll commands
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Last update:  1999.4.11.           Actual version: v3.0a20

                     compiler/mode/header settings
                     =============================

 .x86 or .80x86  (x = 0..6)
 ~~~~      ~~~~~~
     It compiles header for the chosen compiler/mode from HEADERS.H .
  Not necessary for use, but recommended. Two examples, where NOT to use:
    1. You are making an .INC file, not an .ASM
    2. You are compiling for a special compiler, which is not included in
       HEADERS.H, and you don't want to include. This time you have to insert
       the header between .ASM and .BAP or after .NOHEADER !
  Remark: It has effects at further parts : at the placing of data/variables,
          making stack, at the end of the file, in the makefile.
  Remark2: At multiple uses ( changing processor type on the fly ) only the
          first makes header, all other are just copied.

 .PMODE
 ~~~~~~
     It turns the compiler in a state, in which it compiles the program
  to be used under PMODE v2.x extender made by TRAN. It should be used
  before .x86 !

 .PMW
 ~~~~
     It turns the compiler in a state, in which it compiles the program
  to be used under a DPMI extender such as PMODE/W v1.x . It should be used
  before .x86 !

 .EXEx
 ~~~~~
     The output can be compiled to .EXE.
     Warning: At EXE compiling other LIBs should be used
     (SYSTEM1 -> SYSEXE, MEMORY -> MEMEXE, etc.)
     memorymodells:
       .EXE1 -  1 segment   CS=DS=SS
       .EXE2 -  2 segment   CS<>DS=SS
       .EXE3 -  3 segment   CS<>DS<>SS
       .EXE  - The same as .EXE2  (because of compability)
     Remark: [-v3.0a8] only .EXE was reachable!

 .NASM
 ~~~~~
   The same as the /NASM command line parameter ( look in CMDLINE.TXT )

 .T2N                               [v2.4b5+]
 ~~~~
   The same as the /T2N command line parameter ( look in CMDLINE.TXT )

 .HEADER=compiler-modell-mode         [v2.4b5+]
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Chooses the header, which should be compiled.
   It should be used at special cases only, when you writes a special
   header in HEADERS.H
   Warning: to be compiled succesfully, .PMODE and its companion is
            still necessary !
   Details can be found in the beginning of HEADERS.H .

 .HEADERS=filename       [v3.0a17+]
 ~~~~~~~~~~~~~~~~~
   Chooses the file, in which the headers are stored. The default is
   in the config file or is "HEADERS.H".

 .NOHEADER              [v3.0a17+]
 ~~~~~~~~~
   No header is compiled, even if it has .x86 found.
   This is good, when we would like to write our own header.

 .STACK=nnn
 ~~~~~~~~~~
     Sets the amount of stack. The compiler always generates a _word_ stack
  at the end of the output file. It has two effects:
   - We can be sure, that our program will never writes over the stack
   - at memory commands the stack will always have enough space
  If we don't need stack, write .STACK=0 or .STACK=
  Remark: In some memory modells the no stack option is not avaible


                  controlling the compilation, comments
                  =====================================

 .ASM
 ~~~~
     It turns the compiler into ASSEMBLY mode, so BAP commands cannot be
  used. It makes compiling a bit faster, and some assembly commands, which
  are redefinated by BAP, are usable.

 .BAP ON/OFF  or  .BAP
 ~~~~~~~~~~~      ~~~~
    It turns the compiler to and thro BAP mode. The off state is the same
    as .ASM . In OFF mode BAP commands cannot be used. It makes compiling
    a bit faster, and some assembly commands, which are redefinated by BAP,
    are usable. In ON state it works fine.

 .MEGJ ON/OFF  or  .NOMEGJ/.OKMEGJ
 ~~~~~~~~~~~~      ~~~~~~~~~~~~~~~
     It turns on/off, whether to put comments into the output file.
     Default: OFF

 .BAPLINE ON/OFF or .NOBAPLINE
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     The compiler writes at the end of each line a ";[filename#line]"
  remark. It is useful, because at the assembly compilation the error
  line number and the BAP line can be found from the error line.
  Default: On.
  Warning: In Off state, the error handler of BAPEDIT won't work !

 .SZEPASM
 ~~~~~~~~
     It tabulates the output file, makes structured paragraph, and
  make an empty lin every time a BAP line is left.

 .NICEASM       [v3.0a7+]
 ~~~~~~~~
    It is the same if you write :
    .SZEPASM
    .NOBAPLINE
    .MEGJ ON
    together.

    which means:
    - no referencies ( BAPLINE )
    - to insert remarks
    - tabulated paragraphs

 .COMMENT  and  .ENDCOMMENT
 ~~~~~~~~       ~~~~~~~~~~~
   Sets comment mode on/off.
   The lines between .COMMENT and .ENDCOMMENT are not compiled !

 .OUT text
 ~~~~~~~~~
   Writes remarks on the output under compiling.
   Remark: if it is at the beginning, and in UPCASE, it is nontouched.
   Otherwise spaces are left out. ( if BAPLINE is on, ;[filename#line]
   is printed, too )

 .INCSRC
 ~~~~~~~
   The source is included into the output as comment !

 .ERRORFILE filename
 ~~~~~~~~~~~~~~~~~~~
   It sets the filename for the error messages. It creates the file, and
   writes the error messages in it, too.


                      commands default settings
                      =========================

 .CHAR=new_command
 ~~~~~~~~~~~~~~~~~
   Redefinition of WRITECHR command ( max. 256 chr)

 .FC [ON|OFF]
 ~~~~~~~~~~~~
   FastChar mode ( using Int 29h )  (default=OFF)

 .ANTIDEBUG [ON|OFF]
 ~~~~~~~~~~~~~~~~~~~
   If switched ON, instead of INT 21h INT 3 is compilated, this
   makes debugging a bit harder. The setting of the INT-vectors is
   done by INITANTIDEBUG macro from ANTIDBG.H. (it have to be called manually)

 .CODE=a,b
 ~~~~~~~~~
   codes for en/decryption, it works at CODEINCLUDEDx and DECODE
   only.  a=ADD b=XOR coding. Check DECODE in BASSPASC.TXT .

 .NOINT3
 ~~~~~~~
   INT 3 commands are left from source.     [v3.0a10+]

 .ALIGN [n[,x]]
 ~~~~~~~~~~~~~~
 It is the same as ALIGN in ASM, but :
   - no restriction ( in TASM only ALIGN 2 was allowed )
   - not necessary to use NOPs in waste space

 n = the amount, at which alignment should be made. If left,
     then the value from .ALIGN= is used, default=4
 x = the filler command (1 byte!)
     default:  VAR indirect "DB ?", otherwise "NOP"

     .ALIGN 8,DB 99h
     .ALIGN 8
     .ALIGN=8 // .ALIGN

  Remark: it cannot be used at any memory modells and assemblers :(

 .ALIGN=n
 ~~~~~~~~
 The length of the ".ALIGN" command. (default=4)

 .FLOAT=t             [v3.0a17+]
 ~~~~~~~~
 The type of the generated floating points constants (FPUCONST).
 The t can be an UPCASED letter, D=dword  Q=qword or T=tbyte.
      .FLOAT Q
      FADD 5.26534    ; the number 5.26534 is stored as a QWORD

 .ASMFUNC [ON|OFF]     [v3.0a17+]    (default: OFF)
 ~~~~~~~~~~~~~~~~~
 Turns on/off the using BAPC functions in assembly functions.
 for example:  IMUL EBX(MEMVAR1),LODSD,.EVALI 65536/
 the IMUL is not a BAPC command, in default state it won't touch it, but
 if ASMFUNC is on, the function evaulator is called for every parameter.
 The compiled example:
     MOV EBX,MEMVAR1
     LODSD
     IMUL EBX,EAX,20861
 Warning: It can make some confusesment, if macros and labels has the
          same name!!!
      #STHING=!STHING
      LEA SI,STHING   ; we want the address of STHING process, but the
                      ; evaulator sees a macro as STHING !


                       .LIBs, INDIRECTs
                       ================

 .INDIRECT name[,name2,...]
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
   the indirect called name is inserted into the output file.

 .INDIRECTALL
 ~~~~~~~~~~~~
   - compilation of procs called from .LIBs [v2.3+]
   - compilation of indirects, but the ones starting with 'VAR'
     are put to the end.
   Remark: it is made automatically at the end of the compilation.

 .INDIRECTALL2    [v3.0a2+]
 ~~~~~~~~~~~~~
   The same as .INDIRECTALL, but _ONLY_ indirects are compilated, _NO_ .LIBs.

 .INCLUDELIBS     [v3.0a8+]
 ~~~~~~~~~~~~
   The same as .INDIRECTALL, but _ONLY_ .LIBs are compilated, _NO_ indirects.

 .VARIND=name
 ~~~~~~~~~~~~
   sets the name of the INDIRECT without extension, where variables are
   stored. (default: VAR).
   Useful at TRSs, where the resident and initialization part can be
   separated.

 .TEXTIND=name        [v3.0a19+]
 ~~~~~~~~~~~~
   sets the name of the INDIRECT without extension, where text constants are
   stored. (default: TEXT).

 .CONSTIND=name       [v3.0a19+]
 ~~~~~~~~~~~~
   sets the name of the INDIRECT without extension, where constants are
   stored. (default: CONST).

 .FPUCONSTIND=name    [v3.0a19+]
 ~~~~~~~~~~~~
   sets the name of the INDIRECT without extension, where fpu constants are
   stored. (default: FPUCONST).
   Constants generated because of the FPU are here.

 .LIBDIR=paths
 ~~~~~~~~~~~~~
   more then one path can be given, separated with ',' , specifying
   where to look for .LIBs and .INCs.
   Remark: it overwrites the default (CONFIGFILE)!

 .COMPPROC proc_name
 ~~~~~~~~~~~~~~~~~~~
   to compile the subproc.
       for example it is necessary at an interrupt proc, because it is
       called with SETINT(intnum,procname) instead of CALL

 .DEFPROC proc_name    [-v3.0]
 ~~~~~~~~~~~~~~~~~~
   it is the opposite of .COMPPROC, this means, that we have a proc named
   like this, we don't need more.
   2 ways of using:
     - we don't want a proc to be compilated from a .LIB
       (it has no meaning :))
     - we don't want WARNING at the end of the compilation
       because we definiated the proc not regularly enough
       (PROC: // .... // CALL PROC)
       It is in because of compability ( it had to be used
       in versions 2.x )

 .LABEL labelname           [v2.3-v3.0a3]
 ~~~~~~~~~~~~~~~~
   setting a labelname, it is important only together with .PACKAGE.

 .LIBMODE ON|OFF
 ~~~~~~~~~~~~~~~
    With this you can change to INC/LIB compiling mode, useful if we don't
    know which proc is needed in an INC, or if a LIB has a part, which
    has to be compiled.
     Default: in INCLUDEPROC and in USES [ON], otherwise [OFF]



