
x$="$VER: AntyDresiarz Issue 2 v2.5 by Taski (29.08.97)" : x$=""
._FUNKCJE


DEFTYPE.l catalog,katstr,locale
locale.l=OpenLocale_ ("AntyDresiarz.catalog") : catalog.l=OpenCatalogA_ (locale.l,"AntyDresiarz.catalog",0)

Function$ GetCatStr{katalog.l,STRN,DEF_STR$}
  katstr.l=GetCatalogStr_(katalog.l,STRN,DEF_STR$)
  Function Return Left$(Peeks$(katstr.l,256),Instr(Peeks$(katstr.l,256),Chr$(0))-1)
End Function


Function StcFileDecrunch{STCDEC1$,STCDEC2$,STC_BNK1,STC_BNK2}

  InitBank STC_BNK1,FileSize(STCDEC1$),65536 : BLoad STCDEC1$,Bank(STC_BNK1)

  If Peeks$(Bank(STC_BNK1),4)="S404"
    WYNIK=True
    STC_DECLEN.l=Peek.l (Bank(STC_BNK1)+8) : STC_SEC.l=Peek.l (Bank(STC_BNK1)+4)
    InitBank STC_BNK2,STC_DECLEN.l+STC_SEC.l,65536

    STC_BASE.l=OpenLibrary_("stc.library",0)
    If STC_BASE.l<>0
      GetReg a0,Bank(STC_BNK2) : GetReg a1,Bank(STC_BNK1) : GetReg a6,STC_BASE.l
      JSR -36(a6) : FreeBank STC_BNK1
      BSave STCDEC2$,Bank(STC_BNK2),STC_DECLEN.l : FreeBank STC_BNK2
      CloseLibrary_ STC_BASE.l
      WYNIK=True
    Else
      WYNIK=False
    EndIf
  Else
    WYNIK=False
  EndIf
Function Return WYNIK
End Function

Function StcDecrunch{ADRES.l,DESTBANK}

  STC_DECLEN.l=Peek.l (ADRES.l+8) : STC_SEC.l=Peek.l (ADRES.l+4)
  InitBank DESTBANK,STC_DECLEN.l+STC_SEC.l,65536

  If Peeks$(ADRES.l,4)="S404"
    WYNIK=True
    STC_BASE.l=OpenLibrary_("stc.library",0)
    If STC_BASE.l<>0
      GetReg a0,Bank(DESTBANK) : GetReg a1,ADRES.l : GetReg a6,STC_BASE.l
      JSR -36(a6)
      PutReg d0,WYNIK
      CloseLibrary_ STC_BASE.l
    Else
      WYNIK=False
    EndIf
  Else
    WYNIK=False
  EndIf

Function Return WYNIK
End Function


DEFTYPE.l plk,LOKPLK,PLK_DLUGOSC,Dlugosc_tekstu
LOK$=Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)
Function$ Edit_{plk.l}
  EDIT_DANE$=String$(Chr$(0),255)

  x=FGets_ (plk.l,&EDIT_DANE$,250)
  EDIT_OUT$=Left$(EDIT_DANE$,Instr(EDIT_DANE$,Chr$(10))-1)
  LOKPLK.l=Peek.l(&LOK$)+Len(EDIT_OUT$)+1
  Poke.l &LOK$,LOKPLK.l
Function Return EDIT_OUT$
End Function

Function.l Loc_{plk.l}
  Function Return Peek.l(&LOK$)
End Function

Function FSeek_{plk.l,LOKPLK.l}
  x=Seek_ (plk.l,LOKPLK.l,-1)
  Poke.l &LOK$,LOKPLK.l
End Function

Function Eof_{plk.l,PLK_DLUGOSC.l}
  If Loc_{plk.l}=>PLK_DLUGOSC.l : RT=True: Else : RT=False : EndIf
Function Return RT
End Function

Function$ ZZmiany{TXT$,STRT}
  KONIEC=Instr(TXT$,"]",STRT)+1
  RET$=Mid$(TXT$,STRT,KONIEC-STRT)
  Function Return RET$
End Function

Function Greyscale{PAL_NR,OD,DO}

  Dim col1r(255),col1g(255),col1b(255)


  *pal.palette=Addr Palette(PAL_NR)
  For t = OD To DO
        col1r(t)=Peek.b(&*pal\_pdata\_rgbs[t]\_red)
        col1g(t)=Peek.b(&*pal\_pdata\_rgbs[t]\_green)
        col1b(t)=Peek.b(&*pal\_pdata\_rgbs[t]\_blue)

   R=col1r(t) : G=col1g(t) : B=col1b(t)

   If R<0 Then R=255+R
   If G<0 Then G=255+G
   If B<0 Then B=255+B

    GRAY=(R+G+B)/3
;    AGAPalRGB PAL_NR,t,GRAY,GRAY,GRAY
    Poke.b &*pal\_pdata\_rgbs[t]\_red,GRAY
    Poke.b &*pal\_pdata\_rgbs[t]\_green,GRAY
    Poke.b &*pal\_pdata\_rgbs[t]\_blue,GRAY

  Next t
End Function

Function CopyPalette{Source,Dest,Source_OD,Source_DO,Dest_OD}
  Dim col1r(255),col1g(255),col1b(255)

  *pal.palette=Addr Palette(Source)
  *pal2.palette=Addr Palette(Dest)

  For t = Source_OD To Source_DO
        col1r(t)=Peek.b(&*pal\_pdata\_rgbs[t]\_red)
        col1g(t)=Peek.b(&*pal\_pdata\_rgbs[t]\_green)
        col1b(t)=Peek.b(&*pal\_pdata\_rgbs[t]\_blue)

   R=col1r(t) : G=col1g(t) : B=col1b(t)

   If R<0 Then R=255+R
   If G<0 Then G=255+G
   If B<0 Then B=255+B

;   AGAPalRGB Dest,Dest_OD+(t-Source_OD),R,G,B
; -------- 3 linie ponizej = lini powyzej
    Poke.b &*pal2\_pdata\_rgbs[Dest_OD+(t-Source_OD)]\_red,R
    Poke.b &*pal2\_pdata\_rgbs[Dest_OD+(t-Source_OD)]\_green,G
    Poke.b &*pal2\_pdata\_rgbs[Dest_OD+(t-Source_OD)]\_blue,B

  Next t
End Function

Function PaletteRed{PAL,KOL}
  *pal.palette=Addr Palette(PAL)
   R=Peek.b(&*pal\_pdata\_rgbs[KOL]\_red)
   If R<0 Then R=255+R
Function Return R
End Function

Function PaletteGreen{PAL,KOLOR}
  *pal.palette=Addr Palette(PAL)
   G=Peek.b(&*pal\_pdata\_rgbs[KOLOR]\_green)
   If G<0 Then G=255+G
Function Return G
End Function

Function PaletteBlue{PALETA,KOLOR}
  *pal.palette=Addr Palette(PALETA)
   B=Peek.b(&*pal\_pdata\_rgbs[KOLOR]\_blue)
   If B<0 Then B=255+B
Function Return B
End Function


Function PaletteRGB {PALETA,KOLOR,RE,GREE,BLU}
    *paleta.palette=Addr Palette(PALETA)
    Poke.b &*paleta\_pdata\_rgbs[KOLOR]\_red,RE
    Poke.b &*paleta\_pdata\_rgbs[KOLOR]\_green,GREE
    Poke.b &*paleta\_pdata\_rgbs[KOLOR]\_blue,BLU
End Function

Function CPU{}
  MOVE.l #$4,a0
  MOVE.l (a0),a1

; - 68060
  BTST #$07,$129(a1)
  BNE CPU060
; - 68040
  BTST #$03,$129(a1)
  BNE CPU040
; - 68030
  BTST #$02,$129(a1)
  BNE CPU030
; - 68020
  BTST #$01,$129(a1)
  BNE CPU020
; - 68000
  BTST #$00,$129(a1)
  BNE CPU010
  PROC=0

  Goto KONIEC

CPU060:
  PROC=6 : Goto KONIEC
CPU040:
  PROC=4 : Goto KONIEC
CPU030:
  PROC=3 : Goto KONIEC
CPU020:
  PROC=2 : Goto KONIEC
CPU010:
  PROC=1 : Goto KONIEC
KONIEC:

Function Return PROC
End Function

Function.w IFFWidth {ADRES.l}
  DLUGOSC_IFF.l=Peek.l (ADRES.l+4) : SKOK.l=12
  Repeat
    FORMA$=Peeks$(ADRES.l+SKOK.l,4) : SKOK.l=SKOK.l+4
    If FORMA$<>"BMHD"
      SKOK2.l=Peek.l (ADRES.l+SKOK.l) : SKOK.l=SKOK.l+SKOK2.l+4
    Else
      WYNIK.w=Peek.w (ADRES.l+SKOK.l+4)
      SKOK.l=DLUGOSC_IFF.l+1
    EndIf
  Until SKOK.l>DLUGOSC_IFF.l

Function Return WYNIK.w
End Function

Function.w IFFHeight {ADRES.l}
  DLUGOSC_IFF.l=Peek.l (ADRES.l+4) : SKOK.l=12
  Repeat
    FORMA$=Peeks$(ADRES.l+SKOK.l,4) : SKOK.l=SKOK.l+4
    If FORMA$<>"BMHD"
      SKOK2.l=Peek.l (ADRES.l+SKOK.l) : SKOK.l=SKOK.l+SKOK2.l+4
    Else
      WYNIK.w=Peek.w (ADRES.l+SKOK.l+6)
      SKOK.l=DLUGOSC_IFF.l+1
    EndIf
  Until SKOK.l>DLUGOSC_IFF.l

Function Return WYNIK.w
End Function

Function.b IFFDepth {ADRES.l}
  DLUGOSC_IFF.l=Peek.l (ADRES.l+4) : SKOK.l=12
  Repeat
    FORMA$=Peeks$(ADRES.l+SKOK.l,4) : SKOK.l=SKOK.l+4
    If FORMA$<>"BMHD"
      SKOK2.l=Peek.l (ADRES.l+SKOK.l) : SKOK.l=SKOK.l+SKOK2.l+4
    Else
      WYNIK.b=Peek.b (ADRES.l+SKOK.l+12)
      SKOK.l=DLUGOSC_IFF.l+1
    EndIf
  Until SKOK.l>DLUGOSC_IFF.l
Function Return WYNIK.b
End Function

Function.b CheckIFF {ADRES.l}
  If Peeks$(ADRES.l,4)="FORM"
    If Peeks$(ADRES.l+8,4)="ILBM" : WYNIK=True : Else : WYNIK=False : EndIf
  Else
    WYNIK=False
  EndIf
Function Return WYNIK
End Function

