
      Bvitett STR0 rutinok  (eredetileg a BAPC fordthoz kszltek.)
      =====================

ltalnosan igaz ezekre a rutinokra:
 - a stringek ltalban ASCIIZ-k
 - a keresend string 3 fle kppen lehet megadva:
    DI->str   DI az asciiz stringre mutat                         (POS)
    DI='xy'   DI tartalmaz egy 2 karakterbl ll stringet       (2CHAR)
    AH=CHAR   AH tartalmazza a keresend karakter ascii kdjt   (CHAR)
 - SI a stringre mutat amiben keresnk. ez ha nincs kln jelezve
   akkor asciiz, klnben CX tartalmazza a hosszt
 - az idzjelen kvl keres rutinok az '' kztt nem keresnek
   ezek nevben ltalban I bet van (IPOS, IUPC, stb.)
 - ha szksg van DL, DH megadsra:
     DL=UPCASE  ; ha nem 0, akkor 'case insensitive' keress lesz
     DH=IPOS    ; ha nem 0, akkor idzjel kzt nem keres
 - kimenet: CF=1 ha nincs meg, CF=0 ha megtallta, ilyenkor
     SI a tallat utni karakterre mutat, azaz pl:
       'Hello!'     <- ha ebben keressuk 'ell'-t, akkor SI:
          ^--[SI ide mutat]

Ahol ez igaz ott csak a regisztert irom, ahol nem ott van magyarzat:

;==============================================================================;

STR0_IPOS_2CHAR::     ; 2 karaktert keres, llati gyorsan, idzjelen kvl

Be:  DI='xy'   ; keresend 2 karakter
     SI->str

Ki:  CF, SI

;==============================================================================;

GEN_UPCASE_TABL::      ; UPCASE-tblt gyrt, muszj meghvni 1x
Be: -
Ki: -

;==============================================================================;

STR0_XPOS::            ; stringet keres, szhatron
Be: DI->str
    SI->str
Ki: CF, SI

NEM_CHAR::             ; eldnti egy karakterrl hogy bet-e (szhatr-hoz)
Be: AL=char kdja
Ki: CF=1 HA CHAR, CF=0 HA NEM AZ

;===================== STRING CSERE, BESZRS =================================;

STR0_REPLACE::
Be: SI->str  CX=length  ; beszrand j string, nem asciiz
    BX=length           ; cserlend string hossza
    DI->SOR[POS]        ; a csere helyre mutat, ez asciiz
Ki: -

STR0_INSERT::
Be: SI->str  CX=length  ; beszrand string, nem asciiz
    DI->SOR[POS]        ; ide szrja be, ez asciiz
Ki: -

;===================== STRING KERESS STRINGBEN ===============================;

STR0_IPOS::            ; keress az egsz [SI] stringben, idzjelen kvl
  DX:=1:0
STR0_POS::             ; keress az egsz [SI] stringben, Be: SI,DI,DX
  BX:=0
STR0_POS1::            ; -//- adott pozcitl
  CX:=SOR_MAXSIZE
STR0_POS2::            ;* spci keress
Be:  SI->str           ; ebben keresnk
     DI->str           ; ezt keressk
     DL=UPCASE         ; ha nem 0, akkor 'case insensitive' keress lesz
     DH=IPOS           ; ha nem 0, akkor idzjel kzt nem keres
     BX=METTL         ; keress kezd pozcja
     CX=MILYEN HOSSZAN ; max. hnyszor keresi

;===================== 1 KARAKTER KERESSE STRINGBEN ==========================;

STR0_POS_CHAR2::       ; 1 karakter keresse, idzjelen kvl
Be:  SI->str    ; ebben k.
     AH=char    ; ezt keressk
Ki:  CF,SI
Megj.: ennek mirt nem STR0_IPOS_CHAR:: a neve???


STR0_POS_CHAR::        ; 1 karakter keresse, DL,Dh szerinti mdon
Be:  SI->str    ; ebben k.
     AH=char    ; ezt keressk
     DL=UPCASE  ; ha nem 0, akkor 'case insensitive' keress lesz
     DH=IPOS    ; ha nem 0, akkor idzjel kzt nem keres
Ki:  CF,SI


STR0_RPOS_CHAR::       ; 1 karakter keresse VISSZAFEL, DL,Dh szerinti mdon
Be:  SI->str    ; ebben k.
     AH=char    ; ezt keressk
     DL=UPCASE  ; ha nem 0, akkor 'case insensitive' keress lesz
     DH=IPOS    ; ha nem 0, akkor idzjel kzt nem keres
Ki:  CX=POZICI, SI-> 0 UTN MUTAT  !!!!

;===================== STRING VGSA ==========================================;

STR0_CUT::             ; CX hossz string-rsz kimsolsa BX pozicitl
Be:  SI->str  ; forrs
     DI->str  ; cl
     BX       ; kezd pozc
     CX       ; hossz
Ki: -

Megj.: ez gyakorlatilag a PASCAL COPY() fggvnynek felel meg:
          [DI]:=COPY([SI],BX,CX)
       kivve hogy pascalban 1-tl, itt 0-tl kezddik a pozci szmozs

;===================== STRING UPCASE ==========================================;

STR0_UPC::             ; String nagybetstse.
Be:  SI->str  ; forrs
     DI->str  ; cl
Ki:  -

STR0_IUPC::            ; String nagybetstse, idzjelen kvl
Be:  SI->str  ; forrs
     DI->str  ; cl
Ki:  -

;===================== STRING NYRSA =========================================;

Ezek a rutinok a forrs stringbl eltvoltjk a felesleget, azaz:
  - TAB-bl SPACE lesz         "      " -> " "
  - ha egynl tbb SPACE van egyms mellett akkor 1 marad   "a  b" -> "a b"
  - vessz utn felesleges a space  "a, b" -> "a,b"
  - a string vgn 2db lezr 0 lesz! [biztos ami biztos ;-)]

STR0_NYIR::            ; String "nyrsa"   forrs=cl
Be:  SI->str
Ki:  -

STR0_NYIR2::           ; String "nyrsa"   forrs<>cl
Be:  SI->str  ; forrs
     DI->str  ; cl
Ki: -

;===================== STRING SSZEHASONLTS =================================;

Kisbet-nagybet megklnbztets nlkli string sszehasonlts

STR0_UPCCOMP0::        ; case-insensitive string sszehasonlts
Be:  SI->str, DI->str  ; az sszehasonltand 2 asciiz string
Ki:  ZF=1 ha egyezik    !! nem CF !!






