
                   BAPC 3.0 - A fordt felptse       by A'rpi
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Utolso frissites:  1999.5.6.   aktualis BAPC verzio: v3.0pre2  build #0586

Az itt lertak ismerete nem felttlenl szksges a programozshoz,
de sokat segthat a fordt mkdsnek (s a dokumentci:)) megrtsben.

Egy beolvasott programsor fordtsnak lpsei:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

0. szint: COMPILE_FILE                                       (COMPFIL2.INC)
  - !READLN  ->SOR   (beolvass)                               (READLN.INC)
  - ha BPO-ra fordit -> sor kirtkels/kirs GOTO 0.
  - .OUT kirtkelse ha van
  - megjegyzsek levgsa  (; utnrl, majd /* */)
  - !STR0_NYIR - felesleges szkzk, TAB-ok eltvoltsa   (STR0_BAPC.LIB)
  - !FALSEMOD - nem teljesl felttel tugrsa              (FALSEMOD.INC)
  - .COMMENT s .ENDCOMMENT kirtkelse ha van
1. szint:  (a string mr nem tartalmaz megjegyzseket)
  - tbbsoros makrdef.    (#makrnv  ...  ENDM)
  - .BAP [ON|OFF] s .ASM
  - cputype: .[80][0..6]86  (pl. .386) -> header fordtsa
  - bels parancsok: .LIBDIR, .ERRORFILE, .OUT, .INCSRC, .BAPLINE, .NASM,
    .T2N, .HEADER, .HEADERS, .NOHEADER, .ASMOPTIONS, .LINKOPTIONS, .EXE,
    .PMODE, .PMW, .STACK, .MEGJ, .NOBAPLINE, .SZEPASM, .NICEASM, .NOMEGJ,
  - include:  .INCLUDELIBS, .INDIRECTALL, .INDIRECT, INCLUDEPROC, INCLUDE
  - indirect-vlts: { s } levgsa    (OPENF.INC)
2. szint: X_COMP_LINE (BAPC1M29.BPE)
  - ha /TRACE akkor a sor kirsa a kpernyre
  - !STR0_NYIR    SOR->^SOR
  - FALSEMOD - nem teljesl felttel tugrsa               (FALSEMOD.INC)
  - szegmenscmzsek korriglsa (.MASM)    [xS:valami] -> xS:[valami]
  - !STR0_UPCASE  ^SOR->^USOR
  - bels parancsok kirtkelse   (CONTROLL.INC)
  - case kezelse: .ENDCASE, .END, ELSE     (elgazsos felttel vge)
  - egsz soros (sor vgig tart) utastsok:
    - @: kezelse                    (relatv loklis cimke def.)
    - xS: kezelse                   (szegmens prefixek)
    - VAR:, CONST:, TEXT: kezelse   (egysoros indirect-vlts)
    - cimkk levgsa, WITH, ha proc akkor megnzi le kell-e fordtani (.LIB)
    - REP(), WITH x [DO] cmd, PUSH()
    - makr definicik kezelse  (#makrnv...)
    - IF..THENCMD, IF..DO, WHILE..DO[CMD], REPEAT.., ELSE..
    - LOOP(), FOR
  - a // keresse, els szakasz kivgsa s kirtkelse -> 3. szint
3. szint:     (a string mr nem tartalmaz //-t)
  - cimkk s rvdtsek fordtsa  (@ ~ xPT -> stb.)  ua. mint a CJ.INC
    - ^, ~=valami, @n, 
  - egyszer utastsok:  (sor elejn)
    - .OUT szveg
    - WITH cimke
    - cimke PROC [NEAR]
    - #()
    - IF..THEN, WHILE..DO
    - USES.., cimke ENDP
    - RETx mint utasts
  - rvidtsek, cimkk:  (brhol lehet a sorban)
    - STROFS, OFSSTR, ->''
    - xPT[], xPT [], OFS, OFFSET{}
    - RETx mint cimke
    - SH->SHOFT
    - @n (megint!)
4. szint:  csak egyszer utastsok: (sor elejn van, s csak a //-ig tart)
  - egyszer utastsok:
    - ENDIF
    - CASE x OF
    - xS=y  (szegmensregiszter rtkads)
    - SETOUT, !rutin
    - .COMPPROC, .DEFPROC, .ALIGN
    - FILE*                            [FILEMUV2.INC]
    - WRITE, WRITELN, UNTIL felt
    - PUSH, POP                        [PUSHPOP.INC]
  - makr keresse, a tartalmra soronknt meghvdik az X_COMP_LINE (2.szint)
  - [LDDM.INC]        LDD,LDDM,SDD,SDDM,RMOV,SMOV
  - [CMD1.INC]        WAITKEY, UPCASE xx, DOSEXIT, ...
    - [VARCONST.INC]  VAR, CONST
  - [C_MATH1.INC]     --/++,+=,>>,+',1',+%1,=>
  - FPU=..., MIEZ ...   (csak a teszt verzikban van!)
  - [CODE]INCLUDEDx binfile
  - cimke=rtk, cimke EQU rtk
  - [ASMFUNC]         BAPC fggvlny ASM utasts paramtereknt
ha nem sorvge akkor GOTO 2. szint, klnben GOTO 0. szint