Function DecodeIFFPalette{PALETA,ADRES.l,OD,DO,INIT}
  DLUGOSC_IFF.l=Peek.l (ADRES.l+4)
  SKOK.l=12
  WYNIK=False

  Repeat
    FORMA$=Peeks$(ADRES.l+SKOK.l,4) : SKOK.l=SKOK.l+4

    If FORMA$<>"CMAP"
      SKOK2.l=Peek.l (ADRES.l+SKOK.l) : SKOK.l=SKOK.l+SKOK2.l+4
    Else
      SKOK.l=SKOK.l+4
      DEPT=(Peek.l (ADRES.l+SKOK.l-4)/3)
      If OD=False Then OD=0
      If DO=False Then DO=DEPT-1

      If INIT=True Then InitPalette PALETA,DEPT

      For DODAC=OD To DO
        *paleta.palette=Addr Palette(PALETA)
        Poke.b &*paleta\_pdata\_rgbs[DODAC]\_red,Peek.b  (ADRES.l+SKOK.l+DODAC*3)
        Poke.b &*paleta\_pdata\_rgbs[DODAC]\_green,Peek.b(ADRES.l+SKOK.l+DODAC*3+1)
        Poke.b &*paleta\_pdata\_rgbs[DODAC]\_blue,Peek.b (ADRES.l+SKOK.l+DODAC*3+2)
      Next DODAC

      SKOK.l=DLUGOSC_IFF.l+1
      WYNIK=True
    EndIf


  Until SKOK.l>DLUGOSC_IFF.l

Function Return WYNIK
End Function

Function SkokAnimki {LICZBA.l}

A.l=LICZBA.l/2

If (A.l*2)=LICZBA.l
  WYNIK=2

  A.l=LICZBA.l/4 : If (A.l*4)=LICZBA.l Then WYNIK=4
  A.l=LICZBA.l/8 : If (A.l*8)=LICZBA.l Then WYNIK=8

Else
  WYNIK=1
EndIf

Function Return WYNIK
End Function


._KONIEC_FUNKCJI
.
DEFTYPE .IOAudio audio_req
DEFTYPE.l audio_req_,adport

WBStartup
WbToScreen 0
Use Screen 0
WBenchToFront_
NoCli

Dim Czcionka$(10),CzcionkaY(10)
MakeDir "RAM:AD_TMP"

Gosub WCZYTAJ_PREFS
Gosub INICJALIZACJA
Gosub OTWORZ_PANEL
Gosub INICJALIZUJ_MENU
Gosub INICJALIZUJ_GADGETY
Gosub MENU
Gosub WYSWIETL_TEKST

POCZATEK:
Repeat : ev = WaitEvent
  Gosub MENU
Until ev=$200 AND EventWindow = 1

Gosub WYJSCIE

.INICJALIZACJA
adport.l=FindPort_("AntyDresiarz_PORT")

If adport.l=0
  adport.l=CreateMsgPort ("AntyDresiarz_PORT")
Else
  X$=GetCatStr{catalog.l,102,"eeeee..."}
  Request GetCatStr{catalog.l,100,"Antydresiarz..."},GetCatStr{catalog.l,101,"Nie mozna odpalic 2 Antydresiarzy!"},X$ : X$=""
  End
EndIf

AddIDCMP #IDCMP_INTUITICKS+#IDCMP_MOUSEBUTTONS
LoadPalette 1,"RYSUNKI/DATA/PALETA.CMA"
If CheckAGA=True : Bitplany=8 : MAG_Bitplany=Bitplany : AGA=1 : Else : Bitplany=4 : EndIf
Execute_ "C:SetPatch >NIL:",0,0

If OTWIERAC_NA_WB=0
NEWTYPE .pens : a.w : b.w : c.w : d.w : e.w : f.w : g.w : h.w : i.w : j.w : k.w : l.w : m.w : n.w : End NEWTYPE

pp.pens\c=1 ; Text on background
pp.pens\d=2 ; Bright edge on 3d objects
pp.pens\e=1 ; Dark edge on 3d objects
pp.pens\f=3 ; activew window/select gadgetfill
pp.pens\g=1 ; text over FILLPEN (filltextpen)
pp.pens\h=0 ; Backgroundpen
pp.pens\i=2 ; Special colour text
pp.pens\j=1 ; Text/deail in screen-bar/menus
pp.pens\k=2 ; Screenbar/menusfill
pp.pens\l=1 ; Trim under screenbar
pp.pens\m=12 ; Number of pens
pp.pens\n=1 ; Do I need it?

InitTagList 1,6
AddTags 1,#SA_Width,640,#SA_Height,256,#SA_DisplayID,ScrMode.l,#SA_Depth,Bitplany,#SA_Pens,&pp,#SA_Interleaved,True

ScreenTags 1,"Antydresiarz by Taski.",TagList(1)
Wysokosc_Ekranu=256

Else
  Use Screen 0
  Wysokosc_Ekranu=ScreenHeight
  t$="Twoj WorkBench jest odpalony w malej liczbie kolorow !"+Chr$(10)
  t$=t$+"Jezeli chcesz ogladac AntyDresiarza w pelni jego uroku,"+Chr$(10)
  t$=t$+"to musisz odpalic WorkBencha w minimum 256 kolorach."+Chr$(10)
  t$=t$+"Jezeli tego nie zrobisz, to zobaczysz ...?... ."+Chr$(10)
  If WBDepth<8 Then malokol=Request ("AntyDresiarz informuje...",t$,"Zaladuj ScreenMode Preferences|Lubie szkaradna grafike")
  t$=""
  If malokol=1
    Execute_ "SYS:PREFS/SCREENMODE",0,0
    End
  EndIf

  Dim R(256),G(256),B(256)

  MAG_Bitplany=WBDepth

  If AGA=0 AND WBDepth=>8 Then AGA=1
  Use Palette 0
  AGAPalRGB 0,0,$AA,$AA,$AA
  Use Palette 0
  For x=0 To 255
    R(x)=PaletteRed{0,x}
    G(x)=AGAGreen(x)
    B(x)=AGABlue(x)
    NPrint R(x)
  Next x
  OTWARTE_NA_WB=1
EndIf

NEWTYPE.lv : a.w : b.s : End NEWTYPE
Dim Pozycja_strony.l(500)
Dim Kolor_strony(500)
Dim Czcionka_strony(500)
Dim Styl_czcionki(500)
Dim Nazwa_modulu$(5),Pliki$(500),List Lista_Menu.lv(500),List Krotki_opis.lv(500)

Gosub OKNO_INITU

Gosub DEMO

If GRAYSCALE=1 Then x=Greyscale{1,8,23}
Use Palette 1

y=Wysokosc_Ekranu-(offt+offt+2+(Wysokosc_panelu/2)+1)
WSize 640,y

Return

.INICJALIZUJ_MENU
  ENGLISH_LANGUAGE=0 : Gosub LISTUJ_MENU

  Use IntuiFont 2
  ywin=Wysokosc_Ekranu-(offt+offt+2+(Wysokosc_panelu/2))-(offt-2)-20-11

  GTTags #GTLV_ShowSelected,0
  GTListView 1,10,15,20,450,ywin,"",32,Lista_Menu()
  GTListView 1,11,465,20,150,ywin,"",32,Krotki_opis() ;y=170
  GTCycle 1,12,15,5,450,15,"",0,GetCatStr{catalog.l,5000,"Wybierz polski artykul|Wybierz angielski artykul"}
  GTButton 1,13,465,5,150,15,GetCatStr{catalog.l,5001,"Krotki opis"},0

  x=OpenFile(1,"TEKSTY/DATA/MODULY.TXT")
  FileInput 1

  Repeat
    x=x+1 : Menu$=Edit$(256)
    If Menu$<>"" Then Nazwa_modulu$(x)=Menu$
  Until Loc(1)=Lof(1)
  CloseFile 1

Return

.INICJALIZUJ_GADGETY
; ---- PREFSY - MAIN WINDOW
PREFS_FONT=1
Use IntuiFont 0
x$=""
x$="Czcionka 1|Czcionka 2 (tekst w menu)|Czcionka 3 (tytuly artkow)|Czcionka 4"
x$=x$+"|Czcionka 5|Czcionka 6 (tekst w artkach)|Czcionka 7|Czcionka 8|Czcionka 9|Czcionka 10"
x$=GetCatStr{catalog.l,1102,x$}

GTCycle     2,20,8,14,412,14,"",0,x$ : x$=""
GTString    2,21,56,29,231,14,GetCatStr{catalog.l,1103,"Nazwa"},0,256,""
GTInteger   2,22,365,29,55,14,GetCatStr{catalog.l,1104,"Wielkosc"},0,0
GTCheckBox  2,23,8,59,26,11,GetCatStr{catalog.l,1105,"Otwieraj AD na ekranie Workbench'a"},34
GTCheckBox  2,24,8,83,26,11,GetCatStr{catalog.l,1106,"Powiekszaj (2x) czcionki (4,6) dla interlace"},34
GTCheckBox  2,25,8,95,26,11,GetCatStr{catalog.l,1107,"Skaluj obrazki dla interlace"},34
GTCheckBox  2,26,8,71,26,11,GetCatStr{catalog.l,1108,"Konwersja kolorow do Grayscale"},34
GTCheckBox  2,27,8,107,26,11,GetCatStr{catalog.l,1109,"Kopiuj obrazki do RAM'u"},34
GTButton    2,28,8,119,412,14,GetCatStr{catalog.l,1110,"Zmiana preferencji wlasnego ekranu"},0
GTButton    2,29,8,149,412,14,GetCatStr{catalog.l,1111,"Zmiana koloru napisow"},0

; ---- PREFSY - KOLORY
Use IntuiFont 0
f$="%2ld" : GTTags #GTSL_LevelFormat,&f$,#GTSL_MaxLevelLen,3,#GTSL_LevelPlace,2
GTSlider    4,0,91,24,216,10,GetCatStr{catalog.l,3002,"Czerwony "},$80+33,1,16,Red(8)+1
f$="%2ld" : GTTags #GTSL_LevelFormat,&f$,#GTSL_MaxLevelLen,3,#GTSL_LevelPlace,2
GTSlider    4,1,91,36,216,11,GetCatStr{catalog.l,3003,"Zielony  "},$80+33,1,16,Green(8)+1
f$="%2ld" : GTTags #GTSL_LevelFormat,&f$,#GTSL_MaxLevelLen,3,#GTSL_LevelPlace,2
GTSlider    4,2,91,49,216,11,GetCatStr{catalog.l,3004,"Niebieski"},$80+33,1,16,Blue(8)+1
x$="" : For x=1 To 16 : x$=x$+GetCatStr{catalog.l,3001,"Kolor"}+" "+Str$(x)+"|" : Next x : x$=Left$(x$,Len(x$)-1)
GTCycle     4,3,11,5,317,16,"",0,x$

