scene.org File Archive

File download

<root>­/­mirrors­/­flerp­/­.s­/­groups.hun­/­ESP-team­/­bapc/tudja3.txt

File size:
56 597 bytes (55.27K)
File date:
2013-11-26 23:08:44
Download count:
all-time: 123

Preview

           BAssPasC Compiler version 3.x  -  VERSION HISTORY
           =================================================

BAPC v3.0 à1      2 menetes forditas
~~~~~~~~~~~~
- nem tud semmit :)  azon kivul hogy 2 menetben fordit
- a .BPO-ra forditas nem lett tesztelve!!!!
- a .PACKAGE sem lett tesztelve!!!!
- nem keres BASSPASC.REG-et

BAPC v3.0 à2      t”m‚nytelen bugfix...
~~~~~~~~~~~~
- BUGFIX: minden INCLUDE-t INDLUDEPROC-k‚nt ford¡tott, mert v‚letlen
  AH-ba raktam a LIB_MODE-t ‚s nem AL-be...  (az .OPEN ki‚rt‚kel‚skor)

- ha regisztr lva van, akkor kiirja, de ha nincs akkor SE szamolgat
  vissza meg sipol

Ford¡t sos tesztekn‚l kiderlt hib k:

- ESP\V19_2\SFXRUT:
     probl‚ma: kiir egy "Section CONST not found" hibat, ami
       hulyeseg, azert irja ki mert volt egy .INDIRECTALL es utana
       meghivodott a COMPILE_HEADER "CONST"-ra az automatikus INDIRECTALL
       miatt.
     megold s:
       £j v ltoz¢: COMPFILE_LEVEL.  0 ha k¡vl vagyunk a f“programon
       (teh t .LIB, .IND eset‚n) kl”nben pedig az INCLUDE m‚lys‚ge.
       Csak akkor ford¡t HEADERS(..VAR)-t ha COMPFILE_LEVEL=0
       teh t a f“prgben lev“ .INDIRECTALL mindig a ..CODE tartom nyba
       fog kerlni. (v2.4b4-ig is igy volt)  (a TSR progik irasa miatt)

- PATH kiirasa BAPLINE-ben -> jav¡tva, ha LIB_MODE=1 akkor nem ¡r PATH-ot.

- JAVITVA: BAPLINE sorsz moz s nem ok‚  (az .OPEN-ek miatt elcs£szott)

- PilaSoft's SB16 digizoben XMS makro miatt XMS struktura rosszul fordult le...
  (a makr¢def. k‚s“bb van, de 2 menetn‚l ez nem sz mit...)
    "megold s":  #XMS=XMS %1 %2  makr¢ a STRUCT el‚.
    jobb lenne valami makr¢ undef funkci¢.
       #makr¢n‚v=
    vagy:
       #-makr¢n‚v
    tal n:
       -#makr¢n‚v
    esetleg:
       .UNDEF makr¢n‚v

- .INDIRECTALL probl‚m ja:     (felmerlt: Pila SB16 digiz“j‚n‚l)
   pass1: - berakja az .INDIRECTALL sort
          - berakja a .LIB-eket (.OPEN-.CLOSE)
          - berakja az .IND-eket (felesleges...)
   pass2: - tal l .INDIRECTALL-t -> berakja az .IND-eket
          - ut na j”nnek a LIB-ek. (.OPEN...)
   k”vetkeztet‚s: .LIB-ek ‚s .IND-ek sorrendje megfordul!!!!  ;-(
 megold s:
   pass1: - berakja az .INDIRECTALL sort  (felesleges, de akkor m‚g nem tudja)
          - berakja a .LIB-eket
          - nem rak be .IND-et, mert felesleges...
          - berak egy .INDIRECTALL2 sort !!!
   pass2: - tal l .INDIRECTALL-t, de nem foglalkozik vele!
          - j”nnek a .LIB-ek, ok.
          - tal l .INDIRECTALL2-t, hat s ra berakja az .IND-eket
 ad¢dott el“ny: a forr sba ¡rt .INDIRECTALL2 azt jelenti, hogy
                csak az .IND-eket rakja bele, a .LIB-eket ne.

- STACKSIZE probl‚m ja:   ( HEADERS() miatt)
    "STACK DW 0 DUP(?)" sort csin lt, aminek a TASM nem ”rlt t£lzottan...
    megold s: IF STACKSIZE_STR=0 OR STACKSIZE_STR='0' THEN ^SKIP

BAPC v3.0 à3      LABELS.INC
~~~~~~~~~~~~
- LABELS.INC/SET_LABEL-ben hiba: nem a string ut n rakta az EQU ‚rt‚k‚t,
  hanem a k”vetkez“ pointere hely‚re (DI+=LENGTH+4 hi nyzott)

- SETPROC.INC mexuntetve.
  el‚g szarul volt m r v2.4b5 ¢ta a mem¢riakihaszn l s:
     - proc_tabl  (SETPROC.INC)
     - package_tabl
     - labels_tabl
  SETPROC fonosabb rutinjai (pl. LISTPROC)  t¡rva hogy SET_LABEL/GET_LABEL-t
  haszn lj k. £j rutin: SETPROCDEF.
  El“ny”k: - cimkek‚nt defin lt (teh t nem :: csak :) rutinn‚vet is elfogadja
              (pl: CALL RUTIN .....  RUTIN: ... RET)
           - gyorsabb (HASH miatt)
  Hiba m‚g:
           - kisbet–-nagybet– meg van kl”nb”ztetve
              -> JAVITVA! ha UPCASE_MOD=1 akkor SEARCH_LABEL el“tt !STR0_UPC

- FILENAME r‚sz  tdolgozva  (COMPFIL2,ALRUTIN1,INCLFILE,BAPC*.BPE)
  eddig volt:
     FILENAME_OFS ami SOR[]-ba mutatott -> WRITE_BAP_ERROR hlylt...
     FILENAME_WITH_PATH: csak akkor haszn lta ha INCLUDE-olt m s PATH-b¢l
  mostant¢l:
     FILENAME_OFS likvid lva :)
     maradt FILENAME_WITH_PATH, ebben van az ‚pp ford¡tott file neve m solva
  MAKE_BAPLINESTR rutin: ez csin lja a BAPLINE_STR-t, ezt hivja
  a COMPFIL2 es az INCLFILE is.

BAPC v3.0 à4      .PACKAGE & bugfixek
~~~~~~~~~~~~
- BRUTAL CRASH BUG JAVŒTVA!!!!!!!!!!!!!
  Ugyanis az ALIGN_CMD v ltoz¢nak az OPENF adott ‚rt‚ket att¢l fgg“en
  hogy a VAR.IND-ben vagyunk-e. PASS1 eset‚n viszont nem h¡v¢dik meg az
  OPENF, de a ".ALIGN" ki‚rt‚kel“dik... ‚s ha a string>SOR_MAXSIZE akkor fagyi.
  (2 napig tartott mig rajottem... mert ofcoz debuggerrel nem fagyott)

- .PACKAGE tesztel‚se, nagyj b¢l m–k”dik, kisebb hib kkal:
    lok lis cimk‚ket nem nagyon szerette, mivel a ^-t figyelmen kivul
    hagyta, ‚s ha m sutt is volt ilyen nev– lok l. cimke akkor
    keverte...

- .PACKAGE  tdolgozva:  a PACKAGE_CIMKEKERESO-t atraktam X_COMP_LINE
    elej‚r“l a '^' kiertekelo utan, es a CJ.INC-be is.
    Uj(?) hiba:
      - a rutinon beluli lokalis cimkekre a rutinon kivulrol (de ugyanabban
        a package-ben) valo hivatkozasokat nem ismerte fel.
        (pl. FELTETELES_SIGN eset‚n)
        => javitasa: PACKAGE_EXPORTLOCALS valtozo, ha 1 akkor a
           belso cimkeket is berakja PACKAGE_TABL-ba.
           hibaja: a PACKAGE_SETLABEL nem ellenorzi a tobbszor
           elofordulo cimkeket, es igy eleg hamar betelik a 32k memoria.
           => javitasa: lehetetlen.

- BUGFIX:  PROC:: ‚s PROC:. ki‚rt‚kel“n‚l az STR0_LENGTH2 megh¡v sa
  miatt el ll¡t¢dott AL, ‚s ezgyb“l a PROC:.-ot is PROC::-nak vette.

- LABELS.INC supportolja a PACKAGE-t
  +1 byte cimk‚nk‚nt, amely a l‚trehoz sakor aktu lis PACKAGE sz ma
    (ACTUAL_PACKAGE_NUM)
  Keres‚sn‚l SH-ban package sz ma, ha nem tal l olyat ami
    abban lenne, akkor keresi a 0- s (MAIN) package-ben lev“t.

