
               BAPC 3.0 - Fordtsvezrl utastsok
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Utols frissts:  1999.4.11.            Aktulis verzi: v3.0a20


                     fordt/md/fejlc megadsa
                     ===========================

 .x86 vagy .80x86  (x = 0..6)
 ~~~~      ~~~~~~
     A vlasztott forditohoz/mdhoz fordt fejlcet, a HEADERS.H alapjn.
  Hasznlata nem ktelez (de ajnlott). 2 plda mikor nem kell hasznlni:
    1. .INC file-t ksztesz, nem .ASM-ot
    2. specilis fordthoz/mdhoz fordtasz, ami nincs benne a HEADERS.H-ban
       s nem is akarod belerni. ilyenkor .ASM s .BAP kztt neked kell
       beirnod a megfelel fejlcet (header-t). vagy .NOHEADER utn!
  Megj: nem csak a file elejn, hanem a ksbbiekben is van hatsa, az
        adatok/vltozk elhelyezsnl, a verem ltrehozsnl, illetve a
        file vgn.
  Megj2: tbbszri hasznlatnl (pl. menetkzbeni processzor-tipus
        vltsnl) csak az els generl fejlcet, a tbbit vltozatlanul
        berakja az output fileba.

 .PMODE
 ~~~~~~
     Bekapcsolja a TRAN-fle PMODE v2.x extender hasznlatt, s a
  programot ennek megfelelen fordtja. Belertve a fejlcet is,
  emiatt clszer a .x86 eltt hasznlni!

 .PMW
 ~~~~
     Bekapcsolja a DPMI extender (pl. PMODE/W v1.x) hasznlatt, s
  a programot ennek megfelelen fordtja. Belertve a fejlcet is,
  emiatt clszer a .x86 eltt hasznlni!

 .EXEx
 ~~~~~
     A kimeneti ASM file .EXE-re lesz fordthat.
     Vigyzat: EXE-re val fordtskor ms LIB-eket kell hasznlni,
     pl. a SYSTEM1 helyett SYSEXE, a MEMORY helyett MEMEXE.
     memdiamodellek:
       .EXE1 -  1 szegmenses   CS=DS=SS
       .EXE2 -  2 szegmenses   CS<>DS=SS
       .EXE3 -  3 szegmenses   CS<>DS<>SS
       .EXE  - ugaynaz mint az .EXE2  (kompatibilitsi okokbl)
     Megj: BAPC v3.0alpha8 elttiekben csak a .EXE hasznlhat!

 .NASM
 ~~~~~
   megfelel a /NASM parancssori opcinak (lsd a parancssor lerst!)
   (hatsra a NASM assemblerrel fordithat kdot fordt)

 .T2N                               (v2.4b5-)
 ~~~~
   megfelel a /T2N parancssori opcinak (lsd a parancssor lerst!)
   (hatsra a TASM2NASM konverter szmra fordt kdot)

 .HEADER=fordito-modell-mod         (v2.4b5-)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Kivlasztja a fordtand fejlcet.
   Specilis esetben kell csak hasznlni, mikor te irsz bele speci
   esetre val fejlcet a HEADERS.H-ba.
   Vigyzat: a .PMODE s trsai szksgesek, ez nem helyettesiti!!!
   Rszletesebb lersa a HEADERS.H file elejn tallhat.

 .HEADERS=filenv       (v3.0a17+)
 ~~~~~~~~~~~~~~~~
   Megadja a fejlceket tartalamz file nevt. a default rtk a
   configfileban van definlva, illetve ha ott nem akkor "HEADERS.H"

 .NOHEADER              (v3.0a17+)
 ~~~~~~~~~
   Nem fordt fejlcet amikor procitipus megadst (pl.:  .386) tall
   Ez akkor j, ha sajt magunk akarunk fejlcet, szegmensbelltsokat rni.

 .STACK=nnn
 ~~~~~~~~~~
     A verem mrett lltja be. A fordt mindig generl egy ennek meg-
  felel mret _word_ tpus tmbt a kimeneti llomny vgre. Ennek
  ketts hatsa van:
   - biztosak lehetnk benne, hogy a kzel 64k nagysg programunkat nem
     irja fell a STACK
   - memriafelszabadtsnl (pl. !MEMINIT) a STACK-nek is marad hely
  Ha nincs szksgnk veremre, akkor rjuk be: .STACK=0 vagy csak .STACK=
  Megj.: nhny memriamodellnl nincs lehetsg ennek megadsra!


                  fordts vezrlse, kommentek
                  =============================

 .ASM
 ~~~~
     Hatsra a fordt ASSEMBLY mdba vlt, ilyenkor NEM hasznlhatak
  a BAP nyelv parancsok. gy a fordts valamivel gyorsabb lesz, tovb-
  b azok az ASSEMBLY parancsok is hasznlhatv vlnak, melyeket a BAP
  tdefinilt (pl. az IF). Az automatikus TASM-fejlc kikapcsolsra is
  ezt hasznlhatjuk a program elejn:

   .ASM
   .386
   <specilis fejlc>
   .BAP

 .BAP ON/OFF  vagy  .BAP
 ~~~~~~~~~~~        ~~~~
    Visszakapcsolja a fordtt BAP-zemmdba.  (a .ASM ellentte)

 .MEGJ OFF  vagy  .NOMEGJ
 ~~~~~~~~~        ~~~~~~~
     Hatsra a forrsban tallhat megjegyzsek nem kerlnek t a
  kimeneti llomnyba. (Alapretlmezs: megjegyzsek kikapcsolva!)

 .MEGJ ON  vagy  .OKMEGJ
 ~~~~~~~~        ~~~~~~~
     Engedlyezi a megjegyzsek kirst, hatsra a megjegyzsek
  az ASSEMBLY-forrsba is bekerlnek.

 .BAPLINE ON
 ~~~~~~~~~~~
     A BAP fordt minden sor vgre kir egy ";[filename#line]" meg-
  jegyzst, aminek kvetkeztben ha hiba van s az ASSEMBLY-fordtnl
  be van lltva a hibs sor kirsa, akkor a hibs BAP sor is megta-
  llhat. A parancs ezt kapcsolja be. (Alapretlmezs: bekapcsolva.)
  Vigyzat: ha kikapcsoljuk, a BAPEDIT hibakezelje NEM fog mkdni!!!

 .BAPLINE OFF   vagy  .NOBAPLINE
 ~~~~~~~~~~~~         ~~~~~~~~~~
     A BAPLINE opci kikapcsolsa.

 .SZEPASM
 ~~~~~~~~
     A kimeneti file-t tabullva kszti el, struktrlt bekezdseket
  alakt ki, s j BAP-sornl kihagy egy ASSEMBLY-sort.

 .NICEASM       (v3.0a7+)
 ~~~~~~~~
    .SZEPASM, .NOBAPLINE s .MEGJ ON  egyttes hatsnak felel meg,
    azaz a kimenetben
      - nem lesznek referencik (BAPLINE)
      - meglesznek a megjegyzsek
      - tabullva lesznek a sorok.

 .COMMENT  s  .ENDCOMMENT
 ~~~~~~~~      ~~~~~~~~~~~
   megjegyzs md be/kikapcsolsa.
   A .COMMENT s .ENDCOMMENT sorok kztti sorokat nem fordtja le!
   hasznos nagyobb prg. rszek kiiktatsakor.

 .OUT szveg
 ~~~~~~~~~~~
   Megjegyzsek kirsa a kpernyre fordts kzben.
   Megj.: ha a sor legelejn van, s nagybetkkel hogy .OUT akkor mg az
   STR0_NYIR eltt rja ki (teht nem szedi ki belle a SPACE-kat), klnben
   a parser utn. Az zeneteket a WRITE_BAP_ERROR-al iratja ki, ezrt a sor
   vgn ott a ;[filenv#sorszm] is.

 .INCSRC
 ~~~~~~~
   az output fileba soronknt belefordtja a forrst is komment-knt!
   (fejleszti funkci tesztelshez, de kezdknek is hasznos lehet...)

 .ERRORFILE filenv
 ~~~~~~~~~~~~~~~~~~
   Hibazenetek file-ba rsa! (amiket a WRITE_BAP_ERROR-al irat ki)
   Ekkor ltrehozza a filet s innentl kezdve a hibkat abba is belerja!



                       parancs alapbelltsok
                       =======================

 .CHAR=j_parancs
 ~~~~~~~~~~~~~~~~
   tdefinlja a WRITECHR parancst  (max. 256 chr)
   Hasznos, ha sajt karakter kir rutint szeretnnk hasznlni a
   WRITELN, stb utastsokhoz. (pl. grafikus md)
   Megj.: jabb BAPC verziknl clszerbb makrval tdefinlni
   a WRITECHR-t, lsd az STDBAPC.H-ban.

 .FC [ON|OFF]
 ~~~~~~~~~~~~
   FastChar mode (Int 29h-val r ki)  (default=OFF)

 .UPCASE ON|OFF
 ~~~~~~~~~~~~~~
   Cimkk UPCASE-olt figyelembevtelnek kapcsolsa (LIB-ek miatt kell a
   szubrutinok nevei miatt) (def=ON)
 Megj: .UPCASE OFF md rg nem volt tesztelve, lehet hogy nem mindig megy. :(

 .ANTIDEBUG [ON|OFF]
 ~~~~~~~~~~~~~~~~~~~
   Bekapcsolt llapotban az INT 21h-k helyett INT 3-at fordt, ez 1 kicsit
   megnehezti a debuggolst. Az INT-vektorok lltsrl az ANTIDBG.H-ban
   tallhat INITANTIDEBUG makr gondoskodik. (persze csak ha meghivjuk!)

 .CODE=a,b
 ~~~~~~~~~
   titkostshoz kdok megadsa, csak CODEINCLUDEDx-re s DECODE-re
   van hatssal.  a=ADD b=XOR kdols.

 .NOINT3
 ~~~~~~~
   Kihagyja a programbol az INT 3 utasitasokat.      (v3.0a10-)

 .ALIGN [n[,x]]
 ~~~~~~~~~~~~~~
 Az ASM-beli ALIGN-nak felel meg, azzal a vltozssal hogy
   - nincs korltozva (TASM-ban csak ALIGN 2 volt engedve!)
   - nem felttlenl NOP-okkal tlti ki a helyet

 n = az egysg, aminek a legkzelebbi tbbszrsre el kell tolnia
     ha elhagyjuk ezt a paramtert, akkor a .ALIGN=n -el defint rtk
     lesz felhasznlva, default=4
 x = a kitlt utasts (1 byte-os!)
     default:  VAR indirectben "DB ?", egybknt "NOP"

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

  Megj.: nhny memriamodellnl/assemblernl nem hasznlhat :(
  (ezeknl meg kne nzni hogy lehet megvalstani, akkor berakom)

 .ALIGN=n
 ~~~~~~~~
 A sima ".ALIGN" utasits hossznak megadsa. default=4

 .FLOAT=t             (v3.0a17+)
 ~~~~~~~~
 A generlt lebegpontos konstansok (FPUCONST) default tpusnak megadsa.
 A t tpus 1 nagy bet, D=dword  Q=qword  vagy  T=tbyte lehet
 pl:  .FLOAT Q
      FADD 5.26534    ; az 5.26534 szm QWORD-n lesz trolva

 .ASMFUNC [ON|OFF]     (v3.0a17+)    (default: OFF)
 ~~~~~~~~~~~~~~~~~
 Be/kikapcsolja a BAPC fggvnyek hasznlatt assembly utastsokban.
 pl.:  IMUL EBX(MEMVAR1),LODSD,.EVALI 65536/
 mivel az IMUL nem BAPC utasts, alaphelyzetben nem nylna hozz, de ha
 ez az opci be van kapcsolva, akkor az utasts paramtereire egyenknt
 meghvja a fggvny-kirtkelt.
 A fenti plda lefordtva:
     MOV EBX,MEMVAR1
     LODSD
     IMUL EBX,EAX,20861
 Vigyzat: azonos nev makrk s cimeknevek esn zavart okozhat!!!
    pl:
      #VALAMI=!VALAMI
      LEA SI,VALAMI   ; itt a VALAMI nev rutin cmt szeretnnk megkapni
                      ; de a fggvny kirtkel makrnak nzi a "VALAMI"-t!


                       LIB-ek, INDIRECT-ek
                       ===================

 .INDIRECT nv[,nv2,...]
 ~~~~~~~~~~~~~~~~~~~~~~~~
   a "nv" nev indirect-et (blokkot) illetszi az output fileba.

 .INDIRECTALL
 ~~~~~~~~~~~~
   - befordtja a .LIB-ekbl a hvott rutinokat   (csak kb. v2.3 ta)
   - befordtja az sszes indirect-et, de a VAR nevt utoljra.
   Megj: automatikusan is vgrehajtdik a fordts vgn.

 .INDIRECTALL2    (3.0a2+)
 ~~~~~~~~~~~~~
   Ugyanaz mint a .INDIRECTALL, de a LIB-eket NEM forditja be, csak az
   indirect-eket.

 .INCLUDELIBS     (3.0a8+)
 ~~~~~~~~~~~~
   Ugyanaz mint a .INDIRECTALL, de CSAK a LIB-eket forditja be, az
   indirect-eket NEM.

 .VARIND=nv
 ~~~~~~~~~~~
   megadja annak az INDIRECT-nek a nevt, ahov a vltozk kerlnek.
   (default: VAR)
   Hasznos pld. rezidens programok rsnl, elklnthetjk a TSR
   s inicializcis rszek vltozit.

 .CONSTIND=nv   .TEXTIND=nv  s  .FPUCONSTIND=nv        (3.0a19+)
 ~~~~~~~~~~~~~   ~~~~~~~~~~~~      ~~~~~~~~~~~~~~~~
   megadja annak az INDIRECT-nek a nevt, ahov a vltozk kerlnek.
   az FPUCONST-ba kerlnek az FPU miatt generlt konstansok. (pl. FLD 5.3)

 .LIBDIR=pathok
 ~~~~~~~~~~~~~~
   megadhat egy vagy tbb (vesszvel elvlasztva) elrsi t,
   ahol a .LIB-eket s .INC-eket keresni fogja.
   Megjegyzs: fellrja a defaultot (CONFIGFILE)!

 .COMPPROC rutin_neve
 ~~~~~~~~~~~~~~~~~~~~
   szubrutin leforditasanak kerese.
   pl. egy LIB-ben lev mexak rutinnl kell, mert azt nem CALL-al hivjuk
       hanem SETINT(intszam,rutinneve)-el.

 .DEFPROC rutin_neve
 ~~~~~~~~~~~~~~~~~~~
   a .COMPPROC ellentetje, azt jelezzuk ezzel hogy ilyen rutin mr van,
   nem kell belle tbb.
   2 felhasznlsi terlete:
     - nem akarjuk hogy a rutin a .LIB-bl lefordtdjon
       (bar ennek nem igazan latom ertelmet :))
     - nem akarunk WARNING-ot a forditas vegen, mert nem szabalyosan
       definaltuk a rutint  (pl: RUTIN: // .... // CALL RUTIN)
       Ennek csak 2.x verziokban volt ertelme, a 3.x elfogadja
       barhogy definaljuk (cimkekent, valtozokent is)

 .LABEL cimkenv            csak a v2.3-v3.0a3 verzikban!
 ~~~~~~~~~~~~~~~
   cimkenv megadsa, csak a .PACKAGE-vel egytt van jelentsge.

 .LIBMODE ON|OFF
 ~~~~~~~~~~~~~~~
    Ezzel tkapcsolhatunk INC/LIB fordtsi mdra, hasznos pl. ha egy INC-ben
    nem tudjuk melyik rutinra lesz szksg, vagy ha 1 LIB-ben van olyan rsz,
    amit mindenkpp le kell fordtani.
     Default: INCLUDEPROC-nl s USES-nl [ON], egybknt [OFF]

 .PACKAGE...
 ~~~~~~~~~~~
    Cimkk s makrk hatskrnek megadsa. (lsd PACKAGE.TXT)


Elrhetsgi szintek:
=====================
  Eredetileg minden a 0-s szinten volt kirtkelve, de a v3.0a19 verzitl
  kezdve sok forditasvezerlo utasitas atkerult a 0-as szintrol a
  2-esre, igy mostantol makroban is hasznalhato.

  Lehet // elotte, de utana NEM!  (mivel egesz soros utasitaskent
  vannak kiertekelve, pl a .CHAR= miatt)
  -> csak tobbsoros makroban lehet hasznalni

  Ezek kerultek at:
     .ASM s .BAP         ; ezek megmaradtak a 0. szinten is
     .VARIND=nev
     .LABEL nev           ; ez mr not supported, csak egy warningot ir ki
     .PACKAGE [OFF|nev]
     .ASMFUNC [ON|OFF]
     .UPCASE [ON|OFF]
     .LIBMODE [ON|OFF]
     .FLOAT=tipus
     .FC [ON|OFF]
     .CHAR=utasitasok
     .ANTIDEBUG [ON|OFF]
     .NOINT3
     .CODE=a,b

Kivtel:  .OUT szveg
  Eddig csak akkor mkdtt az .OUT ha a sor elejn volt.
  JAVITVA -> mostmr brhol lehet, de ha nem a sor elejn van, akkor
  csak a kvetkez //-ig rja ki. (a // utnit pedig lefordtja...)