; ---- PREFSY - MUZA
  Use IntuiFont 0
  GadTxt$=""
  For x=0 To 5
    If Nazwa_modulu$(x)<>""
      If GadTxt$<>"" Then GadTxt$=GadTxt$+"|"
      GadTxt$=GadTxt$+Nazwa_modulu$(x)
    EndIf
  Next x

GTMX        3,0,16,20,17,9,"",2,GadTxt$,Val(Ladowany_modul$)-1
f$="%2ld" : GTTags #GTSL_LevelFormat,&f$,#GTSL_MaxLevelLen,3,#GTSL_LevelPlace,2
GTSlider    3,1,97,74,190,12,GetCatStr{catalog.l,4002,"Glosnosc:"},$80+33,0,64,64
GTCheckBox  3,2,73,92,26,11,GetCatStr{catalog.l,4003,"Filter"},33
GTCheckBox  3,3,284,92,26,11,GetCatStr{catalog.l,4004,"Wylaczona"},33

Return

.OKNO_INITU
Window 4,50,50,450,100,0,"AntyDresiarz",0,0
LoadFont 0,"PL_topaz.font",8 : WindowFont 0
NPrint "Sprawdzam mozliwosci twojej maszynki..."
NPrint ""

NPrint "Procesor:    680",CPU{},0
If CheckAGA=True : x$="AGA" : Else : x$="ECS" : EndIf
If CheckAGA=False AND WBDepth>4 Then x$="Karta graficzna"
NPrint "Kosci:       ",x$
NPrint "Chip:        ",ChipFree
NPrint "Fast:        ",FastFree
NPrint ""
If CPU{}<3 Then NPrint "Procesorek to masz slaby jak na dzisiejsze czasy."
If CPU{}=3 Then NPrint "Procesor jest ok, ale przydalby sie lepszy..."
If CPU{}=4 Then NPrint "Nareszcie jakas dopalona Amiga..."
If CPU{}=6 Then NPrint "Nareszcie jakis porzadny dopal..."

  offt=WTopOff
  offl=WLeftOff
  offd=WindowHeight-(InnerHeight+offt)
  offr=WindowWidth-(InnerWidth+offl)
  VWait 100

  CloseWindow 4
Return

.

.LISTUJ_MENU
 ClearList Lista_Menu()
 ILOSC_POZYCJI_W_MENU=0

If ENGLISH_LANGUAGE=0
  x=OpenFile(1,"TEKSTY/DATA/MENU_POLSKI.TXT")
Else
  x=OpenFile(1,"TEKSTY/DATA/MENU_ENGLISH.TXT")
EndIf
  FileInput 1
  Belka_ekranu$=Edit$(256)
  Belka_okna$=Edit$(256)

  Repeat
    x=x+1 : Menu$=Edit$(256)
    If Menu$<>"" Then AddItem Lista_Menu() : Lista_Menu()\b=Menu$ : Ilosc_pozycji_w_menu=Ilosc_pozycji_w_menu+1
    Pliki$(x)=Edit$(256)
    ILOSC_POZYCJI_W_MENU=ILOSC_POZYCJI_W_MENU+1
  Until Loc(1)=Lof(1)
  CloseFile 1

  ILOSC_POZYCJI_W_MENU=ILOSC_POZYCJI_W_MENU-1


  GTChangeList 1,10,Lista_Menu()
  WSKAZANY=0 : WSKAZANY_TEXT=0
Return

.MENU
  Activate 0
  MENU=1
  Use Window 1 : WTitle "Menu",Belka_ekranu$
  Use Window 0 : Use IntuiFont 2
  Gosub CZAS

  BitOkno=0 : Numer_tla=2 : Gosub PATTERN
  il_lini=(ywin-4)/CzcionkaY(2) : illi$=Str$(il_lini) : i=Instr(illi$,".") : il_lini=Val(Left$(illi$,i))

  WBox offl+15,offt+20,offl+614,offt+23+(il_lini*CzcionkaY(2)),0
  AttachGTList 1,0

  GTSetAttrs 1,10,#GTLV_Selected,WSKAZANY_TEXT

  GTBevelBox 1,offl,offt,InnerWidth,InnerHeight,0
  Gosub CZYSC_ZMIENNE : Tytul_artykulu$="Menu" : Aktualna_strona=1

  Repeat : ev = WaitEvent : Gosub CZAS
  If ev=$40
    Select GadgetHit
      Case 1 ; gora
        If WSKAZANY_TEXT<ILOSC_POZYCJI_W_MENU
          WSKAZANY_TEXT=WSKAZANY_TEXT+1
          GTSetAttrs 1,10,#GTLV_Selected,WSKAZANY_TEXT,#GTLV_MakeVisible,WSKAZANY_TEXT
          Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)
          Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"
          Gosub KROTKI_OPIS_ART
        EndIf
      Case 2 ; dol
        If WSKAZANY_TEXT>0
          WSKAZANY_TEXT=WSKAZANY_TEXT-1
          GTSetAttrs 1,10,#GTLV_Selected,WSKAZANY_TEXT,#GTLV_MakeVisible,WSKAZANY_TEXT
          Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)
          Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"
          Gosub KROTKI_OPIS_ART
        EndIf
;      Case 4 : WTitle "Bardziej w lewo sie nie da !!!",Belka_ekranu$
;      Case 5 : WTitle "Kliknij sobie w pysk !!!",Belka_ekranu$
;      Case 3 : WTitle "Przecierz jestes w indexie !!!",Belka_ekranu$
      Case 6 : Gosub MUZYKA_PREFS
      Case 7 : Gosub PREFS
      Case 10
        Wskazany_podstawa$=Pliki$(EventCode)
        Wskazany_tekst$="TEKSTY/"+Pliki$(EventCode)+".TXT"
        Gosub KROTKI_OPIS_ART
        If WSKAZANY_TEXT=EventCode AND NOT Left$(Wskazany_podstawa$,2)="--"
         If Exists(Wskazany_tekst$) Then DetachGTList 1 : Gosub WYSWIETL_TEKST : Goto POCZATEK
        EndIf
        WSKAZANY=EventCode
        WSKAZANY_TEXT=WSKAZANY
      Case 12
        ENGLISH_LANGUAGE=EventCode : Gosub LISTUJ_MENU
        GTSetAttrs 1,10,#GTLV_Selected,WSKAZANY_TEXT,#GTLV_MakeVisible,WSKAZANY_TEXT
    End Select
  EndIf

  If ev=#IDCMP_RAWKEY
    Select EventCode
      Case 76 ; gora
        If WSKAZANY_TEXT>0
          WSKAZANY_TEXT=WSKAZANY_TEXT-1
          GTSetAttrs 1,10,#GTLV_Selected,WSKAZANY_TEXT,#GTLV_MakeVisible,WSKAZANY_TEXT
          Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)
          Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"
          Gosub KROTKI_OPIS_ART
        EndIf
      Case 77 ; dol
        If WSKAZANY_TEXT<ILOSC_POZYCJI_W_MENU
          WSKAZANY_TEXT=WSKAZANY_TEXT+1
          GTSetAttrs 1,10,#GTLV_Selected,WSKAZANY_TEXT,#GTLV_MakeVisible,WSKAZANY_TEXT
          Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)
          Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"
          Gosub KROTKI_OPIS_ART
        EndIf
      Case 68 ; enter
        Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)
        Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"

        If NOT Left$(Wskazany_podstawa$,2)="--"
         If Exists(Wskazany_tekst$) Then DetachGTList 1 : Gosub WYSWIETL_TEKST : Goto POCZATEK
        EndIf
    End Select
  EndIf
  Until ev=$200 AND EventWindow = 1
  Gosub WYJSCIE

Return

.KROTKI_OPIS_ART
  ClearList Krotki_opis()
  If Exists("TEKSTY/"+Wskazany_podstawa$+".SHR")<>0
    x=OpenFile(1,"TEKSTY/"+Wskazany_podstawa$+".SHR")
    If NOT x=0
    FileInput 1
    Repeat
      AddItem Krotki_opis() : Krotki_opis()\b=Edit$(256)
    Until Loc(1)=Lof(1)
    CloseFile 1
    GTChangeList 1,11,Krotki_opis()
    EndIf
  EndIf
Return
.
.WYSWIETL_TEKST
  Activate 1 : MENU=0
  ROZPAKOWANE$="RAM:AD_TMP/ANTYDRESIARZ-ARTEK"
If Exists(ROZPAKOWANE$) Then x=DeleteFile_(ROZPAKOWANE$) : If x=0 Then x=Close_ (plk.l) : plk.l=0 :x=DeleteFile_(ROZPAKOWANE$)
  DO_ROZPAKOWANIA$=Wskazany_tekst$ : Gosub ROZPAKUJ : Wskazany_tekst$=ROZPAKOWANE$
  If Wskazany_tekst$=DO_ROZPAKOWANIA$
    x=CopyFile (DO_ROZPAKOWANIA$,"RAM:AD_TMP/ANTYDRESIARZ-ARTEK")
    Wskazany_tekst$="RAM:AD_TMP/ANTYDRESIARZ-ARTEK"
  EndIf

  If OBRAZKI_RAM=1
    For x=1 To 255
      x$=Left$("000",3-Len(Str$(x)))+Str$(x)
      If Exists("RAM:AD_TMP/"+x$) Then DeleteFile_("RAM:AD_TMP/"+x$)
      If ENGLISH_LANGUAGE=1 Then WP$=Left$(Wskazany_podstawa$,Len(Wskazany_podstawa$)-2)
      If ENGLISH_LANGUAGE=0 Then WP$=Wskazany_podstawa$
      Rx$="RYSUNKI/"+WP$+"/"+x$ : WP$=""
      If Exists(Rx$) Then CopyFile Rx$,"RAM:AD_TMP/"+x$
    Next x
  EndIf


LOK$=Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)+Chr$(0)
plk.l=Open_ (Wskazany_tekst$,1005)
If plk.l=0
  Request GetCatStr{catalog.l,300,"Blad"},GetCatStr{catalog.l,301,"Nie moge odczytac artykulu !"},GetCatStr{catalog.l,302,"Ok"}
  Return
EndIf
x=FSeek_{plk.l,0}

  Dlugosc_tekstu.l=FileSize(Wskazany_tekst$)

  Tytul_artykulu$=Edit_ {plk.l}
  Numer_tla=1 : Znak_zmiany$=ZZmiany{Edit_{plk.l},0} : Gosub ZNAK_ZMIANY
  WindowFont 1 : NR_Czcionki=1 : STYL_Czcionki=0
  BitOkno=0 : Gosub PATTERN

  Pozycja_strony.l(Aktualna_strona)=Loc_{plk.l}
  Kolor_strony(Aktualna_strona)=Kolor_napisu
  Czcionka_strony(Aktualna_strona)=NR_Czcionki
  Styl_czcionki(Aktualna_strona)=STYL_Czcionki