- MAKROK: makrodef-n‚l  tirtam hogy ne ^USOR-t hasznalja, hanem hivja
  meg COMP_CIMKE2 utan STR0_IUPC2-t  (az STR0_IUPC2 uj rutin, abban kulonbozik
  a simatol, hogy helyben vegzi el az UPC-t, es elmenti SI-t es DI-t)
  (package-ben levo lokalis makrok miatt kellett (pl: #^DEBUG=...)
  
- PACKAGE1.INC-ben bugfix: a --SI -t atraktam elobbre, mert aa 2. idezojelen 2x
  ment at, es emiatt a '*** PASS-1 ***'-et atirta '*** Package1__PASS-1 ***'-re

=> YEAH! leforditja sajat magat ugy hogy az egesz benne van egy Package-ben!
  - egy hiba van csak, ami nem is hiba:
    SOR_MAXSIZE a Package-n belul volt definalva, viszont STR0_BAPC.LIB
    is hasznalta (volna)...    megoldas: kiraktam a package-n kivulre a def-et

- Valami nem 100% okes a PACKEGE_CIMKEKERESO-ben, beleraktam egy vedelmet,
  ha "internal error???" uzenetet ir ki, akkor irj nekem!
  Egyelore nalam nem jelentkezik a hiba semelyik forrasnal.
  Egyebkent nem veszes, csak az fordult neha elo, hogy lokalis
  cimkevel hivodott meg a rutin, ami ezugybol hulyeseget csinalhatott
  (pl '^CIMKE' ami lokalis, de a ^ kierteklo utan nem szabadna ilyen eloforduljon)

- kicsit javitottam a forditas vegen levo kiirasokon, a Main lines-t
  kiszedtem mert mindig hulyeseget mutatott (nemtommiert) es beraktam
  egy LABELS_DB-t ami a jegyzett cimkek szama.
  Az Output_lines se tokeletes, mert ha jol latom a HEADERS-t
  nem szamolja bele.

- uj kapcsolo a forditonak:  /LABELS  -> kilistazza a cimkeket a vegen
  ('tipus package cimken‚v=‚rt‚k' formatumban)

- PACKAGE.INC-bol kiszedtem ami foloslegesse valt (LABELS.INC miatt)
- BERAKTAM egy automatikus '.PACKAGE OFF'-ot az USES kiertekeles el‚.

BAPC v3.0 à5      WRITE_CMP2
~~~~~~~~~~~~
- Atirtam teljesen a WRITE_CMP-t (es atneveztem WRITE_CMP2-nek)
  bemenetkent kapja a cimke offsetjet DI-ben, es a felt‚tel _k¢dj t_
  DL-ben, valamint DH-ban hogy a hiv¢ rutin t mogatja-e az IF-EQU-t.
  R‚szletesebben l sd IF2B.INC-ben...
  Uj rutin m‚g a MIEZ::, ami kb. megmondja a stringr“l hogy micsoda:
    Be: SI->str    Ki:  DL=  0=imm(EAX=value) 1=reg(EAX=hossz) 2=mem 3=???
    (m‚g nincs k‚sz, csak a 0-t ‚s a regisztereket ismeri fel)
  El“ny”k:
    - IF-EQU t mogat sa
    - egy csom¢ szart ki lehetett t”r”lni IF2B-ben, mivel a WRITE_CMP2
      megoldja (pl.  llando FELTETELES_SIGN figyel‚s)
    - jobban optimaliz l:
      - pl. IF AH<0 THEN... -re kiirja hogy hlyes‚g (always FALSE)
        (ha el“jelesen akarjuk, akkor ugyeb r IFS AH<0 THEN... kell!!!)
      - pl. IF AH>0-n l is OR-t ford¡t (nem CMP-t)
  ^REGN0_* v ltoz¢k is elt vol¡tva.

- XGETNUM.INC modositva, hogy ne kelljen STR0_UPC elotte

- MIEZ:: befejezve, tudja:
      - "0"  (az‚rt kl”n kezelve, mert ez a leggyakoribb)
      - regiszterek (!WHAT_REG_UPC)       -> TYPE=1
      - DEC/HEX sz mok (!XGETNUM)         -> TYPE=0
      - cimk‚k (LABELS.INC/!GET_LABEL)
         - DEF/EQUW/EQUD                  -> TYPE=0
         - DATAx  (DB/DW/DD/DQ/DT/STRUC)  -> TYPE=2
      - minden egy‚b -> TYPE=-1
  ====> m–k”dik az IF-EQU!!!!!!!!
  megjegyz‚s: az IF-EQU-n l is figyelembe veszi a SIGN flag-et, teh t
  az IF -3<5 THEN  FALSE-t fog adni, mert a (-3)-at unsigned-re konvert lja!!!
  ha el“jelesen kell, akkor IFS -3<5 THEN -> ez m r TRUE lesz.

- WRITE_CMP-be:
  ha olyat tal l hogy P1_TYPE=imm akkor megcser‚li a 2 param‚tert,
  ‚s megford¡tja a m–veleti jelet is.  (pl.: IF 5>AX THEN AX_KISEBB_MINT_5)
  (mivel CMP 5,AX nem leford¡that¢, csak a CMP AX,5)

- IF2B.INC-be:   IN]a..b[ ‚s t rsai
  (nyitott ‚s z rt intervallumok kezel‚se)
  Ha ellenkez“ ir nyban van a [ vagy ] mint lenne IN[] eset‚n, akkor abba
  az ir nyba nincs megengedve az egyenl“s‚g. (DL&=NOT 4)
  pl:        AX IN[3..5]  ===   3<=AX<=5
             AX IN[3..5[  ===   3<=AX<5
             AX IN]3..5]  ===   3<AX<=5
             AX IN]3..5[  ===   3<AX<5

- Kis m¢dositas a felt‚tel-k¢dokban:
     0=JS
     7=JNS   (eddig UNUSED volt)
  IF xxx:S THEN...  t¡rva hogy WRITE_CMP-t haszn ljon, valamint
  IF xxx:NS THEN... is m–k”dik mostant¢l.   (m‚g IF-EQU-val is)

- FUNCTION.INC-be: bels“ v ltoz¢k ‚s utas¡t sok:
     .UPC   = az UPCASE_MODE bels“ v ltoz¢ ‚rt‚ke  (1 ha nem CASE SENSITIVE)
     .CPU   = a CPU tipusa amire ford¡t (pl.: 386)
     .TYPE cimke  = a "cimke" t¡pus val t‚r vissza (LABELS.INC alapj n)

              0 = nem defin lt (vagy t”r”lt)
              1 = EQU (‚rt‚k‚t a BAPC nem tudta kisz molni)  pl: CIMKE EQU 3*7
              2 = EQU WORD      pl: CIMKE EQU 12345
              3 = EQU DWORD     pl: CIMKE EQU 123456789

              8 = DATA
              9 = DB
             10 = DW
             11 = DD
             12 = DQ
             13 = DT
             15 = STRUC

             16 = LABEL         pl:  CIMKE:
             17 = CALL (*)      pl:  CALL CIMKE  (csak ha nincs CIMKE nev– proc
                                                  vagy cimke sehol)
             18 = PROC          pl:  CIMKE::  vagy CIMKE:.  vagy CIMKE PROC
         !!! ez m‚g nem v‚gleges, esetleg megv ltozhat hamarosan!
         (ez‚rt c‚lszer– a LABELTYP.H-val haszn lni!!!)
     .DEF cimke  = 1 ha a LABELS.INC szerint l‚tezik a "cimke", kl”nben 0
                    ( .DEF  ===  .TYPE>0 )
     .VAL cimke  = a "cimke" LABELS.INC szerinti ‚rt‚ke (0 ha nem l‚tezik)
     .REG xyz    = 0 ha "xyz" nem regiszter, kl”nben a reg. m‚rete BIT-ben!
     .NUM xyz    = 1 ha "xyz" sz m (pl: "12345"), kl”nben 0
     .IMM xyz    = 1 ha "xyz" immediate (sz m vagy EQU-s konstans)
     .MEM xyz    = 1 ha "xyz" DB/DW/DD/DQ/DT/STRUC tipusu (LABELS.INC szerint)
                    ( .MEM  ===  .TYPE IN[8..15] )
  Ezekre fggv‚nyk‚nt hivatkozhatunk, de ez ltal IF-ben is felhaszn lhat¢,
  ¡gy lehet ford¡t skor ki‚rt‚kel“d“ IF-et (IF-EQU) is csin lni vele.
   Pl.:   IF .CPU<586 THEN
            .OUT *** This library requires Pentium! ***
          ENDIF
      Ez ha pl. 386-ra ford¡tunk, akkor __ford¡t skor__ kiirja a fenti
      zenetet a k‚perny“re.
   Pl.: #NULL=IF .REG %1 THEN//XOR %1,%1//ELSE %1&=0//ENDIF

- WARNING-ol ha nincs semmi a THENCMD ut n

- FLAG felt‚tel igy is megadhat¢:
  Pl.: IF FLAG <= THEN...   (ez ua. mint az IF FLAG BE THEN...)
  Pl.: CMP EAX,EBX//IF FLAG <= THEN  ugyanaz, mint  IF EAX<=EBX THEN
  mire jo? optimalizalasra, amikor valahol volt mar egy CMP,
  akkor annak az eredmenyet felhasznalhassam:
  Pl:  AX?=5
       AX:=10  ; a FLAG-ek nem v ltoznak!
       IF FLAG < THENCMD !KISEBB//=>^NEXT     ; IF AX<5 THENCMD !KISEBB
       IF FLAG > THENCMD !NAGYOBB//=>^NEXT    ; IF AX>5 THENCMD !NAGYOBB
       !EGYENLO
       ^NEXT:

BAPC v3.0 à6      IF-EQU
~~~~~~~~~~~~
- IF-THENCMD-s IF-EQU is mukodik, pl:
    IF 3<5 THENCMD IGAZ//ELSE HAMIS
  egy jobb p‚lda:
    IF .DEF HIBAKEZELES AND (FLAG C OR AX<CX) THENCMD WRITELN'FILE ERROR!'
    ez csak akkor fordit IF FLAG C OR AX<CX THENCMD WRITELN'FILE ERROR!'
    sort, ha van defin lva HIBAKEZELES nevu cimke...

- Volt egy "kis" bug az X_FELTETELES::-ben, m‚gpedig hogy eggyel t”bb
  neg l s volt a kellet‚n‚l...
  Nem nagy dolog, csak 5 oraig tartott mig rajottem :(
  (a DeMorgan-os NEG-optimalizalasom bekavart egy kicsit)

  Le kell tesztelni alaposan az eg‚sz IF-EQU-t (forditaskor ki‚rt‚kel“d“
  felt‚telek)!
  pl. beirni ilyet hogy:
    IF 0 OR (0 AND (1 OR 0) OR 0 AND 1) AND (1 OR 0) THEN
      .OUT IGAZ!
    ELSE
      .OUT HAMIS!
    ENDIF
  ‚s megn‚zni hogy j¢l ‚rt‚keli-e ki.

BAPC v3.0 à7      IF-EQU bugfix, MACRO param‚terek
~~~~~~~~~~~~
- Macro param‚terek:
  -  lehet 9-n‚l t”bb param‚ter is, pl:
       #XYZ=WRITELN'A 13. param‚ter: %(13) '
     teh t a 9-n‚l nagyobb sz mokat ()-be kell tenni!
     (kl”nben csak az els“ sz mjegyet dolgozza fel)
  - param‚terek balra g”rget‚se:   %<
    az eddigi %1-et t”rli, hely‚re a r‚gi %2 kerl, a %2 hely‚re a %3...
  - ”sszes param‚ter:  %*
    pl: #XYZ=WRITELN'A makro ”sszes param‚tere: %*'
    vagy pl:
    #XYZ=X1(%*)//X2(%*)//X3(%*)
*** K‚ne m‚g: param‚terek  t¡r sa, jobbra g”rget‚s...

- —j bels“ utas¡t s FUNCTION-ba:
    ".NB xyz" -> 1 ha van xyz, 0 ha nincsen (csak ".NB" van)
  mire j¢?  Makr¢kba megn‚zni hogy van-e megadva param‚ter
  pl: #XYZ=IF .NB %3 THENCMD <van 3. param‚ter megadva>
  pl: #WRITELN2=IF .NB %1 THENCMD WRITELN'%1'//ELSE WRITELN
  Megj.:  NB=Non-Blank=nem-semmi :) (TASM utan)

- IF-EQU megint bugfixve, a THENCMD az el“bbi (à6) NEG-es bugfix
  miatt nem m–k”d”tt j¢l...

- m sik IF-EQU bugfix: az ENDIF-et XCOMPLINE-al ford¡totta, ¡gy ha
  FALSEMOD-ban vagyunk, akkor nem kapcsol¢dik ki. mo: FALSEMOD:=0
  ("IF 0 THENCMD XYZ" ut n FALSEMOD-ban felejt“d”tt a ford¡t¢)

- —j ford. vez‚rl“ opci¢k:
     .NICEASM  =  .SZEPASM+.MEGJ ON+.NOBAPLINE
     .INCSRC   =  kommentk‚nt berakja a .BP3 forr s sorait is az .ASM-be
                  (hibakeres‚shez, ASM-BAP ”sszehasonl¡t shoz)

- !!! a kiadott verzioban bugos a hibakezeles !!!

BAPC v3.0 à8      ERRORS, PASS_DB=1, .INCLUDELIBS
~~~~~~~~~~~~
- Hibakezeles ujrairva. (ERRORS.H es ERRORS.INC)
  hibatipusok:
    ^UNDEF=0         - nem definalt  (fenntartva torolt hibauzeneteknek)
    ^MSG=1           - csak uzenet  (pl. Processing "xtsyus.inc")
                       !! egyelore az uzenetek meg sima WRITELN-al vannak
                       kiiratva, nem ezzel !!
    ^WARN=2          - WARNING=figyelmeztetes.
    ^ERROR=3         - ERROR=hiba. nagy valoszinuseggel hibas .ASM keletkezik.
    ^INTERNAL=4      - A forditoprg hibaja!!! belekerult par ellenorzes
                       amivel sajat magat teszteli neha, igy elkerulve par
                       lefagyast illetve hibat. Ha ilyet ir ki, akkor
                       _FELTETLENUL_ irj nekem E-Mailt, es tedd el azt a
                       forrast (illetve csatold a levelhez ha lehet)
                       ami a hibat elohozta!!!!!
                       Ezek az ellenorzesek foleg az uj funkcioknal vannak,
                       ezzel probalom felderiteni azokat a specialis
                       eseteket, amivel esetleg nem szamoltunk a tervezesnel.
                       Mivel ezek az ellenorzesek altalaban a lehetetlen
                       esemenyek teljesuleset figyelik, igy eleg valoszinutlen
                       hogy ilyen hiba elojon, de minden elkepzelheto...
                       Pl: van egy kiertekelo rutin ami akkor hivodik meg,
                       ha van a parameterben kettospont, de ha a rutin nem
                       talalja sehol a :-ot akkor valami gaz van... :)
    ^FATAL=5         - olyan hiba, ami miatt a fordito nem tud tovabb
                       forditani, pl. file I/O hiba, vagy keves a memoria.

- A 2-menetes forditas opcionalis lett!!!!!!!!
     oka: altalaban eleg egy menet is, es igy gyorsabb.
  Es a DEFAULT = 1 menet!!!!!!!
  parancssori opciok:
      /1  - 1 menetben fordit (csak PASS2-t hajtja vegre)     <- default!
      /2  - 2 menetben fordit (PASS1 es PASS2 is)

- Lehetoseg a HEADERS.H kikerulesere:
   .ASM - .BAP koze ird be amit kell... (header-t, segmens kezdet/veget stb)
   .INDIRECT TEXT,CONST -al kerheted a konstansok forditasat
   .INDIRECT VAR        -al kerheted a valtozok forditasat
   .INCLUDELIBS         -el kerheted a hasznalt LIB-funkciok forditasat  [NEW!]
      (vagy INCLUDEPROC lib1,lib2... -el is, az elobbi az USES-ra vonatkozik)
   .INDIRECTALL         -al a fenti 3 egyuttesen, LIB,CONST,VAR sorrendben.
  Megj: a LIB-ek tartalmazhatnak konstanst, valtozot, tehat a LIB-ek
        forditasanak elobb kell lenni, mint a tobbinek!!!

- WRITE_CMP-ben atirtam hogy OR reg,reg helyett TEST reg,reg-et forditson,
  mivel ugyanaz a hatasa, de allitolag pentiumon gyorsabb.

- BUGFIX(?):  Ha PMODE akkor a FOR mindenkeppen ECX-et fordit.
    (eddig CX-et forditott, illetve a "3" hatasara ECX-et de
    a LOOP-ot meg DB 67h-val prefixelte...)
  Tehat a FOR hasznalata:
    REAL MODE:  sima FOR
    FLATREAL:   FOR3
    PMODE:      FOR  (FOR3-at nem szabad!)

- FPU kiertekelo alpha -1000 verzio...
    FPU=valami -nel szetszedi valami-t elemeire es kiirja hany muveletbol all.

- FPUCONST:  immediate is haszn lhat¢ n‚h ny FPU utas¡t s ut n:
    pl:  FADD 3.7
         FADD 8    ; ilyenkor ebb“l 8.0 lesz!!!   (int->float conv.)
         FIADD 8   ; itt viszont marad 8, mert integer...
         FADD QPT 1.35263256342692789 ; QPT -> DQ lesz a konstans tipusa!
    leford¡tva:
         csin l egy "BPC_FPUCnnn Dx y" konstanst (CONST.IND-be),
         ahol:
           nnn=sorsz m, automatikusan n”vexik...
           Dx = tipus, ha PTR-el meg van adva a sz m el“tt
                default: DD (DWORD)
           y  = a sz m, ha eg‚sz volt, de float-os utas¡t ssal,
                akkor .0 v‚gz“d‚s hozz ¡r¢dik, kl”nben a TASM szarul ford¡tja
         A sz mot kicser‚li a BPC_FPUCnnn cimk‚re.
    t mogatott utas¡t sok: FLD,FMUL,FADD,FSUB,FDIV (illetve ezek FI* verzioi)
        van m‚g olyan utas¡t s, amin‚l k‚ne?

BAPC v3.0 à9      MANY BUGFIX :(((      thanx to Panther & Pila for bugreports!
~~~~~~~~~~~~
  - BUGFIX-ek doksikban:         [Panther]
      - TUDJA3.TXT-ben hibasan voltak a cimke tipusok a .TYPE leirasanal
        (eggyel el voltak csuszva a valtozok tipusai)
      - v2.3x doksikban egy helyen .COMPROC van irva .COMPPROC helyett!!!
      - OPTIONS.TXT-bol hianyzott a .COMPPROC es a .DEFPROC leirasa

  - LABELS bug:
      a konstansokat mindig WORD tipusunak tarolta, igy adodott a kovetkezo
      hiba:
          ^MAX_SQRT=10000h  ; a LABELS rutin ezt 0 ertekunek tarolta el :(
          IF EAX<^MAX_SQRT THENCMD EBX+=SQRT_TABL[EAX*4]
        leforditva:
          TEST EAX,EAX              ; itt CMP EAX,^MAX_SQRT kene legyen!!!
          JAE BPC_IF123
            ADD EBX,SQRT_TABL[EAX*4]
          BPC_IF123:
      ami m‚g erdekes, hogy nem jelzett "conditional always FALSE" hibat sem.
      => erre rajottem miert van, mert nem always FALSE, hanem always TRUE! :)
         -> javitva, mostmar az always TRUE-t is jelzi.
         Bar meg nem tokeletes, mert az IF rutin szempontjabol valoban
         TRUE a feltetel, mert az ugras mindig teljesul, de a mi szempontunkbol
         viszont FALSE mert ami az IF-en belul van az nem hajtodik vegre...

  - FPUCONST:                    [Panther]
      nem igazan muxik, kisbetuvel semmi, naggyal meg a ?PT-k nem
      javitva:
      - REP CMPSB elott nem volt DI+=SORUSOR
      - SI a "PTR "-re mutatott a szam helyett...

  - FOR:
      - atirtam a hatarokat:
           regen:  max 20 db FOR, max 128 char/for
           most:   max 10 db FOR, max 256 char/for
           (a darabszam melysegben ertendo, 1mas utan akarmennyi lehet...)
      - ha PMODE akkor .ALIGN helyett ALIGN-ot fordit
      - bugfix: PMODE=0 eseten is kiirta az "Using FOR3 in PMODE" warningot

  - Modositas a ~ karakter korul:       [Pila]
     eredetileg a 0-as szinten ertekelte ki a ~= -t, es a ^ kiertekelo
     utan a ~ -t.  viszont ez bugos, mert pl. a ~=^VALAMI nem mukodik...
     2 megoldas lenne:
         1. a ~ kiertekeles utan ertekeli ki a ^ -ot
         2. a ^ kiertekeles utan ertekeli ki a ~= -t
     a 2. lett megcsinalva, mert igy mukodik ez is:
       XXX::
       CIMKE:    <ÄÄÄÄÄÄÄ¿ide ugrik!
       ~=^               ³
       ...               ³
       YYY::             ³
       CIMKE:    <ÄÄÄÄ¿  ³
       =>^CIMKE  ÄÄÄÄÄÙ  ³
       =>~CIMKE  ÄÄÄÄÄÄÄÄÙ

  - Ujabb belso valtozok lettek elerhetok fuggvenykent:
      .PASS     = visszaadja hogy hanyadik menetnel tart a forditas
                  1 menetes forditasnal mindig 2, kulonben 1 vagy 2 erteku
      .PMODE    = visszadja a modot amire fordit:
                      0 = REALMODE (valos mod, mas neven v86)
                      1 = PMODE v2.x by TRAN extenderhez
                      2 = PMODE/W v1.x by Daredevil & Tran extender (DPMI)
      .EXE      = memoriamodell szama:
                      0 = .COM program
                      1 = .EXE, 1 szegmens  CS=DS=SS
                      2 = .EXE, 2 szegmens  CS<>DS=SS
                      3 = .EXE, 3 szegmens  CS<>DS<>SS
    Ezeket IF-EQU-val egyutt sok mindenre fel lehet hasznalni,
    legfokeppen az uj LIB-ekhez lesz jo.

  - BUGFIX: eddig csak max. egy @-ot ertekelt ki utasitasonkent,      [Pila]
            mostmar vegigkeresi a sort es mindet kiertekeli
            (eredeti bug:  "DB @2-@1"-et rosszul forditotta)

  - LABELS: KONSTANSok koruli bug:                                    [Pila]
       XYZ = 5  -ot pl. nem ismeri fel a SPACE-k miatt.
       javitva
           - az " ="-t is elfogadja az " EQU" es "=" mellett
           - XGETNUM-ba beirtam hogy a szam elott levo SPACE-ket vagja le


BAPC v3.0 à10     bugfixes
~~~~~~~~~~~~~

- BUGFIX:   VAR valtozo->hova  -t PMODE-ban hibasan forditotta, mert
                                  a cimnek csak DW-t fogallt DD helyett!

- INT 3 kezel‚se:
    - eddig WARNING-olt ha talalt, ez maradt csak mostmar az
      ERROR() makroval iratja ki
    - .NOINT3 kapcsolo hatasara kitorli az INT 3 utasitasokat!  <NEW!>

- VAR.IND:
    .INDIRECTALL regen:  1. minden .IND kiveve a VAR.IND
                         2. a VAR.IND
    mostantol:
          1. minden ami nem VAR*.IND
          2. minden ami VAR*.IND
      igy lehet tobb valtozo csoport is, es nem kell kulon gondoskodni
      a sorrendrol.
      A .VARIND= opcioval egyutt atfedett valtozo teruletek is keszithetoek.

- Ez nem volt semmi:  SZAM.INC elejen:
     eredeti comment:
          ;IN=SI-> UPCASED STR (SZAMOK, '/*+-()',SIN,COS)
     uj:
          ; In:   SI->STR  (szamok, /*+-()^, UPCASED fuggvenyek, e,ã,X)
     Ha uj commenttel forditom, akkor nem talal 2 fuggvenyt a COPROC1.LIB-ben.
     jo, mi? :)
     A hiba oka: a /* a C-tipusu komment kezdetet jelzi...
     (a BAPC inkompatibilis a r‚gi verzi¢kkal, mert a ; ut n nem szabadna
      semmit ‚rtelmeznie... )
  Megold s: a C-style kommentek  tdolgoz sa.
    - el“bb ‚rt‚keli ki a ;-t ‚s ut na a /* */-t
    - egym sba  gyazott t”bb szint– /* */ kommentek kezel‚se:
        KELL /* KOMMENT /* KOMMENT_A_KOMMENTBEN */ EZ MEG KOMMENT */ NEM_KOMM
    - hibajelz‚sek:
        - ha a prg v‚g‚re marad nyitott /*
        - ha */-ot tal l amihez nincs /*

- ->IND bug .EXE filen l:
  pl:   DX->VAR PALETTA:DB*768
  .EXE-n‚l a cimke a DATA szegmensbe kerl, amit a TASM nem ‚rt‚kel...
  javitva:  nem 'CIMKE:' hanem 'CIMKE LABEL' forditodik.


BAPC v3.0 à11     LABELS, MAKROK
~~~~~~~~~~~~~
- BUGFIX: a 'Too many labels' hibauzenet helyett 'Redefining label to
          different TYPE!'-ot irt ki
          jav: a hiba nem FATAL lett, hanem ERROR, es csak letiltja a marad‚k
          cimke logol s t

- LABELS kicsit  tirva, az EQU ‚rt‚keket nem a cimken‚v ut n teszi, hanem
  kulon, es csak egy pointert tarol a 'data descriptor'-ra a cimkenev utan
  tovabba tipuskodok is valtoztak, ezutan van eg‚sz, float es string tipusu EQU
  (r‚szletek a LABELTYP.H-ban, ‚s aj nlatos azokat a konstansokat haszn lni)
  £j rutinok:  LABEL_SAVE_INT:: ‚s LABEL_GET_INTEGER::

- Internal: NO_FPU konstans: ha 1 akkor nem hasznalhatok FPU utasitasok
  (hogy a fordito fusson olyan gepen is amiben nincs FPU...)

- LABELS t rolja a konstansokat eg‚sz sz mk‚nt (+/-) vagy string-k‚nt
  kell m‚g: FLOAT sz mbeolvas¢+t rol¢

- MIEZ2 rutin els“ verzioja mar muxik, tesztel‚s:
  MIEZ xxxxx   ; kiirja forditaskor xxxxx parametereit (type,size,value)
  tudja:
    - regiszter (cpu,segment,fpu)
    - integer (dec/hex, XGETNUM-ot hivja)
    - label
       - memory  (size m‚g nem ok)
       - integer (ok.)
       - float  (not tested)
       - string -> rekurzivan k”veti, max 10 szintig aztan hibauzenet

- £j parancssori kapcsol¢:  /LDMP  - label dump
  a ford¡t s v‚g‚n kimenti LABEL_SG-t egy LABELDMP.DAT nev– fileba.

- MAKRO definalo es kiertekelo teljesen atirva, mivel a makrok mar a
  LABEL_SG-ben vannak, nem a MAKRO_MEM-ben.
  - egyszerre mindig csak a kovetkezo %.-ig terjedo reszt dolgozza fel,
    igy lehet akarmekkora is a makro (tobbsoros makrok elokeszitese)
  - mivel felszabadult 8kB a MAKRO_MEM miatt, a SORMAXSIZE-t vissza¡rtam
    400-r¢l 512-re
  - kis m¢dos¡t s: ha a % ut n ‚rtelmezhetetlen karaktert tal l (azaz
    amihez (m‚g) nincs funkci¢ rendelve) akkor nem kiirja hanem  tugorja.
    Ez kell a k‚s“bbi fejleszt‚sekhez... (b r kicsit inkompatibilis a r‚gi
    verzi¢kkal :( )
    teh t eddig pl a %A eset‚n A-t irt ki, mostant¢l semmit.
    (igaz b¢l ugyis %A-t kellett volna kiirjon...)
    A % jel tov bbra is a %%-al irhat¢ ki.

- —j parancssori kapcsol¢:  /INFO
  kiir egy oldalnyi hasznos inf¢t:

----------------------- Compiler info ----------------------------
Memory:
  Code: 32765             ; a BAPC k¢dj nak m‚rete (LIB-ek n‚lkl)
  Data: 58432             ; adatszegmens m‚rete (STACK n‚lkl)
Free mem at start: 516 kB ; a BAPC ind¡t sakor szabad mem¢ria
Free memory now: 403 kB   ; a bels“ modulok inicializ l sa ut ni szabad mem.

Memory limits:
READ_buffer=2048    ; olvas si puffer. fileonk‚nt kl”n van.
WRITE_buffer=4096   ; ¡r si puffer, egy van, indirect-v lt skor flush. :(
FUNCTABL=8192       ; ide t rolja a fggv‚nyek kimen“ param‚tereit
LABELS=32768        ; ide teszi a cimk‚ket, EQU-kat ‚s a makr¢kat is

Length limits:
SORMAXSIZE=512      ; egy sor max. hossza
LABEL_MAXSIZE=128   ; egy cimke max. hossza

Nest limits:   ; egym sba  gyaz si korl tok:
MAX_IF=64      ; IF-[ELSE]-ENDIF  vagy  IF-THENCMD
MAX_UNTIL=32   ; REPEAT-UNTIL
MAX_WHILE=32   ; WHILE-ENDWHILE
MAX_FOR=10     ; FOR-NEXT
MAX_CASE=16    ; CASE-ENDCASE
------------------------------------------------------------------
Ezek a bels“ konstansok ‚rt‚kei, kiv‚ve a mem¢ria foglal sok.

- sz mozott ford¡t s, igy k”nnyebb lesz beazonos¡tani a BAPC verzi¢j t:

BAssPasC Compiler v3.0a11  build #0044        Copyright (C) 1996-98. ESP-team
     ez a ford¡t s sorsz ma -->---^^^^
egy kls“ progi a BAPC minden £jraford¡t sakor n”veli ezt az ‚rt‚ket.

- T”bbsoros makr¢k!
  defin l s:
  #makronev(parameterek):kimenet
  ...
  ...
  ENDM
  Megj:
    - param ‚s kimenet nem k”telez“
    - nem lehet = jel a #-os sorban! (mert akkor egysoros makr¢nak veszi)
      (illetve a param.vagy kimenet tartalmazhat, de a kimenet ut n nem
      lehet semmi.)
    - az ENDM-el csak akkor forgalkozik ha ‚ppen egy t”bbsoros makr¢ban
      vagyunk. teh t a TASM-os MACRO-ENDM dolgot nem piszk lja!
    - rekurzi¢ ‚s makr¢def a makr¢ban nem megy m‚g :(
    - a makrodef a 0- s szinten hajt¢dik v‚gre, ami nem a legjobb m‚g most,
      de meg fogom csin lni hogy a 0- s szinten ‚rt‚kelje majd ki a makr¢kat
      ‚s akkor lehet indirect-eket, .ASM/.BAP, meg mindent csin lni makr¢val is

- Internal: £j:  DEBUG.H
  makr¢k vannak benne a debuggol s egyszer–s¡t‚s‚re...
  a MACRODEF r‚sz m r ezeken keresztl ¡rja ki a debug zeneteit.


BAPC v3.0 à12  - viny¢ elsz ll s ut n...     MAKROK 4ever!
~~~~~~~~~~~~~
- WR_MACRO bug fixed: kiertekeleskor FS:LODSW helyett LODSW volt,
  emiatt nem mindig talalta el hany parameter van...

- IF-EQU: megcsinaltam hogy ne forditson felesleges cimkeket...
  jol bele kellett nyulni az egesz IF rendszerebe, remelem nem rontottam
  el semmit :)

- /LDMP  - LABELS-t kiirja LABELDMP.DAT fileba
  /LDMP=file  -  file-t beolvassa LABELS_SG-be
  hogy ez mire j¢???   PRECOMPILED HEADERS!!!
  elore le lehet forditani az osszes makronkat, EQU-nkat, igy nem
  kell minden forditaskor ujra kiertekelni a sok .H filet...
  Kerdes persze hogy megeri-e, gyorsit-e egyaltalan valamit.

- MAKROK megint...

  - tobbszorosen definalt makrok:
    a sor kiertekelesenek idejere ervenyteleniti az utolso macrodefiniciot,
    igy elkeruli a rekurziot vagy begerjedest.
    Pl:
       #XXX=NOP//XXX
       #XXX=CLC//XXX
       XXX
    leforditva:
       CLC     ; az utolj ra defin lt makr¢ ‚rt‚kel“dik ki...
       NOP     ; az utols¢ el“tti is, mert az utols¢ hivatkozik r  (//XXX)
       XXX     ; az ut. el“tti is hivatkozik XXX-re de nincs bel“le t”bb :)

  - rekurz¡v makr¢k:
       ha egy sorban %R is van, akkor a sor forditasanak idejere nem
       ervenyteleniti az utolso makrodef-et, azaz rekurzio is lehets‚ges
       az elobbi pelda alapjan:
          #XXX=CLC//%R XXX
          XXX
       leforditva:
          CLC
          CLC
          CLC
          CLC
          ...
          * FATAL Error: virtual stack overflow!
       Tehat rekurziv makroba mindig kell valami leallasi feltetel!!!
       Pl:
          #XXX=IF .NB %1 DO AX:=%1//%< %R XXX(%*)
          XXX(1,2,3,4)
       leforditva:
          MOV AX,1
          MOV AX,2
          MOV AX,3
          MOV AX,4
       Megj.: a fenti peldaban jobb lenne a kovetkezot alkalmazni:
          #XXX=IF .NB %?1 DO AX:=%?1//%< %R XXX(%*)
          (tehat %1 helyett %?1-et, ami a 'nem kotelezo parameter' jelzese)
          mivel az utolso szinten nem lesz egy parameter sem, es
          ha nem %? van akkor a BAPC hibauzenetet fog adni.

    A rekurzio max. melysege: fogalmam sincs :)))
        - fugg a virtual stack meretetol (alapbol 64k) illetve hogy
          mennyi szabad belole. (pl az INCLUDE-k erosen csokkentik a helyet)
        - egy makro leiro block merete 1024+6+SORMAXSIZE, tehat ennyit
          foglal a v.stackban -> max. kb 40 szintre eleg a stack

  - Makro param‚tere lehet makr¢.
    pl:
      #RND(AX):AX=!RANDOMX
      #PUTPIXEL(BX,DI,AX)=IMUL DI,320//[ES:DI+BX]:=AL
      PUTPIXEL(RND(320),RND(200),RND(256))
    eddig nem tudta leford¡tani, mostm r megy.
    ehhez kellett:
      - WR_MACRO-ban a !WRITE_MOV idej‚re SAVEVAR-ozni mindent
      - WRITE_MOV-ban a !FUNCTION idej‚re menteni [BX]-et

  - Latszolag mukodik a makrodef tobbsoros makroban:
    pl:
      #TOBBSOROS
      CLC
      #XYZ=NOP
      STC
      ENDM
      ...
      XYZ
      TOBBSOROS
      XYZ

  - BUGFIX: hibasan muxott a makrodef ervenytelenites, mert
    a RESTOREVAR elott probalta visszallitani mikor meg a ^PTRtoPTR
    erteke hulyeseg volt... :(

BAPC v3.0 à13  - MAKROK SUXXX
~~~~~~~~~~~~~
- elkezdtem megirni az STDBAPC.H-t  (alap BAPC utasitasok megoldasa makrokkal)

- MAKRO-ban (tobbsoros) az IF-EQU-bol csak az IF..THENCMD mukodott,
  az IF..THEN..ENDIF struktura nem, mert a FALSEMOD_KIERTEKELO-t
  meg a COMPFIL2 hivta, nem az X_COMPLINE...
  beraktam egy IF FALSEMOD..!FALSEMOD_KIERTEKELO..ENDIF-et az X_COMPLINE-be is

- az .NB nem mindig mukodott jol, mert neha egy space ottmaradt a parameter
  vegen  (".NB ") -> megoldas: a space-ket skippeli az .NB ellenorzes

- MAKRO-n belul hasznalhato:
    %N = a bemeno parameterek szama
    Pl:
      #OUTB
        IF .NB %1 DO AL:=%1
        OUT DX,AL
        IF %N DO %< %R OUTB %*
      ENDM
    Ez muxik igy is: XYZ(1,,2,)
    Mig a sima .NB teszteres elhalna az elso ures parameteren!

- WR_MACRO BUGFIX: ha nem volt parameter megadva akkor ^INPUTDB veletlen
                   erteku volt 0 helyett!

- Elkeszult az STDBAPC.H els“ verzioja!  TESZTELNI!!!!!!!!!!!!!!!
  csak egy INCLUDE STDBAPC.H kell a progi elejere, ez
  kiiktatja a beepitett makrokat es helyettesiti oket...
  sebesseg:
    gyorsabb lesz minden ha a beepitett makrokat kitorlom a forditobol.
    ok: az uj makrokat HASH-tablas kereso ertekeli ki, mig a beepitett
    makroknal: minden utasitas mindegyik makroval osszehasonlitasa -> lassu
  tudas:
    nemelyik utasitas tobbet tud, jobban hasznalhato lett.
    pl: GOTOXY 5,10 rovidebb kodot fordit, UPCASE-nek lehet tobb parametere...

BAPC v3.0 à14  - LABELTYP.H bugfix     *** BAPC3UP1.ZIP released ***
~~~~~~~~~~~~~
- ilyen egy hibat!  elfelejtettem atirni a LABELTYP.H-ban a konstansokat :)))
  ezugybol mindenfajta EQU 4-es kodot kapott, ami nem mindig a legnyerobb...
  raadasul a hiba csak negativ egeszeknel jelentkezett :)
  de legalabb az internal error checkpoint megfogta a bugot!
  bugreport by Szoke (Smulovics Peter)

BAPC v3.0 à15  .EVAL, IF-EQU bugfix meg makr¢k m‚g mindig... ja meg DOKSIK!!!
~~~~~~~~~~~~~
- .INDIRECTALL nem mukodott 1 menetes forditasnal  - bugreport by Pila

- MACRO_COMPLINE:: rutin forditja le a %-os parancsokat
  a WRITE_MACRO:: es FUNCTION:: is ezt hivja, nem 2x van megirva kb ugyanaz
  -> a kimeno parameterekben is lehet hasznalni minden %-os dolgot,
     kiveve a %.-ot  (de pl. a %? %N %< stb muxik)

- Kimeno parameter sors ra is lehet hivatkozni %O-val
  pl:   ECX:=XYZ
   akkor az XYZ makroban a %O helyere ECX fog kerulni...

- % ut ni I azt jelenti hogy le kell v gni az id‚z“jelet a param‚terr“l
  pl:   #KETSZER=%I1//%I1
        KETSZER 'MOV AX,5'

- MAKROn‚v ut n k”zvetlen lehet: space, zarojel, idezojel, vesszo
  teh t pl:
     XYZ(5)
     XYZ 5
     XYZ'5'
     XYZ ,5  vagy  XYZ,5   (az STR0_NYIR miatt a 2. lesz az els“b“l is)

- STDBAPC v1.1 - WRITE, WRITELN utasit sok

- IF2_X.INC-ben volt egy felesleges sor:  :)))
    IF ^NEG THENCMD XOR AL,1
  de emiatt nem muxott tokeletesen az IF-EQU kiertekelo:
    IF (0 AND AH='-') OR (1 AND AL='-') THEN
      XXX
    ENDIF
  ezt nem jol forditotta, ui. az els“ AND-nal kitalalta hogy az eg‚sz
  'biztosan true', pedig nem. :(

- IF2_X ‚s IF2B atirva hogy a DEBUG() makrot hasznalja hibakeres‚sn‚l

- Doksik.
  £j: MACRO.TXT, FUNCTION.TXT meg FEJLESZT.TXT
   tdolgozva: OPTIONS.TXT, sz‚t lett szedve CMDLINE.TXT ‚s CONTROLL.TXT-re

- BAPC f“program letiszt zva nagyj b¢l (kommentek, meg felesleg kit”rl‚se)

- £j parancssori kapcsol¢: /LMS=nn  - LABEL mem¢ria m‚ret‚nek megad sa kB-ban
  default: 32kB    nn=1..64
  pl.: BAPC3 /LMS=64 NAGYPRG.BP3

- LABELS: kicsit m¢dositottam a hibakezel‚sen:
   - 17-es tipusn l (PROC_CALL) sose jelez 'label redef. to diff. type'-ot
   - warningol a makro atdefinalasra

- Uj bels“ fggv‚ny: .EVAL  -  lebeg“pontos ki‚rt‚kel“
  Pila kifejez‚s ki‚rt‚kel“j‚t haszn lja (SZAM.INC).
  lehet“s‚gek:
    .EVAL xxx     = lebeg“pontos sz mot ad vissza (pl.: 3.14159265E0000)
    .EVALI xxx    = eg‚sz (kerek¡tett) sz mot ad vissza (pl.: 3)
    .EVALD xxx    = lebeg“pontos sz mot ad vissza HEXA-ban (pl 12832594h)
    .EVALQ xxx    = lebeg“pontos sz mot ad vissza HEXA-ban, de ez QWORD
    .EVALT xxx    = lebeg“pontos sz mot ad vissza HEXA-ban, de ez TBYTE
  Az els“ akkor hasznos ha valami bonyolultabb ‚rt‚ket akarsz adni
  egy konstansnak, pl: CONST SZORZO:DD=.EVAL 2ã/44100
  A 2. a fixpontos aritmetik n l hasznos, pl: EAX+=.EVALI 65536/(240/200)
  Az utolso 3 akkor j¢, ha pl. MOV-al akarsz ‚rt‚ket adni egy float
  v ltoz¢nak/regiszternek. ui. a TASM nem engedi pl az EAX:=1.31 -et!!!
  ***
  - A haszn lhat¢ fggv‚nyek, funkci¢k:
      + - * / ^ ! û ( )      (x^y=hatv nyoz s,  !x = x faktori lisa)
      SIN(), COS(), ABS(), SQR(), LN(), LG(), TAN(), CTG(), ABS(), INT()
  - Ha nem tud ‚rtelmezni valamit akkor meghivja a GET_LABEL_FLOAT-ot,
    az meg ha string konstanst talal akkor rekurzivan meghivja a
    KIERTEKELI::-t (SZAM.INC) !
    Igy pl ez is megy:
      ABX=2ã
      XYZ=2-3*ABC         ; ez nem most ertekelodik ki!
      EAX:=.EVALI XYZ     ; itt ertekelodik ki az egesz, rekurzivan...
  - F* utasitasok is t mogatj k, s“t m‚g az .EVAL se kell!
    pl: FADD 2ã/SAMPLEFREQ
    pl: FILD DPT 65536*3/7532
    (a ?PT-b“l meg az I-b“l kital lja a tipust)
  - a CONST is t mogatja, .EVAL-al:
    CONST SZOG_D:DD=.EVAL 1/SAMPLEFREQ
  - Lehet id‚z“jelet is haszn lni:
      CONST SZOG_D:DD=.EVAL '2^(1/12)'
    (ez foleg a speci jelekn‚l ‚rdekes, pl: ^ )
    de igy is jo:
      CONST SZOG_D:DD=.EVAL ^lokalisvaltozo'^'(1/12)
    [gyakorlatilag skippeli az osszes idezojelet...]
  ***
  TESZTELNI!!!!!!! Nem biztos hogy mindig jol muxik!!!!!!!!
  ***

- NASM. SUX...
  megprobaltam NASM-al leforditani... hat nem nagyon hagyta magat...
  - FPU utasitasok.
    - TASM2NASM nem ismerte, megoldva
    - a NASM nem ismeri az FWAIT utasitast...
    - a NASM nem ST(1) meg ST meg hasonlokat hasznal hanem ST0..ST7
    - NASM nem ismer sima "FDIVR" meg hasonlokat csak ha "FDIVRP ST1,ST"
    - NASM-ban TWORD-nek hivjak a TASM-os TBYTE-ot
    - a NASM nem szerette a SORUSOR definiciojat (offsetek kulonbsege)
    => mindez javitva a TASM2NASM meg a NASMSUX.H segitsegevel
  - ez a legjobb:
    az IF2B-ben a Jcc_TABL: a kodszegmensben volt definalva, de DS:-el
    volt hivatkozva ra, de a TASM-al forditva valamiert megis mukodott!!!!
    NASM-al ofcoz nem ment...  valoszinu az ASSIGN miatt.
    javitva.
  - a TASM-os DW 'ab' a NASM-ban DW 'ba'-nak felel meg... sux.
    IF-EQU-kkal javitva a forrasban. (COMPILE_TO_NASM EQU 0/1)
  ===> LEFORDUL JOL!

- FPUCONST bug: nem rakott lez r¢ 0-t az eg‚sz sz m ut n (FI*)

- BAPC3UP2 es BAPC3UP3  released!

BAPC v3.0 à16   kif.kiertekelo & MAKE & FPU-support
~~~~~~~~~~~~~
- Elkeszult a FPU-s kif.kiertekelo __TESZT__ verzioja...
  tud mindenfelet, reszletek kifkiert\arpi1.txt-ben...
  hasznalata:  (CSAK TESZTre! ez nem marad benne...)
  FPU=kifejezes
  ez beteszi ST-be a kif. erteket, illetve fordit kodot ami ezt kiszamolja...

- MAKE:
  uj resz a HEADERS.H-ban, ami a forditast irja le (TASM,TLINK stb...)
  ebben hasznalhato:
    %1=forras filenev kiterj. nelk.
    %2=generalt .ASM file neve
    %T=tempdir
    %O=asmoptions
    %L=linkoptions
    pl:
    ..MAKE
    TASM %2 %Ttempfile.obj /UT300 %O
    TLINK %L %Ttempfile.obj, %1.EXE
    ..END
  configfileban:
    MAKEFILE=make.bat    ; ha ez nincs akkor nem general makefilet, kulonben
                         ; meg itt lehet megadni mi legyen a neve
    ASMOPTIONS=/m        ; assemblernek atadando default parameterek (%O)
    LINKOPTIONS=/x       ; linkernek atadando default parameterek (%L)
  ezek felulbiralhatok a forditando programban is, pl:
    .ASMOPTIONS=/m2
    .LINKOPTIONS=/3 /x
  Default compiler nevek A HEADERS.H-ban: TASM,TLINK,NASM32,ASM2NAS
  Ha ez nemjo, akkor sajna a HEADERS.H-ban at kell irni mindenutt...
  Forditas ezutan:
    BAPC3 filenev.bp3 [temp\akarmi.asm]
    MAKE.BAT

- "regi" ASM2NAS mar nem birta leforditani a tul sok cimke miatt :(
  -> ASM2NAS modositva: BPC_xyz -> _xyz  konvertal.

- LABELS: tipuskezeles ismet atdolgozva, a kif.kiertekelo miatt, meg
  egyebkent is ideje volt mar ;)
  Mostantol a memoriavaltozok 4 csoportba sorolhatoak:
     DATA       ->  kompatibitas miatt van, a DB,DW,DD,DQ,DT stb. valtozok
     FLOAT      ->  lebegopontos valtozok
     UNSIGNED   ->  pozitiv egesz valtozok
     INTEGER    ->  elojeles egesz valtozok
  Meretuk lehet:
     B=byte
     W=word
     D=dword  (32 bit)
     Q=qword  (64 bit)
     T=tbyte  (10 byte)
     S=struct (?? bit)
  Jelolesuk 2 betubol all, a csoport kezdobetuje + a meret jele.
  Pl:  DW = Data word       (ez ugye a TASM-kompatibilis Dx megadas...)
       FQ = FLoat qword     (ez az uj BAPC-szintaxis)
  Ezutan az IF, es a kif. kiertekelo figyelembe fogja venni a tipust.
  VIGYAZAT! A szamertekek a LABELTYP.H-ban megvaltoztak!

- BUGFIX: FPUCONST: ha kif.kiertekelot hasznalta, akkor a ^FLAGS nem
  lett allitva, emiatt neha hozzafuzodott egy .0 a szamhoz!!! (TASM nem csipte)

- BUGFIX: enyhen elszallt a CONST szam:DD   sortol. mert nem volt
  ertek megadva (pl CONST szam:DD=0).  Javitva, warningol es
  automatikusan 0 ertekunek veszi.

- COMMANDline parameterekben : is hasznalhato = helyett    [Pila]
  (pl /LMS:64 is jo /LMS=64 helyett)
  az egesz a .BAT parameterezes miatt kell. (ha .BAT-nak adsz parametrekent
  = jelet, azt a command.com atirja space-re!!!)


BAPC v3.0 à17    Pila 5letei, ASM_FUNC, FPUCONST v2, FOR
~~~~~~~~~~~~~
- parancs hogy ne haszn ljon HEADER-fil‚t:  .NOHEADER
  pl.:  .NOHEADER
        .386
        ...
  el“nye: ASM fileokat,amelyekben m r benne van a header,¡gy k”nnyebb  trakni.

- hiba ford¡t skor: csak 16 biten t rolja a sorsz mokat,¡gy hosszabb :)
  fileok eset‚n rossz eredm‚nyt mutat,amikor ki¡rja,h ny sorb¢l  llt a file.
  -> JAVITVA -> lehet irni 4milli rd soros programot jol ;-)

- Mostm r a CONST is kezeli az £j tipusokat.
- MIEZ ‚s WRITE_CMP kezeli az £j tipusokat.
  pl:  VAR DD_VALTOZO:DD
       VAR ID_VALTOZO:ID
       VAR UD_VALTOZO:UD
  IF DD_VALTOZO<5 THEN     ; unsigned
  IFS DD_VALTOZO<5 THEN    ; signed
  IF ID_VALTOZO<5 THEN     ; signed
  IF UD_VALTOZO<5 THEN     ; unsigned
  IFS UD_VALTOZO<5 THEN    ; unsigned ez is!
l‚nyege:
  A Dx-es tipusok az IF-n‚l megadott el“jelkezel‚st haszn lj k (IF vagy IFS)
  am¡g az Ix (INTEGER) ‚s Ux (UNSIGNED) tipusuakat nem befoly solja ez.
  Ha egy integert hasonl¡t akarmivel akkor signed lesz, ha unsignedet
  ak rmivel (kiv‚ve integer-rel) akkor unsigned. kl”nben meg a default.

Kell m‚g: - FLOAT ”sszehasonl¡t sok.  (FLOAT-IMM, FLOAT-MEM, FLOAT-FLOAT)
  pl:  IF ST<ST(2)            -> FCOM ST(2)
  pl:  IFP ST<ST(2)           -> FCOMP ST(2)
       IF FD_VALTOZO<5        -> FLD FD_VALTOZO/FCOMP BPC_IMM_5
       IF ST<FD_VALTOZO       -> FCOM FD_VALTOZO


- SZAM.INC-be: hexa sz mok kezel‚se is (!XGETNUM)
  pl:  EAX:=.EVALI 0A0000h+GETMAXX/8*(240/200)
  -> kit”r”ltem az FPUCONST-b¢l a r‚gi sz m-detekt l¢t, mert elm‚letileg
     a KIERTEKELI:: miatt teljesen feleslegess‚ v lt. ha m‚gse akkor ¡gyj r s.

- —j FPUCONST cimkegener l¢ by Pila  (SZAM2CIMKE::, az FPUCONST.INC-ben van)
  a cimke nev‚ben benne van a konstans ‚rt‚ke es tipusa:
    pl:  BPC_IW_5    =  integer WORD, erteke 5
         BPC_FQ_3Em4 =  float QWORD, erteke  3.0E-4
  -=>
    - olvashat¢bb lesz az .ASM  (kit ‚rdekel? :))
    - nem lesz t”bb cimke defin lva ugyanahhoz a konstanshoz!!! <- MUXIK
  lebeg“pontosn l a default t¡pus DD (DWORD), ami az £j .FLOAT=tipus
  paranccsal megv ltoztathat¢. a .FLOAT ut n 1 bet– kell, W,D,Q vagy T

- asm_functions:  ***> NAGYON NAGYON BETA!!!!!! <***
  az assembly utasitasok parametereire is meghivja a FUNCTION_CALL-t
  pl.:  IMUL LODSD,.EVALI 65536*360/ã
  leforditva:
     LODSD
     IMUL EAX,7509872
  - BUGFIX: rossz sorrendben volt a [DI-1]:=AL ‚s a !STR_LENGTH
  DEFAULT: _kikapcsolva_!!!, a .ASMFUNC ON|OFF paranccsal kapcsolhato be/ki

- Uj commandline kapcsolo:  /MAKE=makefilename  (vagy /MAKE:makefilename)
  pl:  BAPC3 /MAKE=MAKE.BAT FILE.BPP
  ugyanaz mintha a configfileban lenne egy MAKEFILE=makefilename sor.
  mire jo?   pl. ird ezt a VC.EXT-be:
     BP3: BAPC3 !.! !.ASM
          TASM !.ASM
          TLINK -t !.OBJ
     BP*: BAPC3 /MAKE=MAKE.BAT !.!
          MAKE.BAT
  Tehat ha a kiterjesztes nem hatarozza meg egyertelmuen hogy kell
  az .ASM-ot leforditani, akkor bizzuk a BAPC-ra!

- Uj LIB:  READTXT.LIB  (es a pmode-os verzio: READTXT.L32)
  nagyon egyszeru .TXT (szovegfile) olvaso rutinok.
    READTXT_OPEN::   ; Be:  DX->filename   Ki: CF=error
    READTXT_READLN:: ; Be:  ES:DI->puffer  Ki: CF=EOF
    READTXT_CLOSE::  ; Be: -
  kell hozza 2 konstanst definalni:
    READTXT_PUFFERSIZE  ; a puffer hossza
    SOR_MAXSIZE         ; egy sor max. hossza (READLN-nak)
  K‚ne m‚g:
    - tobb filet kezelo TXT olvaso  (BP->TXT_STRUC)
      kozos vagy kulon puffer?
    - TXT iro  (soremelessel/anelkul, milyen soremeles (13,10,13+10))
    - tobb filet kezelo TXT iro
    - tobb filet kezelo TXT iro/olvaso/pozicionalo

- FOR bovitesek:
    - FORL-n‚l is haszn lhat¢ az E flag, itt azt jelenti hogy a sz ml l¢=0
      esetben m‚g visszaugrik  (teh t --ECX//JNZ helyett --ECX//JNS van a v‚g‚n)
    - megadhat¢ a ciklussz ml l¢ regiszter a k”vetkez“ m¢d¢n:
         FORL(ciklusregiszter,ciklussz m)
      pl:
         FORLPE(EDX,32)
           ...
         NEXT
      leforditva:
         MOV EDX,32
         @:
           PUSH EDX
           ...
           POP EDX
           DEC EDX
         JNS @
      Ha meg van adva cikl. regiszter akkor az S flag-et nem veszi figyelembe!

- Bugfix: a CONFILEFILEban a REGFILE= nem szamitott semmit, mivel a
          regisztracio ellenorzes elobb volt mint a configfile beolvasas


BAPC v3.0 à18    Service Pack #1  [ bugreports by Panther and Tom Rehak ]
~~~~~~~~~~~~~
1. M r az el“z“ verzi¢ is tudta, csak kimaradt a doksib¢l:       [Panther]
   BUGFIX: a CASE meghulyult a zarojektol:
        CASE AL OF
         '(': valami
        a ( miatt nem vette figyelembe a 2. idezojelet, es elszallt
        ":" missing erroral.
   Oka: a CASE az LDDM.INC-ben levo SEARCH_KETTOSPONT-ot hasznalta,
   ami meg onmagaban nem lenne bug, de az bugos volt!
   Es mivel eredetileg az LDDM-hez keszult, amiben igen ritkan fordul
   elo idezojel kozti zarojel, ezert nem derult ki eddig. :(

2. Doksi BUG:           [Panther]
   par sorral feljebb ez volt:
     NAGYON TESZTELNI: ASMFUNC-ot! (.ASMFUNC=ON)
   ami hibas, mert az .ASMFUNC utan nem kell = jel!
   tehat igy korrekt:
     NAGYON TESZTELNI: ASMFUNC-ot! (.ASMFUNC ON)

3. LABELTYP.H "bug":    [Panther]
   A LABELTYP.H-ban nem voltak kulon konstansok definalva az
   uj tipusokhoz, tehat nem volt pl. LABELTYPE_FW
   Ezt ugyan lehet mas tipusbol szarmaztatni, de ugy maceras:
     LABELTYPE_FW=LABELTYPE_DW-LABELTYPE_DATA+LABELTYPE_FLOAT
   A hivatkozasnal pedig kell egy .EVALI kulonben nem ertekeli ki.

3.a. JAVITVA:
   A GET_LABEL meghivta a 7-es (EQU-STRING) tipusra is a GET_LABEL_INTEGER-t,
   az viszont nem kezelte le ezt az esetet korrektl (mindig 1-et adott vissza).
   Kijav¡tottam, hogy ezt is kezelje, ¡gy nem kell mostant¢l az .EVALI-t
   oda¡rni.   pl.:
      K1=76
      K2=K1-3
      IF 3=K1-K2 DO .OUT 'Mukodik!'
   Megj.: j¢ lenne ha ezt FLOAT-k‚nt ‚rt‚keln‚ ki, mert most INTEGER-k‚nt csin lja.
          ¡gy pl. szerinte a '3.3=3.14159265' felt‚tel az TRUE. :(

3.b. Csak akkor m–k”d”tt az .OUT ha a sor elej‚n volt.
    JAVITVA -> mostm r b rhol lehet, de ha nem a sor elej‚n van, akkor
    csak a k”vetkez“ //-ig ¡rja ki. (a // ut nit pedig leford¡tja...)

4. HEADERS.H bug:           [Tom]
   A TASM-COM-REAL modnal a MAKEFILE primitivnel a TLINK utan
   valamiert 2 db vesszo volt, emiatt a TLINK a MAP filet irta a .COM-ba. :(
   Erdekes egy hiba volt :)

5. M‚g egy HEADERS.H bug:   [Tom]
   Az ASM2NASM helyett ASM2NAS volt irva a T2N-es modok makefile-jaihoz. :(
   Megj.: megneztem, nalam ASM2NAS-nak hivjak, nem ASM2NASM-nak, valoszinu
   ezert volt igy.

6. PUSH-POP bug:            [Tom]
   programreszlet:
      push ax,bx,cx,dx
      push ax,bx,cx,dx
      gotoxy cl,ch
      pop dx,cx,bx,ax  ;<<<<<<<<<<<<<<
      ax:=0//bx:=0
      al:=dl//--al//bl:=31//mul bl
      add ax,menuk
      writestr ax
      pop
      ret
   igy leforditva a vegen levo pop muxik. ha viszont az elso pop-ot
   atirom sima pop-ra (a 'pop dx,cx,bx,ax'-et) akkor a vegen levo
   pop nem muxik, sima 'pop '-ot fordit.
----> JAVITVA.  'POP'-n l v‚letlenl 2x hajt¢dott v‚gre a --PUSH_VEREM_MUT.

BAPC v3.0 à19    Service Pack #2  [ bugreports by Panther & Pila ]
~~~~~~~~~~~~~
1. Bug: A GET_LABEL_INTEGER rutin string ki‚rt‚kel‚skor           [Panther]
   le llt INTERNAl ERROR-al, mert veletlen kit”rl“d”tt egy JMP bel“le :)

2. Probl‚ma:                     [Panther]
     XYZ=.TYPE valami
     IF XYZ=sz m THEN...
   Az EVAL nem tudta ki‚rt‚kelni a fggv‚nyh¡v st (a .TYPE az fggv‚ny).
   JAVITVA:
     Az =-jeles ‚rt‚kad sokra a BAPC meghivja a fggv‚ny ki‚rt‚kel“t,
     ‚s az eredm‚nyt ¡rja az .ASM-be is. (Az EQU-kat b‚k‚nhagyja.)
     Pl:
       I=27
       J=.TYPE I
       K EQU .TYPE I
       AX:=J
       BX:=.VAL J
     leforditva:
       I=27
       J=4
       K EQU .TYPE I
       MOV AX,J
       MOV BX,4

3. Bug: az .eval nem muxik, csak az .EVAL        [Panther]
   JAVITVA. mukodott ez, csak nem tokeletesen :)
   minden kisbetus eval-bol (pl .evali) sima .EVAL-t forditott.
   oka: az .eval utani modosito karaketreket nem UPCASE-olta.

4. Bug: FALSEMOD+IFN bug                         [Pila]
   false IF-EQU kozt ha volt IFN vagy IFS akkor elcsosztak az ENDIF-ek
   pl:
   IF 0
     IFN AX=5    ; ezt nem vette eszre hogy IF...
     ...
     ENDIF       ; ...ezert azt hitte ez az ENDIF tartozik az 'IF 0'-hoz
   ENDIF         ; es ez felesleg -> error
   a hiba oka: ^USOR IN['S','N'] volt ^USOR[2] IN['S','N'] helyett a
   FALSEMOD.INC-ben.

5. Bug: IN[] + COMP_CIMKE                        [Pila]
   rosszul forditotta: IF AX IN[^CIMKE] DO RET
   javitva, az IN[] kiertekelo nem hivta meg a [] koztire a COMP_CIMKE-t

6. Egy csomo 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 mar 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
   pl.:
     #SHORT_JZ
       .ASM
       .286
       JZ %1
       .386
       .BAP
     ENDM
     hat ez eleg bena pelda lett :)  vkinek van jobb 5lete?

7. Default INDIRECT-ek nevenek atallitasa                    [Pila]
   eddig is volt:
     .VARIND=nev
   ujak:
     .TEXTIND=nev
     .CONSTIND=nev
     .FPUCONSTIND=nev
  A nev max 8 karakter (filenev tipusu, pont nelkul), a .IND nem kell a vegere!

8. Az FPUCONST ne a CONST.IND-be pakoljon                    [Panther]
   az FPUCONST altal generalt konstansok (pl. FILD 5 miatt)
   nem a CONST.IND-be, hanem az FPUCONST.IND-be (vagy amit az .FPUCONSTIND= -el
   beallitottak) kerulnek. -> nem fog belezavarni a tudatosan epitett CONST
   adatstrukturaba, se az align-olasat nem fogja elrontani.


BAPC v3.0 à20    Service Pack #3    [ bugreports by Szoke ]
~~~~~~~~~~~~~
1. filecmd2.inc-ben ez volt vhol: Mov CX,CX az Xor CX,CX helyett        [Szoke]
2. falsemod.inc:  ha a sor #-al kezoddott akkor skip. de a #()-ot is!   [Szoke]

3. .EVAL modositasok:                                                   [A'rpi]
    - idezojelen belul nem lehet cimke
    - beepitett fuggvenynevek (pl. SIN,LN...) csak nagybetuvel lehetnek!
      ha kicsivel van akkor cimkenek veszi
    - beepitett fuggveny neve utan nem lehet kozvetlenul cimke:
      LNXYZ nem jo, csak igy: LN XYZ
      ezt regen elfogadta, de ezugybol sajna ezt rosszul forditotta:
        LN_SCALE=1024
        EAX:=.EVALI LN_SCALE*12.345
      (a _SCALE nevu (nem letezo) konstans logaritmusat akarta venni)
    - .EVALx meg mindig bugzik ha x kisbetu ???

BAPC v3.0 pre2     Package SUXXXXXXX
~~~~~~~~~~~~~~
1. Package teszt -> sz‚p kis bug volt a CJ.INC-ben:
     SI->^SOR volt SI:=^SOR helyett!!!!!! :(
   Ez‚rt az IF BPORA_FORDIT THENCMD ...  sorokat nem forditotta jol :-o

2. M‚g 1 durva bug:
   P r helyen (pl. *.BPE-ben a MACR• keres‚sn‚l) nem volt berakva DH-ba
   a package sz ma mikor megh¡vja a SEARCH_LABEL-t! Csoda hogy eddig ment...
   Mostm r megy a package-n bell defin lt makr¢ h¡v sa bellr“l.

3. Sz¡v s:
     VALAMI::
     #^XYZ=NOP
     ^XYZ
   Mert:
     A makr¢ keres‚sn‚l Package0__VALAMI_XYZ keres“dik...

Az eg‚sz megold sa: !!!!
  A PACKAGE_CIMKEKERESO-t nem a ki‚rt‚kel‚s el“tt, hanem _ut na_ kell
  megh¡vni! A fordito ugyis a LABELS adatb zisban t rolja hogy mi
  melyik package-be tartozik, nem n‚v alapj n mint a v2.x verzi¢k.

Megval¢s¡t s:
  - A PACKAGE_GETLABEL rutin hat stalan¡tva (egy sz l RET) -> k‚s“bb kiszedni!
  - PACKAGE_CIMKEKERESO hiv sok kiszedve (a .BPE-b“l ‚s a CJ.INC-b“l)
  - OPENF.INC-be a FILE2_WRITE_STR ‚s FILE2_WRITELN_STR rutinokba:
      if PASS=2 and ACTUAL_PACKAGE_NUM then
        copy [SI] -> temp
        PACKAGE_CIMKEKERESO(temp)
        SI->temp
      endif

Felmerlt probl‚m k:
  - megjegyz‚sek is kaptak prefixet -> javitva a PACKAGE_CIMKEKERESO::-ben
  - a fordito forrasban volt egy LEGNAGYOBB nev– konstans a package-n
    bell defin lva amire az FPU.LIB hivatkozott, ez nyilv nval¢ hiba
    a forr sban, nem a ford¡t¢ban. javitva.
  - a FOR-n l voltak gondok, mivel a gener lt BPC_IFxxx: cimk‚k
    visszakerlnek a NEXT miatt a 2. szint– ki‚rt‚kel“h”z, ami
    bejegyzi az adatb zisba ‚s ez‚rt Package prefixet kap, de a 2
    menet miatt elcs£szhat a sz moz s, ‚s nem j¢ kapja a prefixet...
      g nyol s: a 'BPC_' kezdet– cimk‚ket nem jegyzi be a SET_LABEL
      ezzel gond lehet a .BPO-n l! (mivel akkor nem 'BPC_'-vel kezd“dik)
      -> megold s lehet: a NEXT ford¡t s nak idej‚re kimaszkolni a cimk‚ket!

Ez sem igaz n m–k”dik, f“leg akkor nem ha el“bb van a DEF ‚s ut na a CALL!

Teljesen £j terv:
  1. LABELS_RESET-et el kell felejteni -> gond lesz a LIB-ekkel ->
     a cimk‚khez t rolni kell a PASS sz mot is (package legfels“ bitben)
  2. spec. eset kezel‚s kell:  (PACKAGE.TXT)
       - ha PASS=2-ben local CALL kell, ‚s csak local CALL-t tal l,
         akkor azt t”r”lni kell ‚s l‚trehozni globalt
       - PASS=2-ben nem hozhat l‚tre local CALL-t csak globalt (^NINCSILYEN)

LIB-ek kezel‚se jav¡tva:
  SETPROCDEF-ben LIB_MODE=1 esete:
  - ha nem tal lta meg akkor RET
  - ha LABEL_DEF vagy PROC_DEF ‚s PASS=1 akkor kell  (2 menetes ford. miatt)
  - kl”nben ha nem PROC_CALL akkor RET              (1 menetes f.)
V‚letlen kiderlt bug:
  LIB_MODE=1 AND PROC_OK=0 eset‚n is jegyezte a cimk‚ket (de nem ford¡totta)
  ez v2.x szerint ok, de v3.x szerint bug, mert ott cimk‚re is lehet CALL-ozni
  (v2 szerint se jo, mert foglalja a mem¢ri t, de nem befoly solja a forditast)

Probl‚ma a maszkol ssal:
  .PACKAGE XYZ
  .PACKAGE MASK=2
  !HELLO             ; call  pkg=1
  HELLO::            ; def   pkg=0
hiba: a HELLO:: hi ba global, a package_cimkekereso:: tal l egy HELLO
nev– cimk‚t (a call-t) az aktu lis pkg-ben (1) ‚s ez‚rt prefixezi :(
Megold s: a p.cimkekereso csak akkor prefixez, ha:
  - az aktu lis pkg-ben van a tal lt cimke
  - ha nem PROC_CALL a t¡pusa (itt lehet hogy k‚ne warning, legal bb /2-n‚l)

Probl‚ma: 
  .PACKAGE XYZ
  .PACKAGE MASK=2
  !HELLO
  HELLO:
MASK=2-n‚l kiirta Proc not found-oknak a LABEL-re vonatkoz¢ call-okat.
A hiba mexnt mag t¢l :)))
(illetve val¢szin– att¢l hogy az  if MASK&2 and CALL do pkg=0  ki lett szedve)


Egyebek:
~~~~~~~~
- FOR bugok:
  1. _FOR_SIZE=7 volt 8 helyett
  2. IF BX>MAX_FOR volt BX>=MAX_FOR helyett
  3. a 'NEXT' alatt letiltja a SET_LABEL-t hogy a BPC_IFnnn: -ot ne jegyezze meg

- #() bug javitva: nem !JAV-ozott ut na ‚s ez‚rt n‚h ny dolog, pl.
  FILE-m–veletek nem mentek:  FILEOPEN SZAM #(DX=NAME1)