POCZATEK_NOWEJ_STRONY:
  Gosub FREE_ANIM

  Use Window 1 : WTitle Tytul_artykulu$,Belka_ekranu$
  Use Window 0
  Gosub CZAS
  WLocate 0,0 : WJam 0

For i=0 To 1000
 Txt$=Edit_{plk.l} : Use Window 0 : Dlugosc_linii=Len(Txt$)

  A=0 : B=0 : POZ=0 : POZ_PETLA=0
  POCZATEK_WYSWIETLANIA:
  Repeat
    POZ=B
    A=Instr(Txt$,Chr$($1B),B)
    B=Instr(Txt$,Chr$($1B),A+1)

    If A=>1 AND B>1
      If POZ_PETLA=0 Then Print Left$(Txt$,A-1) : POZ_PETLA=1
      Znak_zmiany$=ZZmiany{Txt$,A} : Gosub ZNAK_ZMIANY : Print Mid$(Txt$,A+DLUG_ZZ,B-(A+DLUG_ZZ)) : Txt$=Mid$(Txt$,B) : B=1
      Goto POCZATEK_WYSWIETLANIA
    EndIf

    If A=>1 AND B=0 AND A+4<>Len(Txt$)
      If POZ_PETLA=0 Then Print Left$(Txt$,A-1) : POZ_PETLA=1
      Znak_zmiany$=ZZmiany{Txt$,A} : Gosub ZNAK_ZMIANY
        If WCursY+CzcionkaY(NR_Czcionki)<InnerHeight
          Print Mid$(Txt$,A+DLUG_ZZ,Len(Txt$)-A)
        Else
          x=FSeek_{plk.l,Loc_{plk.l}-Len(Mid$(Txt$,A+DLUG_ZZ,Len(Txt$)-A))-1}
        EndIf
      Goto KONIEC_WYSWIETLANIA
    EndIf

    If A=>1 AND B=0 AND A+Len(ZZmiany{Txt$,A})-1=Len(Txt$)
    Znak_zmiany$=ZZmiany{Txt$,A} : Print Left$(Txt$,Len(Txt$)-Len(Znak_zmiany$)) : Gosub ZNAK_ZMIANY : Goto KONIEC_WYSWIETLANIA
    EndIf

    If A=0 AND B=0
       Print Mid$(Txt$,POZ,Len(Txt$)-POZ) : Goto KONIEC_WYSWIETLANIA
    EndIf

  Until B=0
  KONIEC_WYSWIETLANIA:
  NPrint ""
  If WCursY+CzcionkaY(NR_Czcionki)>InnerHeight Then Gosub PETLA_WYSWIETLANIA
Next i
  Gosub PETLA_WYSWIETLANIA
  x=Close_(plk.l) : plk.l=0
Return

.PETLA_WYSWIETLANIA

  Aktualna_strona=Aktualna_strona+1
  Pozycja_strony.l(Aktualna_strona)=Loc_{plk.l}
  Kolor_strony(Aktualna_strona)=Kolor_napisu
  Czcionka_strony(Aktualna_strona)=NR_Czcionki
  Styl_czcionki(Aktualna_strona)=STYL_Czcionki

  Repeat
  Gosub DISPLAY_ANIM
  Aktualna_strona=Aktualna_strona-1 : Gosub CZAS : Aktualna_strona=Aktualna_strona+1
  VWait

  ev = Event

  If ev = 1024
    Select EventCode
      Case 78 ; prawo
        If Eof_{plk.l,Dlugosc_tekstu.l}=0
          BitOkno=0 : Gosub PATTERN
          Goto POCZATEK_NOWEJ_STRONY
        EndIf
      Case 79 ; lewo
        If Aktualna_strona>2
          BitOkno=0 : Gosub PATTERN
          Aktualna_strona=Aktualna_strona-2
          x=FSeek_{plk.l,Pozycja_strony.l(Aktualna_strona)}
          WColour Kolor_strony(Aktualna_strona)
          WindowFont Czcionka_strony(Aktualna_strona),Styl_czcionki(Aktualna_strona)
          Goto POCZATEK_NOWEJ_STRONY
        EndIf
      Case 76 ; gora
        WSKAZANY_TEXT=WSKAZANY_TEXT-1
        If WSKAZANY_TEXT=0 Then WSKAZANY_TEXT=ILOSC_POZYCJI_W_MENU
        Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)

        If NOT Left$(Wskazany_podstawa$,2)="--"
          Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"
          Aktualna_strona=1 : Gosub WYSWIETL_TEKST
        Else
          WSKAZANY_TEXT=WSKAZANY_TEXT-1 : If WSKAZANY_TEXT=-1 Then WSKAZANY_TEXT=ILOSC_POZYCJI_W_MENU-1
          Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"
          Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)
          Aktualna_strona=1 : Gosub WYSWIETL_TEKST
        EndIf
      Case 77 ; dol
        WSKAZANY_TEXT=WSKAZANY_TEXT+1
        If WSKAZANY_TEXT=ILOSC_POZYCJI_W_MENU+1 Then WSKAZANY_TEXT=0
        Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)

        If NOT Left$(Wskazany_podstawa$,2)="--"
          Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"
          Aktualna_strona=1 : Gosub WYSWIETL_TEKST
        Else
          WSKAZANY_TEXT=WSKAZANY_TEXT+1
          Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"
          Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)
          Aktualna_strona=1 : Gosub WYSWIETL_TEKST
        EndIf
      Case 64
        x=Close_(plk.l) : plk.l=0
        Goto POCZATEK
    End Select
  EndIf

  If ev=$40
    Select GadgetHit
      Case 1 ; dol
        WSKAZANY_TEXT=WSKAZANY_TEXT+1
        If WSKAZANY_TEXT=ILOSC_POZYCJI_W_MENU+1 Then WSKAZANY_TEXT=0
        Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)

        If NOT Left$(Wskazany_podstawa$,2)="--"
          Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"
          Aktualna_strona=1 : Gosub WYSWIETL_TEKST
        Else
          WSKAZANY_TEXT=WSKAZANY_TEXT+1
          Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"
          Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)
          Aktualna_strona=1 : Gosub WYSWIETL_TEKST
        EndIf
      Case 2 ; gora
        WSKAZANY_TEXT=WSKAZANY_TEXT-1
        If WSKAZANY_TEXT=0 Then WSKAZANY_TEXT=ILOSC_POZYCJI_W_MENU

        Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)

        If NOT Left$(Wskazany_podstawa$,2)="--"
          Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"
          Aktualna_strona=1 : Gosub WYSWIETL_TEKST
        Else
          WSKAZANY_TEXT=WSKAZANY_TEXT-1
          If WSKAZANY_TEXT=-1 Then WSKAZANY_TEXT=ILOSC_POZYCJI_W_MENU-1
          Wskazany_tekst$="TEKSTY/"+Pliki$(WSKAZANY_TEXT)+".TXT"
          Wskazany_podstawa$=Pliki$(WSKAZANY_TEXT)
          Aktualna_strona=1 : Gosub WYSWIETL_TEKST
        EndIf
      Case 4
      If Aktualna_strona>2
        BitOkno=0 : Gosub PATTERN
        Aktualna_strona=Aktualna_strona-2
        x=FSeek_{plk.l,Pozycja_strony.l(Aktualna_strona)}
        WColour Kolor_strony(Aktualna_strona)
        WindowFont Czcionka_strony(Aktualna_strona),Styl_czcionki(Aktualna_strona)
        Goto POCZATEK_NOWEJ_STRONY
      EndIf
      Case 5
      If Eof_{plk.l,Dlugosc_tekstu.l}=0
        BitOkno=0 : Gosub PATTERN
        Goto POCZATEK_NOWEJ_STRONY
      EndIf
      Case 3
        x=Close_(plk.l) : plk.l=0 : Goto POCZATEK
      Case 6
        Gosub MUZYKA_PREFS
      Case 7
        Gosub PREFS
    End Select
  EndIf

  If ev=#IDCMP_MOUSEBUTTONS
    Select EventCode
      Case 105
        x=Close_(plk.l) : plk.l=0
        Goto POCZATEK
    End Select
  EndIf

  Until ev=$200 AND EventWindow = 1
  x=Close_(plk.l) : plk.l=0 : Gosub WYJSCIE
Return

.ZNAK_ZMIANY
  DLUG_ZZ=Len(Znak_zmiany$)
  Litera$=Mid$(Znak_zmiany$,DLUG_ZZ-1,1)

  If Litera$="m"
    Kod=Val(Mid$(Znak_zmiany$,3,2))
    Kod$=Mid$(Znak_zmiany$,3,2)

    If Kod=>30 AND Kod<50
      Kolor_napisu=Kod-30
      WColour Kod-30
    EndIf

    If Kod=>20 AND Kod<30
      WindowFont (Kod-20)+1 : NR_Czcionki=(Kod-20)+1
    EndIf

    ;1-podkresl,2-Bold,3-podkbold,4-kursywa,5-podkkurs,6-Boldkurs,7-podboldkur
    If Kod=0 Then WindowFont NR_Czcionki,0 : STYL_Czcionki=0
    If Kod=1 Then WindowFont NR_Czcionki,1 : STYL_Czcionki=1
    If Kod=2 Then WindowFont NR_Czcionki,2 : STYL_Czcionki=2
    If Kod=3 Then WindowFont NR_Czcionki,4 : STYL_Czcionki=4
    If Kod=4 Then WindowFont NR_Czcionki,3 : STYL_Czcionki=3
    If Kod=5 Then WindowFont NR_Czcionki,5 : STYL_Czcionki=5
    If Kod=6 Then WindowFont NR_Czcionki,6 : STYL_Czcionki=6
    If Kod=7 Then WindowFont NR_Czcionki,7 : STYL_Czcionki=7
    If WCursY+CzcionkaY(NR_Czcionki)>InnerHeight Then x=FSeek_{plk.l,Loc_{plk.l}-Len(Txt$)-1} : Gosub PETLA_WYSWIETLANIA
EndIf


  If Litera$="P"
    Kod$=Mid$(Znak_zmiany$,3,2) : Pozycja$=Mid$(Znak_zmiany$,5,1)

    Rysunek=Val("$"+Kod$) : Rysunek$=Left$("000",3-Len(Str$(Rysunek)))+Str$(Rysunek)
    If OBRAZKI_RAM=0
      If ENGLISH_LANGUAGE=1 Then WP$=Left$(Wskazany_podstawa$,Len(Wskazany_podstawa$)-2)
      If ENGLISH_LANGUAGE=0 Then WP$=Wskazany_podstawa$
      Rysunek$="RYSUNKI/"+WP$+"/"+Rysunek$
      WP$=""
    Else
      Rysunek$="RAM:AD_TMP/"+Rysunek$
    EndIf

    If ILBMInfo (Rysunek$)
      Szerokosc=ILBMWidth : Wysokosc=ILBMHeight : Bitplany=ILBMDepth
      If Bitplany<=5 Then Bitplany=6
      If SKALUJ_OBRAZKI=1
        If WCursY+(Wysokosc*2)>InnerHeight Then x=FSeek_{plk.l,Loc_{plk.l}-Dlugosc_linii-1} : Gosub PETLA_WYSWIETLANIA
      Else
        If WCursY+Wysokosc>InnerHeight Then x=FSeek_{plk.l,Loc_{plk.l}-Dlugosc_linii-1} : Gosub PETLA_WYSWIETLANIA
      EndIf


      InitBank 1,FileSize(Rysunek$),65536 : BLoad Rysunek$,Bank(1)

      x=DecodeIFFPalette{1,Bank(1),96,False,False}
      BitMap 1,Szerokosc,Wysokosc,Bitplany : DecodeILBM 1,Bank(1)
      FreeBank 1
      If GRAYSCALE=1 Then x=Greyscale{1,95,(2^Bitplany)-1}
      Use Palette 1

    If SKALUJ_OBRAZKI=1
      For i=0 To (Wysokosc*2)-2 Step 2
        BitMaptoWindow 1,0,0,i/2,WCursX+offl,WCursY+offt+i,Szerokosc,1
        BitMaptoWindow 1,0,0,i/2,WCursX+offl,WCursY+offt+i+1,Szerokosc,1
      Next i
      Free BitMap 1
    Else
      BitMaptoWindow 1,0,0,0,WCursX+offl,WCursY+offt,Szerokosc,Wysokosc
      Free BitMap 1
    EndIf

    If Pozycja$="b" Then WLocate WCursX+Szerokosc,WCursY

    If INTERLACE_FONTS=1
      If Pozycja$="c" Then WLocate WCursX+Szerokosc,WCursY+Wysokosc*2
      If Pozycja$="d" Then WLocate WCursX,WCursY+Wysokosc*2
    Else
      If Pozycja$="c" Then WLocate WCursX+Szerokosc,WCursY+Wysokosc
      If Pozycja$="d" Then WLocate WCursX,WCursY+Wysokosc
    EndIf

    EndIf
  EndIf

  If Litera$="S"
    Kod$=Mid$(Znak_zmiany$,3,2) : Pozycja$=Mid$(Znak_zmiany$,5,1)

    Rysunek=Val("$"+Kod$) : Rysunek$=Left$("000",3-Len(Str$(Rysunek)))+Str$(Rysunek)
    If OBRAZKI_RAM=0
      If ENGLISH_LANGUAGE=1 Then WP$=Left$(Wskazany_podstawa$,Len(Wskazany_podstawa$)-2)
      If ENGLISH_LANGUAGE=0 Then WP$=Wskazany_podstawa$
      Rysunek$="RYSUNKI/"+WP$+"/"+Rysunek$
      WP$=""
    Else
      Rysunek$="RAM:AD_TMP/"+Rysunek$
    EndIf

    If ILBMInfo (Rysunek$)
       Szerokosc=ILBMWidth : Wysokosc=ILBMHeight : Bitplany=ILBMDepth
      If Bitplany<=5 Then Bitplany=6

      If SKALUJ_OBRAZKI=1
        If WCursY+(Wysokosc*2)>InnerHeight Then x=FSeek_{plk.l,Loc_{plk.l}-Dlugosc_linii-1} : Gosub PETLA_WYSWIETLANIA
      Else
        If WCursY+Wysokosc>InnerHeight Then x=FSeek_{plk.l,Loc_{plk.l}-Dlugosc_linii-1} : Gosub PETLA_WYSWIETLANIA
      EndIf

      InitShape 50,Szerokosc,Wysokosc,Bitplany
      LoadShape 50,Rysunek$,2

      If AGA=1 AND Bitplany>5 Then x=CopyPalette{2,1,96,(2^MAG_Bitplany)-1,96}
      If GRAYSCALE=1 Then x=Greyscale{1,95,(2^Bitplany)-1}
      Use Palette 1

      WBlit 50,WCursX+offl,WCursY+offt
      Free Shape 50

;    If SKALUJ_OBRAZKI=1
;      For i=0 To (Wysokosc*2)-2 Step 2
;        BitMaptoWindow 1,0,0,i/2,WCursX+offl,WCursY+offt+i,Szerokosc,1
;        BitMaptoWindow 1,0,0,i/2,WCursX+offl,WCursY+offt+i+1,Szerokosc,1
;      Next i
;      Free BitMap 1
;    Else
;      BitMaptoWindow 1,0,0,0,WCursX+offl,WCursY+offt,Szerokosc,Wysokosc
;      Free BitMap 1
;    EndIf



    If Pozycja$="b" Then WLocate WCursX+Szerokosc,WCursY

    If INTERLACE_FONTS=1
      If Pozycja$="c" Then WLocate WCursX+Szerokosc,WCursY+Wysokosc*2
      If Pozycja$="d" Then WLocate WCursX,WCursY+Wysokosc*2
    Else
      If Pozycja$="c" Then WLocate WCursX+Szerokosc,WCursY+Wysokosc
      If Pozycja$="d" Then WLocate WCursX,WCursY+Wysokosc
    EndIf

    EndIf
  EndIf



  If Litera$="x"
    Kod=Val(Mid$(Znak_zmiany$,3,2))
    Kod$=Mid$(Znak_zmiany$,3,2)

    WLocate Val("$"+Kod$),WCursY
  EndIf

  If Litera$="y"
    Kod$=Mid$(Znak_zmiany$,3,2)

    If Kod$="NP"
      WLocate WCursX,InnerHeight+CzcionkaY(NR_Czcionki)
    Else
      WLocate WCursX,Val("$"+Kod$)
    EndIf
  EndIf

  If Litera$="X"
    Kod$=Mid$(Znak_zmiany$,3,2)

    WLocate Val("$"+Kod$)*5,WCursY
  EndIf

  If Litera$="Y"
    Kod$=Mid$(Znak_zmiany$,3,2)

    WLocate WCursX,Val("$"+Kod$)*5
  EndIf

  If Litera$="z"
    Kod=Val(Mid$(Znak_zmiany$,3,2))

    Ladowany_modul$=Str$(Kod) : Gosub LADUJ_MODUL
  EndIf

  If Litera$="b"
    Kod$=Mid$(Znak_zmiany$,3,2)
    Numer_tla=Val("$"+Kod$)
  EndIf

  If Litera$="l"
    Kod$=Mid$(Znak_zmiany$,3,2)
    If Kod$="HR"
      WBox offl+5,WCursY+offt+4,640-offl-offl-5,WCursY+offt+4,1
      WBox offl+5,WCursY+offt+5,640-offl-offl-5,WCursY+offt+5,2
      WLocate WCursX,WCursY+6
    EndIf
  EndIf

  If Litera$="R"
    Kod$=Mid$(Znak_zmiany$,3,DLUG_ZZ-3)
    If Kod$="CENTER"
      TxtDlug$=Right$(Txt$,Len(Txt$)-DLUG_ZZ)
      WLocate (InnerWidth-TextLength_(RastPort(0),&TxtDlug$,Len(TxtDlug$)))/2,WCursY : TxtDlug$=""
    EndIf
  EndIf

  If Litera$="h"
    If Mid$(Znak_zmiany$,3,5)="LINE="
      x=Val("$"+Mid$(Znak_zmiany$,8,2))
      Wline WCursX+offl,WCursY+offt+3,WCursX+offl+x*8,WCursY+offt+3,1
      Wline WCursX+offl,WCursY+offt+4,WCursX+offl+x*8,WCursY+offt+4,2
    EndIf
  EndIf

  If Litera$="A"

  DEFTYPE.b dbuffer

    Kod$=Mid$(Znak_zmiany$,3,2)
    ALoop$=Mid$(Znak_zmiany$,5,2)
    AWait=Val("$"+Mid$(Znak_zmiany$,7,2))
    Kursor$=Mid$(Znak_zmiany$,9,1)

    Rysunek=Val("$"+Kod$)
    Rysunek$=Left$("000",3-Len(Str$(Rysunek)))+Str$(Rysunek)
    If OBRAZKI_RAM=0
      If ENGLISH_LANGUAGE=1 Then WP$=Left$(Wskazany_podstawa$,Len(Wskazany_podstawa$)-2)
      If ENGLISH_LANGUAGE=0 Then WP$=Wskazany_podstawa$

      Rysunek$="RYSUNKI/"+WP$+"/"+Rysunek$ : WP$=""
    Else
      Rysunek$="RAM:AD_TMP/"+Rysunek$
    EndIf

    If ILBMInfo (Rysunek$)
      Szerokosc=ILBMWidth
      Wysokosc=ILBMHeight
      If SKALUJ_OBRAZKI=1
        If WCursY+(Wysokosc*2)>InnerHeight Then x=FSeek_{plk.l,Loc_{plk.l}-Dlugosc_linii-1} : Gosub PETLA_WYSWIETLANIA
      Else
        If WCursY+Wysokosc>InnerHeight Then x=FSeek_{plk.l,Loc_{plk.l}-Dlugosc_linii-1} : Gosub PETLA_WYSWIETLANIA
      EndIf

      Bitplany=ILBMDepth : If Bitplany<=5 Then Bitplany=6

      InitBank 10,FileSize(Rysunek$),65536 : x=BLoad (Rysunek$,Bank(10))
      BitMap 10,Szerokosc,Wysokosc,Bitplany
      BitMap 11,Szerokosc,Wysokosc,Bitplany ; --- dbuffer
 ;     Use BitMap 10 : BitMapOutput 10

      x=RIAnimInit (Bank(10),10,2)

      If AGA=1 AND Bitplany>5 Then x=CopyPalette{2,1,96,(2^MAG_Bitplany)-1,96}
      If GRAYSCALE=1 Then x=Greyscale{1,95,(2^Bitplany)-1}
      Use Palette 1

      ANIMX=WCursX+offl : ANIMY=WCursY+offt : ANIM_WIDTH=Szerokosc : ANIM_HEIGHT=Wysokosc
      ANIM_FRAMES=RIAnimFrameCount : ANIM_PLAY=True : ANIM_SKOK=SkokAnimki {ANIM_HEIGHT}

      CopyBitMap 10,11    ; --dbuffer

    If SKALUJ_OBRAZKI=1
      For i=0 To (ANIM_HEIGHT*2)-2 Step 2
        BitMaptoWindow 10,0,0,i/2,ANIMX,ANIMY+i,ANIM_WIDTH,1
        BitMaptoWindow 10,0,0,i/2,ANIMX,ANIMY+i+1,ANIM_WIDTH,1
      Next i
      Free BitMap 1
    Else

      BitMaptoWindow 10,0,0,0,ANIMX,ANIMY,ANIM_WIDTH,ANIM_HEIGHT
      Free BitMap 1
    EndIf

;    Use BitMap 10 : BitMapOutput 10
    dbuffer.b=11

    If ALoop$="LP" Then AnimLoop On
    If ALoop$="NL" Then AnimLoop Off


      If Kursor$="b" Then WLocate WCursX+ANIM_WIDTH,WCursY

      If INTERLACE_FONTS=1
        If Kursor$="c" Then WLocate WCursX+ANIM_WIDTH,WCursY+ANIM_HEIGHT*2
        If Kursor$="d" Then WLocate WCursX,WCursY+ANIM_HEIGHT*2
      Else
        If Kursor$="c" Then WLocate WCursX+ANIM_WIDTH,WCursY+ANIM_HEIGHT
        If Kursor$="d" Then WLocate WCursX,WCursY+ANIM_HEIGHT
      EndIf

    EndIf
  EndIf

  If Litera$="x"

  EndIf
Return
.
.DISPLAY_ANIM
If ANIM_PLAY=True

;  BitMapOutput dbuffer
  x=RINextAnimFrame(dbuffer) : ANIM_KLATKA=ANIM_KLATKA+1

  If SKALUJ_OBRAZKI=1
    For i=0 To (ANIM_HEIGHT*2)-2 Step 2
      BitMaptoWindow dbuffer,0,0,i/2,ANIMX,ANIMY+i,ANIM_WIDTH,1
      BitMaptoWindow dbuffer,0,0,i/2,ANIMX,ANIMY+i+1,ANIM_WIDTH,1
    Next i
  Else

;    BitMaptoWindow dbuffer,0,0,0,ANIMX,ANIMY,ANIM_WIDTH,ANIM_HEIGHT
    For i=0 To ANIM_HEIGHT-ANIM_SKOK Step ANIM_SKOK
      BitMaptoWindow dbuffer,0,0,i,ANIMX,ANIMY+i,ANIM_WIDTH,ANIM_SKOK
    Next i
  EndIf

  dbuffer=21-dbuffer

  If AWait>0 Then ResetTimer : Repeat : VWait : Until Timer=>AWait
  If ALoop$="NL" AND ANIM_KLATKA=ANIM_FRAMES-3 Then Gosub FREE_ANIM

EndIf
Return

.FREE_ANIM
ANIMX=0 : ANIMY=0 : ANIM_WIDTH=0: ANIM_HEIGHT=0 : ANIM_FRAMES=0 : ANIM_PLAY=False
ANIM_KLATKA=0 : ANIM_SKOK=0
ALoop$="" : AWait=0
Free BitMap 10
Free BitMap 11
Return
.

.PATTERN
  If AGA=1 : CHIPS$="AGA" : Else : CHIPS$="ECS" : EndIf
  Background$="RAM:AD_TMP/TLO"+Str$(Numer_tla)+".IFF"

  If Exists(Background$)=0
    Use Window BitOkno
    BitMap 1,50,50,8
  Else
  Use Window BitOkno
  InitBank 1,FileSize(Background$),0
  x=BLoad (Background$,Bank(1))
  x=DecodeIFFPalette{2,Bank(1),False,False,True} : ; LoadPalette 2,Background$

  x=ILBMInfo (Background$)
  Bitplany_tla=ILBMDepth
  Szerokosc_tla=ILBMWidth
  Wysokosc_tla=ILBMHeight
  If Bitplany_tla<=8 Then Bitplany_tla=8
  BitMap 1,Szerokosc_tla,Wysokosc_tla,Bitplany_tla
  DecodeILBM 1,Bank(1)

  If AGA=1
    x=CopyPalette{2,1,24,31,24}
  EndIf

  If GRAYSCALE=1 Then x=Greyscale{1,24,31}

  Use Palette 1
  Use BitMap 1

  EndIf

  Ilosc_tel_x=InnerWidth/Szerokosc_tla
  x=Instr(Str$(Ilosc_tel_x),".") : If x>0 Then Ilosc_tel_x=Val(Left$(Str$(Ilosc_tel_x),x))
  Ilosc_tel_y=InnerHeight/Wysokosc_tla
  x=Instr(Str$(Ilosc_tel_y),".") : If x>0 Then Ilosc_tel_y=Val(Left$(Str$(Ilosc_tel_y),x))
 For y=1 To Ilosc_tel_y
    For x=1 To Ilosc_tel_x
      BitMaptoWindow 1,BitOkno,0,0,offl+((x-1)*Szerokosc_tla),offt+((y-1)*Wysokosc_tla),Szerokosc_tla,Wysokosc_tla
    Next x
    Pozostalosc_x=InnerWidth-(Szerokosc_tla*Ilosc_tel_x)
    BitMaptoWindow 1,BitOkno,0,0,offl+Ilosc_tel_x*Szerokosc_tla,offt+((y-1)*Wysokosc_tla),Pozostalosc_x,Wysokosc_tla
 Next y
    Pozostalosc_y=InnerHeight-(Wysokosc_tla*Ilosc_tel_y)
    For x=1 To Ilosc_tel_x
      BitMaptoWindow 1,BitOkno,0,0,offl+((x-1)*Szerokosc_tla),offt+Ilosc_tel_y*Wysokosc_tla,Szerokosc_tla,Pozostalosc_y
    Next x
    BitMaptoWindow 1,BitOkno,0,0,offl+Ilosc_tel_x*Szerokosc_tla,offt+Ilosc_tel_y*Wysokosc_tla,Pozostalosc_x,Pozostalosc_y
    Free BitMap 1
Return

.CZYSC_ZMIENNE
  Wskazany_tekst$=""
  Aktualna_strona=1
  Tytul_artykulu$=""
Return
.
.POKAZ_PANEL
  If AGA=1 : CHIPS$="AGA" : Else : CHIPS$="ECS" : EndIf
  Panel$="RYSUNKI/DATA/"+CHIPS$+"/PANEL.IFF"
  InitBank 1,FileSize(Panel$),0 : x=BLoad (Panel$,Bank(1)) : x=DecodeIFFPalette{4,Bank(1),False,False,True}
  ;LoadPalette 4,Panel$
  x=ILBMInfo (Panel$)
  Bitplany_panelu=ILBMDepth
  Szerokosc_panelu=ILBMWidth
  Wysokosc_panelu=ILBMHeight
  BitMap 5,Szerokosc_panelu,Wysokosc_panelu,Bitplany_panelu : DecodeILBM 5,Bank(1)
  Szerokosc_ikony=Szerokosc_panelu/5 : Wysokosc_ikony=Wysokosc_panelu/2

  Use BitMap 5
  GetaShape 1,35,12,35,14
  GetaShape 2,121,2,34,16
  GetaShape 3,206,1,27,26
  GetaShape 4,276,11,35,15
  GetaShape 5,386,6,31,16
  GetaShape 6,496,1,33,26
  GetaShape 7,570,3,41,24

  GetaShape 08,035,40,35,14
  GetaShape 09,121,30,34,16
  GetaShape 10,206,29,27,26
  GetaShape 11,276,39,35,15
  GetaShape 12,386,34,31,16
  GetaShape 13,496,29,33,26
  GetaShape 14,570,31,41,24

  ShapeGadget 0,offl+35,offt+12,0,1,1,8
  ShapeGadget 0,offl+121,offt+2,0,2,2,9
  ShapeGadget 0,offl+206,offt+1,0,3,3,10
  ShapeGadget 0,offl+276,offt+11,0,4,4,11
  ShapeGadget 0,offl+386,offt+6,0,5,5,12
  ShapeGadget 0,offl+496,offt+1,0,6,6,13
  ShapeGadget 0,offl+570,offt+3,0,7,7,14
Return

.OTWORZ_PANEL
x=CopyPalette{4,1,32,95,32}

  If GRAYSCALE=1 Then x=Greyscale{1,32,95}
  Use Palette 1

  x=(640-Szerokosc_panelu-offl-offr)/2
  y=Wysokosc_Ekranu-(offt+2+(Wysokosc_panelu/2))

  Window 1,x,y,Szerokosc_panelu+offl+offr,Wysokosc_ikony+offt+offd,$4+$2+$8+#WFLG_RMBTRAP,"Panel",0,0,0
  BitMaptoWindow 5,1,0,0,offl,offt,Szerokosc_panelu,Wysokosc_ikony
  Free BitMap 5
  AttachGTList 0,1
;Belka_panelu2$=GetCatStr{catalog.l,7002,"% artykulu."}
;Belka_panelu$=GetCatStr{catalog.l,7000,"Panel kontrolny."}
;Belka_panelu$=Belka_panelu$+"          "+GetCatStr{catalog.l,7001,"Przeczytane:"}+" "
;Ilosc_spacji=((WindowWidth-50)-(Len(Belka_panelu$+Belka_panelu2$)+2)*8)/8-9

  Activate 1
Return
.
.WCZYTAJ_CZCIONKI
For x=1 To 10
    If INTERLACE_FONTS=1 AND x=4 Then LoadFont x,Czcionka$(x),CzcionkaY(x)*2 : CzcionkaY(x)=CzcionkaY(x)*2 : Goto CZ_INT
    If INTERLACE_FONTS=1 AND x=6 Then LoadFont x,Czcionka$(x),CzcionkaY(x)*2 : CzcionkaY(x)=CzcionkaY(x)*2 : Goto CZ_INT
    If Czcionka$(x)<>"" Then LoadFont x,Czcionka$(x),CzcionkaY(x)
CZ_INT:
Next x
Return

.PREFS
Use IntuiFont 1
If INTERLACE_FONTS=1 Then CzcionkaY(6)=CzcionkaY(6)/2
If INTERLACE_FONTS=1 Then CzcionkaY(4)=CzcionkaY(4)/2


Window 2,105,11,434,167 + offt,14,GetCatStr{catalog.l,1101,"Preferencje"},0,1
Use Window 2 : Activate 2 : WindowFont 0 : BitOkno=2 : Gosub PATTERN : AttachGTList 2,2

If OTWIERAC_NA_WB=1 Then GTToggle 2,23,On : Redraw 2,23
If INTERLACE_FONTS=1 Then GTToggle 2,24,On : Redraw 2,24
If SKALUJ_OBRAZKI=1 Then GTToggle 2,25,On : Redraw 2,25
If GRAYSCALE=1 Then GTToggle 2,26,On : Redraw 2,26
If OBRAZKI_RAM=1 Then GTToggle 2,27,On : Redraw 2,27
GTSetString 2,21,Czcionka$(PREFS_FONT)
GTSetInteger 2,22,CzcionkaY(PREFS_FONT)

GTBevelBox 2,offl,0+offt,426,12,0
GTBevelBox 2,offl,45+offt,426,12,0
GTBevelBox 2,offl,135+offt,426,12,0
GTBevelBox 2,offl,147+offt,426,18,0
GTBevelBox 2,offl,12+offt,426,33,0
GTBevelBox 2,offl,57+offt,426,78,0

WJam 0 : WColour 2,0
WLocate 115,47  : Print GetCatStr{catalog.l,1200,"Preferencje wyswietlania"}
WLocate 132,2   : Print GetCatStr{catalog.l,1201,"Preferencje czcionek"}
WLocate 137,137 : Print GetCatStr{catalog.l,1202,"Preferencje kolorow"}

  Repeat : ev = WaitEvent AND EventWindow=2 : Gosub CZAS

  If ev=$40
    Select GadgetHit

    Case 20
      PREFS_FONT=EventCode+1
      GTSetString 2,21,Czcionka$(PREFS_FONT)
      GTSetInteger 2,22,CzcionkaY(PREFS_FONT)
    Case 21
      Czcionka$(PREFS_FONT)=GTGetString(2,21)
    Case 22
      CzcionkaY(PREFS_FONT)=GTGetInteger(2,22)
    Case 23
      OTWIERAC_NA_WB=EventCode
    Case 24
      INTERLACE_FONTS=EventCode
    Case 25
      SKALUJ_OBRAZKI=EventCode
    Case 26
      GRAYSCALE=EventCode
    Case 27
      OBRAZKI_RAM=EventCode
    Case 28
      DEFTYPE.l ScrReq.l
      ScrReq.l= RTEZScreenModeRequest(GetCatStr{catalog.l,2000,"Wybierz tryb ekranu"},$80000051)
      If ScrReq.l<>0 Then ScrMode.l= Peek.l (ScrReq.l)
    Case 29
      Gosub PREFS_KOLORY
    End Select
  EndIf

  If ev=$200 AND EventWindow=1 Then CloseWindow2 : Gosub WYJSCIE
  Until ev=$200 AND EventWindow=2
  DetachGTList 2
  CloseWindow 2

  If Exists("PREFS.PRE") Then DeleteFile_ "PREFS.PRE"
  x=OpenFile(2,"PREFS.PRE")
  FileOutput 2
  For x=1 To 10
    NPrint Czcionka$(x) : NPrint CzcionkaY(x)
  Next x
  NPrint OTWIERAC_NA_WB
  NPrint INTERLACE_FONTS
  NPrint SKALUJ_OBRAZKI
  NPrint GRAYSCALE
  NPrint OBRAZKI_RAM
  NPrint "$",Hex$(ScrMode.l)
 CloseFile 2
 WColour Kolor_napisu
 If INTERLACE_FONTS=1 Then CzcionkaY(6)=CzcionkaY(6)/2
 If INTERLACE_FONTS=1 Then CzcionkaY(4)=CzcionkaY(4)/2
Return

.PREFS_KOLORY
LoadPalette 4,"RYSUNKI/DATA/PALETA.CMA"
x=CopyPalette{4,1,8,23,8} : Use Palette 1
Free Palette 4

AddIDCMP #IDCMP_INTUITICKS+#IDCMP_MOUSEMOVE
AddIDCMP $10

Window 4,143,11,351,79 + offt,14,GetCatStr{catalog.l,3000,"Ustawianie kolorow tekstu"},0,1
BitOkno=4 : Gosub PATTERN
WindowFont 0
AttachGTList 4,4

GTBevelBox 4,offl,offt,343,77,0

WJam 0
WColour 8,0
WLocate 6,64 : Print GetCatStr{catalog.l,3005,"Przyklad napisu w kolorze kolorowym"}
RGB_KOLOR=8 : R=Red(RGB_KOLOR) : B=Blue(RGB_KOLOR) : G=Green(RGB_KOLOR)

  Repeat
    ev=0 : ev=WaitEvent

    If ev=$20
      Repeat
        Select GadgetHit
          Case 0
            If EventCode>0 Then R=EventCode-1
          Case 1
            If EventCode>0 Then G=EventCode-1
          Case 2
            If EventCode>0 Then B=EventCode-1
        End Select
        PalRGB 1,RGB_KOLOR,R,G,B : Use Palette 1
      Until WaitEvent=$40
    EndIf


    If ev=$40
    Select GadgetHit
      Case 3
        RGB_KOLOR=EventCode+8
        WColour RGB_KOLOR,0 : WLocate 6,64 : Print GetCatStr{catalog.l,3005,"Przyklad napisu w kolorze kolorowym"}
        GTSetAttrs 4,0,#GTSL_Level,Red(RGB_KOLOR)+1 : R=Red(RGB_KOLOR)
        GTSetAttrs 4,1,#GTSL_Level,Green(RGB_KOLOR)+1 : G=Green(RGB_KOLOR)
        GTSetAttrs 4,2,#GTSL_Level,Blue(RGB_KOLOR)+1 : B=Blue(RGB_KOLOR)
    End Select
    EndIf
  Until ev=$200 AND EventWindow=4
  ev=0

CloseWindow 4
SavePalette 1,"RYSUNKI/DATA/PALETA.CMA"
If GRAYSCALE=1 Then x=Greyscale{1,8,23}

Return

.WCZYTAJ_PREFS
  DEFTYPE.l ScrMode

  x=OpenFile(2,"PREFS.PRE")
  FileInput 2
  For x=1 To 10
    Czcionka$(x)=Edit$(256)
    CzcionkaY(x)=Val(Edit$(256))
  Next x
  OTWIERAC_NA_WB=Val(Edit$(256))
  INTERLACE_FONTS=Val(Edit$(256))
  SKALUJ_OBRAZKI=Val(Edit$(256))
  GRAYSCALE=Val(Edit$(256))
  OBRAZKI_RAM=Val(Edit$(256))
  ScrMode.l=Val(Edit$(256))
 CloseFile 2
Return

.

.MUZYKA_PREFS
If Modul=0 : GTToggle 3,3,On : Else : GTToggle 3,3,Off : EndIf

AddIDCMP $10
Window 3,46,34,334,108 + offt,14,GetCatStr{catalog.l,4000,"Preferencje muzyki"},0,1
WindowFont 0 : BitOkno=3 : Gosub PATTERN
AttachGTList 3,3

GTBevelBox 3,offl,89+offt,326,17,0
GTBevelBox 3,offl,00+offt,326,14,0
GTBevelBox 3,offl,71+offt,326,18,0
GTBevelBox 3,offl,14+offt,326,57,0

WJam 0 : WColour 2,0 : WLocate 141,3 : Print GetCatStr{catalog.l,4001,"Muzyka"}

Repeat : ev=0 : ev = WaitEvent AND EventWindow=3 : Gosub CZAS

  If ev=$20
    If GadgetHit=0
        ev=0
        Ladowany_modul$=Str$(EventCode+1)
        If CHANNELS_ALOCATED=True Then Gosub DEALLOC_CH
        Gosub LADUJ_MODUL
        If Modul=0 : GTToggle 3,3,On : Else : GTToggle 3,3,Off : EndIf : Redraw 3,3
    EndIf
  EndIf

  If ev=$40
    Select GadgetHit
      Case 2
        If EventCode=1 : Filter Off : Else : Filter On : EndIf
      Case 3
        If EventCode=1
          If CHANNELS_ALOCATED=True
            StopTracker : FreeTrackerModule 1 : Modul=0
            Gosub DEALLOC_CH
          EndIf
        Else
          If Zaladowany_modul>0
            Ladowany_modul$=Str$(Zaladowany_modul)
            Gosub LADUJ_MODUL
          EndIf
        EndIf
    End Select
  EndIf

  If ev=$20
    Repeat
    Select GadgetHit
      Case 1
        vol=EventCode
        If vol>0 AND vol<65 : ModuleSampleName vol : EndIf
    End Select
    Until WaitEvent=$40
  EndIf

Until ev=$200 AND EventWindow=3
DetachGTList 3
CloseWindow 3
WColour Kolor_napisu
Return

.LADUJ_MODUL
Gosub ALLOC_CH

If CHANNELS_ALOCATED=True

;  If NOT Zaladowany_modul=Val(Ladowany_modul$)

    Modulik$="MUZYKA/"+Ladowany_modul$+".MOD"
    If Exists(Modulik$)<>0

      ROZPAKOWANE$="RAM:AD_TMP/AntyDresiarz-Mod"
      DO_ROZPAKOWANIA$=Modulik$ : Gosub ROZPAKUJ

      If NOT Modulik$=ROZPAKOWANE$ Then KASUJ_ROZPAK=1
        Modulik$=ROZPAKOWANE$
        StopTracker : FreeTrackerModule 1

        If AvailMem_(#MEMF_CHIP)>FileSize (Modulik$)
          x=LoadTrackerModule(1,Modulik$)
          If KASUJ_ROZPAK=1 Then Gosub KASUJ_ROZP

          If x<>0
            x=StartTracker (1) : Modul=1
            Zaladowany_modul=Val(Ladowany_modul$)
          EndIf
      Else
        X$=GetCatStr{catalog.l,401,"Brak CHIP'u na zaladowanie modulu."+Chr$(10)+"Rozszerz pamiec lub pozamykaj programy."}
        Request GetCatStr{catalog.l,400,"Blad w ladowaniu modulu"},X$,GetCatStr{catalog.l,402,"oK"}
        Zaladowany_modul=-1 : X$=""
      EndIf

    Else
      X$=GetCatStr{catalog.l,402,"Ok"}
      Request GetCatStr{catalog.l,501,"Blad w ladowaniu modulu"},GetCatStr{catalog.l,502,"Brak modulu na dysku !"},X$:X$=""
    EndIf
;  EndIf

Else
  Modul=0 : Zaladowany_modul=0
EndIf

Return
.
.DEMO
  If AGA=1 : CHIPS$="AGA" : Else : CHIPS$="ECS" : EndIf
  Use Palette 1

  Window 0,0,offt,640,Wysokosc_Ekranu-offt,6+#WFLG_RMBTRAP,"Antydresiarz",0,1 : Activate 0
  InnerCls 1

  Rysunek$="RYSUNKI/DATA/AGA/TITLE1.IFF"
  InitBank 2,FileSize(Rysunek$),65536
  BLoad Rysunek$,Bank(2)

;  x=StcDecrunch{Bank(1),2} : FreeBank(1)

  If CheckIFF {Bank(2)}
    Szerokosc=IFFWidth{Bank(2)} : Wysokosc=IFFHeight{Bank(2)} : Bitplany=IFFDepth{Bank(2)}
    x=DecodeIFFPalette{3,Bank(2),False,False,True}
    BitMap 1,Szerokosc,Wysokosc,Bitplany
    DecodeILBM 1,Bank(2) : FreeBank(2)
  EndIf

  If GRAYSCALE=1 Then x=Greyscale{3,0,(2^Bitplany)-1}
  Use Palette 3

  Gosub WYSWIETL_LINIAMI

  OKRES=Timer

  Gosub WCZYTAJ_CZCIONKI
  Ladowany_modul$="1" : Modul=1 : Gosub LADUJ_MODUL

  Rysunek$="RYSUNKI/DATA/AGA/PRESENTS.IFF"
  InitBank 2,FileSize(Rysunek$),65536
  BLoad Rysunek$,Bank(2)

;  x=StcDecrunch{Bank(1),2} : FreeBank(1)

  Repeat : VWait 1 : Until Timer>OKRES+300 OR MButtons=1

  Gosub ZAMALUJ_LINIAMI

  If CheckIFF {Bank(2)}
    Szerokosc=IFFWidth{Bank(2)} : Wysokosc=IFFHeight{Bank(2)} : Bitplany=IFFDepth{Bank(2)}
    x=DecodeIFFPalette{3,Bank(2),False,False,True}
    BitMap 1,Szerokosc,Wysokosc,Bitplany
    DecodeILBM 1,Bank(2) : FreeBank(2)
  EndIf

  If GRAYSCALE=1 Then x=Greyscale{3,0,(2^Bitplany)-1}
  Use Palette 3

  Gosub WYSWIETL_LINIAMI

  OKRES=Timer

  Rysunek$="RYSUNKI/DATA/AGA/TITLE2.IFF"
  InitBank 2,FileSize(Rysunek$),65536
  BLoad Rysunek$,Bank(2)

;  x=StcDecrunch{Bank(1),2} : FreeBank(1)

  Repeat : VWait 1 : Until Timer>OKRES+300 OR MButtons=1

  Gosub ZAMALUJ_LINIAMI

  If CheckIFF {Bank(2)}
    Szerokosc=IFFWidth{Bank(2)} : Wysokosc=IFFHeight{Bank(2)} : Bitplany=IFFDepth{Bank(2)}
    x=DecodeIFFPalette{3,Bank(2),False,False,True}
    BitMap 1,Szerokosc,Wysokosc,Bitplany
    DecodeILBM 1,Bank(2) : FreeBank(2)
  EndIf

  If GRAYSCALE=1 Then x=Greyscale{3,0,(2^Bitplany)-1}
  Use Palette 3

  Gosub WYSWIETL_LINIAMI

  OKRES=Timer
  Rysunek$="RYSUNKI/DATA/AGA/TITLE3.IFF"
  InitBank 2,FileSize(Rysunek$),65536
  BLoad Rysunek$,Bank(2)

;  x=StcDecrunch{Bank(1),2} : FreeBank(1)

  ; --- TELKA
  For i=1 To 9
    If Exists("RYSUNKI/DATA/"+CHIPS$+"/TLO"+Str$(i)+".IFF")
      x=CopyFile ("RYSUNKI/DATA/"+CHIPS$+"/TLO"+Str$(i)+".IFF","RAM:AD_TMP/TLO"+Str$(i)+".IFF")
    EndIf
  Next i
  ; --- TELKA END

  Repeat : VWait 1 : Until Timer>OKRES+300 OR MButtons=1

  Gosub ZAMALUJ_LINIAMI

  If CheckIFF {Bank(2)}
    Szerokosc=IFFWidth{Bank(2)} : Wysokosc=IFFHeight{Bank(2)} : Bitplany=IFFDepth{Bank(2)}
    x=DecodeIFFPalette{3,Bank(2),False,False,True}
    BitMap 1,Szerokosc,Wysokosc,Bitplany
    DecodeILBM 1,Bank(2) : FreeBank(2)
  EndIf

  If GRAYSCALE=1 Then x=Greyscale{3,0,(2^Bitplany)-1}
  Use Palette 3

  Gosub WYSWIETL_LINIAMI

  OKRES=Timer
  Gosub POKAZ_PANEL

  Repeat : VWait 1 : Until Timer>OKRES+300 OR MButtons=1

  Gosub ZAMALUJ_LINIAMI
Return

.WYSWIETL_LINIAMI
  If InnerHeight=Wysokosc
    For y=0 To InnerHeight-1 Step 2
      BitMaptoWindow 1,0,0,y,offl,offt+y,Szerokosc,1
      BitMaptoWindow 1,0,0,Wysokosc-y-1,offl,(InnerHeight+offt)-y-1,Szerokosc,1
      VWait 1
    Next y
  ZAMALUJ=1
  EndIf

  If InnerHeight=Wysokosc*2
    For y=0 To InnerHeight-1 Step 4
      BitMaptoWindow 1,0,0,y,offl,offt+y,Szerokosc,1
      BitMaptoWindow 1,0,0,Wysokosc-y-1,offl,(InnerHeight+offt)-y-1,Szerokosc,1
      VWait 1
    Next y
  ZAMALUJ=0
  EndIf

  If InnerHeight>Wysokosc*2
    odstep=(InnerHeight-Wysokosc*2)
    For y=1 To InnerHeight-odstep Step 4
      BitMaptoWindow 1,0,0,y/2,offl,offt+y,Szerokosc,1
      BitMaptoWindow 1,0,0,y/2,offl,offt+y+1,Szerokosc,1

      BitMaptoWindow 1,0,0,Wysokosc-(y/2),offl,(InnerHeight+offt)-y-odstep,Szerokosc,1
      BitMaptoWindow 1,0,0,Wysokosc-(y/2),offl,(InnerHeight+offt)-y-odstep+1,Szerokosc,1
      VWait 1
    Next y
  ZAMALUJ=0
  EndIf

Return

.ZAMALUJ_LINIAMI
  If ZAMALUJ=1
    For i=0 To InnerHeight-2 Step 2
    WBox offl,offt+i,InnerWidth+3,offt+i,1
    WBox offl,(InnerHeight+offt-1)-i,InnerWidth+3,(InnerHeight+offt-1)-i,1
    VWait 1
    Next i
  Else
    For i=0 To InnerHeight-2 Step 4
      WBox offl,offt+i,InnerWidth+3,offt+i+1,1
      WBox offl,(InnerHeight+offt-2)-i-2,InnerWidth+3,(InnerHeight+offt-2)-i-1,1
    VWait 1
    Next i
  EndIf

  InnerCls 1
Return

.
.CZAS
DEFTYPE.l Procent
x=Hours
 Sek=Secs
  If Sekunda<>Sek
  Sekundy$=Str$(Secs) : If Len(Sekundy$)=1 Then Sekundy$="0"+Sekundy$
  Minuty$=Str$(Mins) : If Len(Minuty$)=1 Then Minuty$="0"+Minuty$
  Godziny$=Str$(Hours) : If Len(Godziny$)=1 Then Godziny$="0"+Godziny$

  If plk.l>0
    Procent.l=(Loc_{plk.l}*100)/Dlugosc_tekstu.l
  Else
    Procent.l=00
  EndIf

  Use Window 0
  If MENU=0
    x$=Belka_okna$+" - "+GetCatStr{catalog.l,6000,"Strona:"}+" "+Str$(Aktualna_strona)+" ("+Str$(Procent.l)+"%)"
    x$=x$+"   Czas: "+Godziny$+":"+Minuty$+":"+Sekundy$
  Else
    x$=Belka_okna$+" - Menu"
    x$=x$+"   Czas: "+Godziny$+":"+Minuty$+":"+Sekundy$
  EndIf

  WTitle x$,Belka_ekranu$ : x$=""

  Sekunda=Sek
  EndIf
Return

.WYJSCIE
CloseCatalog_ (catalog.l)
CloseLocale_ (locale.l)

StopPTModule
CloseWindow 0
CloseWindow 1

  If OTWARTE_NA_WB=0
    CloseScreen 1
  Else
    For x=0 To 255 : s=PaletteRGB {1,x,R(x),G(x),B(x)} : Next x
    Use Palette 1
  EndIf
  Gosub KASUJ_TMP
  Gosub DEALLOC_CH

End
Return

.KASUJ_TMP
If Exists("RAM:AD_TMP")

DEFTYPE .FileInfoBlock myfib

  p$="RAM:AD_TMP"
  lock.l=Lock_(&p$,-2)

If Examine_(lock,myfib)<>0
  While ExNext_(lock,myfib)<>0
    USEPATH myfib

    If \fib_DirEntryType<0             ;jezeli nie katalog to...
      Nazwa_pliku$=LSet$(Peek$(&\fib_FileName),30)
      Nazwa_pliku$=Left$(Nazwa_pliku$,Instr(Nazwa_pliku$,"  ")-1)

         DeleteFile_("RAM:AD_TMP/"+Nazwa_pliku$)
    EndIf
  Wend
EndIf

UnLock_ lock

DeleteFile_ ("RAM:AD_TMP")

EndIf
Return

.

.ROZPAKUJ
 ; DO_ROZPAKOWANIA$
  dlugosc_spak.l=FileSize(DO_ROZPAKOWANIA$)

  InitBank 9,4,65536
  x=BLoad (DO_ROZPAKOWANIA$,Bank(9),4) : FileFormat$=Peeks$(Bank(9),4) : FreeBank 9

  If FileFormat$="S404"
    x=StcFileDecrunch{DO_ROZPAKOWANIA$,ROZPAKOWANE$,9,10}
  Else
   ROZPAKOWANE$=DO_ROZPAKOWANIA$
  EndIf
Return

.KASUJ_ROZP
  x=DeleteFile_ (ROZPAKOWANE$)
  KASUJ_ROZPAK=0
Return


.


.ALLOC_CH

  LONG.l=$01020408

  If adport.l<>0

       audio_req\ioa_Data=&LONG.l
       audio_req\ioa_Length=4
       audio_req\ioa_AllocKey=0
       audio_req\ioa_Request\io_Message\mn_Node\ln_Pri=-127
       audio_req\ioa_Request\io_Command=#ADCMD_ALLOCATE
       audio_req\ioa_Request\io_Flags=#ADIOF_NOWAIT

       If OpenDevice_("audio.device", 0, &audio_req, 0)=0
         audio_req\ioa_Data=&LONG.l
         audio_req\ioa_Length=4
         audio_req\ioa_AllocKey=0
         audio_req\ioa_Request\io_Message\mn_Node\ln_Pri=127
         audio_req\ioa_Request\io_Command=#ADCMD_ALLOCATE
         audio_req\ioa_Request\io_Flags=#ADIOF_NOWAIT

           If OpenDevice_("audio.device", 0, &audio_req, 0)=0
             CHANNELS_ALOCATED=True
              Else
             CHANNELS_ALOCATED=False
           EndIf

       Else
        CHANNELS_ALOCATED=False
       EndIf
  Else
    CHANNELS_ALOCATED=False
  EndIf

If CHANNELS_ALOCATED=False Then Request "AD","Can't allocate audio channels!","eeee!"


Return

.DEALLOC_CH
  If adport.l<>0
      x=CloseDevice_ (&audio_req)
      CHANNELS_ALOCATED=False
  EndIf
Return


; ---- NIGDY NIE DOTYKAC BITMAPY 10,11 !!! ---- ANIMKA W ARCIE !
