***************************************************************************
*	         Libra.Library (wprowadzenie do nowego "jëzyka")          *
*                                                                         *
*                              Opis biblioteki                            *
*            Napisaî Mariusz Matras (LIBRA) z The Validator. (c) 1994     *
*                                                                         *
***************************************************************************

;----------------------- MYSZKA  ------------------------------------------
ShowON 

-Ukazuje pointer myszki na otwartym ekranie.

***---------------------------------
HideON

-Dziaîa odwrotnie do ShowOn...

***---------------------------------
SRmb

-Sprawdza  czy  uûytkownik  nacisnâî  prawy  przycisk myszy.  Jeôli tak, to
wykonuje  rozkazy  znajdujâce  po  tej  instrukcji,  jeôli  nie to czeka na
wciôniëcie.

***---------------------------------
SLmb

-Identycznie jak wyûej, ale odnosi sië do lewego przycisku myszy. 

***---------------------------------
Rmb	Warunek,Label

-Testuje prawy przycisk myszy z warunkiem do speînienia i skokiem do labela
gdy warunek speîniony.

***---------------------------------
Lmb	Warunek,Label

-Analogoicznie,  tylko  chodzi  o lewy klawiszek.  (Warunek jest tworzony z
reszty  warunku z jëzyka maszynowego:  np.beq równy to piszemy eq (pomijamy
b))

***---------------------------------
Xmouse Label

-Wrzuca pod label aktualnâ wartoôê X jakâ myszka osiâga na ekranie.

***---------------------------------
Ymouse Label

-Wrzuca pod label aktualnâ wartoôê Y jakâ myszka osiâga na ekranie.

***---------------------------------
MouseLimit	X,X1,Y,Y1

-Ogranicza przesów myszki do danej strefy zdefiniowanej przez uûytkownika.

;-------------   ZMIENNE I ETYKIETY (LABELE)  ------------------

Ztxt	'tekst'

-Buduje zmiennâ tekstowâ

Przykîad:
Kij:	Ztxt	'LIBRA'

***---------------------------------
LongZtxt ZmiennaTekstowa,Label

-Oblicza dîugoôê zmiennej tekstowej i przesyîa obliczonâ dîugoôê pod label

Adnotacja: Label musi byç definiowany dîugim sîowem

Przykîad: LongZtxt #Kij,Count

Kij:	Ztxt	'LIBRA'
Count	L 	0	;wynik=5

***---------------------------------
B
-Zmienna zadeklarowana bajtem

Przykîad:

Klop	B	0

***---------------------------------
W
-Zmienna zadeklarowana sîowem

Przykîad:

Klop	W	0

***---------------------------------
L
-Zmienna zadeklarowana dîugim sîowem 

Przykîad:

Klop	L	0

***---------------------------------
AB	dîugoôê w bajtach

-rezerwuje rzâdanâ Iloôê bajtów dla zmiennej 

Przykîad:

AB	500	;zarezerwuje 500 bajtøw

***---------------------------------
AW	dîugoôê w sîowach

-rezerwuje rzâdanâ Iloôê sîów dla zmiennej 

***---------------------------------
AL	dîugoôê w dîugich sîowach

-rezerwuje rzâdanâ Iloôê dîugich sîów dla zmiennej 

Adnotacja   dla  AB,AW,AL:   Najlepiej  by  byîo,  gdyby  funkcje  te  byîy
poprzedzone HUNK'iem BSS.  wtedy pamiëê przydzielana bëdzie w zaleûnoôci od
wgranego  programu,  w  przeciwnym  wypadku  w  pliku tym znajdâ sië 'puste
miejsca' co zwiëkszy dîugoôê pliku.  Hunk taki definiujemy piszâc np.:

		Section JASIEK,BSS_P		

;-------------   SKOKI I OBSÎUGA BÎËDÓW   -------------

OnError 	End

-Procedura  to  wyîapuje  bîâd  (jeôli  wystâpiî)  w  programie i skacze do
procedury zdefiniowanej przez uûytkownika.

Przykîad:	
	LoadFile Ziutek
	OnError	Kill
		
Kill:	
	Pop

***---------------------------------
Goto 		label

-skok do Labela lub komórki 

Przykîad:	Goto	$50000

***---------------------------------
Gosub 		label

-skok  do  Labela  lub  komórki  i  powrót (jeôli podprogram byî zakoïczony
POP'em)
 
***---------------------------------
Pop 
-Wyjôcie z podprogramu

Loop		label

-Funkcja ta tworzy pëtlë nieskoïczonâ. Label to miejsce zapëtlenia

Przykîad:

Banan:	Add.l	#1,d0
	Loop	Banan

***---------------------------------
Qrept		Ilerazy

-ta funkcja jest dostëpna w TRASH'U, a co ona robi? Wykonuje pëtle Ilerazy 

Adnotacja:  Na koïcu powtarzanej sekwencji musi pojawiê sië ENDQR (tak jak
		   w basic'u NEXT po FOR)

Przykîad:
	Qrept	70	;pëtla wykonana bëdzie 70 krotnie
	add.l	#1,d0
	EnDQr

***---------------------------------
EndQr
-koniec pëtli utworzonej przez Qrept

***---------------------------------
For	Nr,Label,Ile razy

-Funkcja  ta  sîuûy do tworzenia pëtli For.  Naleûy podaê Nr (w Basic'u For
A=...), nastëpnie Label gdzie ma skakaê, Ilerazy (bez komentarza).

Adnotacja: Funkcja For musi byç zakoïczona instrukcjâ Next.Uwaga!
	       Nr leûy w zakresie 1-70.

Przykîad:	For	1,Terminator,#50

Terminator:	
  		.......		<= procedurka
  		Next	1

***---------------------------------
Next	Nr.

-koniec pëtli utworzonej przez For

;--------------   TRACKDISK.DEVICE I OPERACJE NA PLIKACH  ------

TrackReady

- Aktywacja Trackdisk.device.

Adnotacja: Funkcjë tâ uûywaê wtedy, gdy chcemy koûystaê z SYSTEMU 

***---------------------------------
TrackQuit

- Wyjôcie z Trackdisk'u. Koniec pracy z tym urzâdzeniem.

Adnotacja:   Funkcja  zwalnia  TrackDisk, który wczeôniej byî zarezerwowany
przez TrackReady

***---------------------------------
Track Bufor,Dîugoôê,Offset,Skok

- Wczytanie ôcieûek i skok w miejsce wczytania

Adnotacja:    funkcja   ta   jest  niezaleûna  od  TrackReady  (Uûywaê  gdy
programujemy bez SYSTEMU).

***---------------------------------
TrackGo Bufor,Dîugoôê,Offset 

- Czytanie ôcieûek 

Adnotacja: funkcja dostëpna po TrackReady

***---------------------------------
LoadFile File 

- Wczytuje plik i uruchamia.

***---------------------------------
ReadFile File,Bufor		

- Wczytuje plik pod Bufor.

Adnotacja:   Plik  definiujemy  jako  zmiennâ  tekstowâ  
(np.   Plik:  Ztxt 'df0:Program')

***---------------------------------
WriteFile File,Bufor,Dîugoôê    

- Zgrywa na dysk plik o Dîugoôci podanej w Buforze.

Adnotacja: Patrz ReadFile


;--------------   MUZYKA I SAMPLE   --------------------

MusicOn  	muzyka

-Jest  to  funkcja,  która  odtwarza moduî zapisany w formacie Protrackera.
Funkcja  ta  jest  niezaleûna od programu.  Jedynym mankamentem tej funkcji
jest to, ûe odtwarza moduîy tylko w VBL.

Adnotacja: muzyka jest definiowana w ten sposób:

	incbin		'df0:mod.grzmoty'

***---------------------------------
MusicStop

-Funkcja zatrzymuje odgywanie moduîu spod MusicOn

***---------------------------------

FutureComposer 	muzyka		

-Jest  to identyczna funkcja do MusicON, lecz odgrywa moduî zrobiony Future
Composer'em.

Adnotacja:  Funkcja ta wymaga specjalnej biblioteki (doîâczonej do zestawu)

***---------------------------------
FutureComposerOff

-Zatrzymuje odgrywanie moduîu w F.C

A   oto  zestaw  funkcji  identycznych  do  przedstawionych  powyûej,  lecz
dziaîajâcych na innym rodzaju moduîu muzycznego:
	ProPacker 		Muzyka
	ProPackerOff
	NoicePacker 	Muzyka
	NoicePackerOff		
	SoundMonitor 	Muzyka	
	SoundMonitorOff		
	Med 			Muzyka	
	MedOff			

***---------------------------------
ProPackerCh 	muzyka,1

-Funkcja ta jest prawie identyczna z ProPacker,z tâ róûnicâ ,ûe obok muzyki
podajemy nr paternu odgrywanego (zapëtlony 1 patern).

***---------------------------------
ProPackerChOff		

-Funkcja przerywa dziaîanie powyûszej

***---------------------------------
PT 		Muzyka		

-Funkcja ta róûni sië od MusicON tylko tym, ûe moduîy sâ odgrywane w CIA, a
nie w VBL

***---------------------------------
PTOff				

-Funkcja przerywa dziaîanie powyûszej

***---------------------------------
PlaySamA 	sampel,dîugoôê,gîoônoôê,czëstotliwoôê	

-Funkcja  ta  odgrywa sampel (równieû zapëtlony) na kanale A -sample dopuki
nie wystâpi funkcja StopA

***---------------------------------
PlaySamB 	sampel,dîugoôê,gîoônoôê,czëstotliwoôê	

-Funkcja  ta  odgrywa sampel (równieû zapëtlony) na kanale B -sample dopuki
nie wystâpi funkcja StopB

***---------------------------------
PlaySamC 	sampel,dîugoôê,gîoônoôê,czëstotliwoôê	

-Funkcja  ta  odgrywa sampel (równieû zapëtlony) na kanale C -sample dopuki
nie wystâpi funkcja StopC

***---------------------------------
PlaySamD 	sampel,dîugoôê,gîoônoôê,czëstotliwoôê	

-Funkcja  ta  odgrywa sampel (równieû zapëtlony) na kanale D -sample dopuki
nie wystâpi funkcja StopD

***---------------------------------
StopA
-Zatrzymuje odgrywanie sampla na kanale A

***---------------------------------
StopB
-Zatrzymuje odgrywanie sampla na kanale B

***---------------------------------
StopC
-Zatrzymuje odgrywanie sampla na kanale C

***---------------------------------
StopD
-Zatrzymuje odgrywanie sampla na kanale D

;-------------   PRZERWANIA   -------------------------

OwnInterrupts 	Nr,Label

-Inicjuje przerwania o podanym numerze i skoku do labela (Nr = 1-10)

Przykîad:
	OnwInterrupts 1,Kick

Kick:
	....	<= procedurka 
	pop

***---------------------------------
FinishInterrupts Nr

-Funkca wyîâcza przerwanie Nr zdefiniowane przez funkcjë OwnInterrupts

***---------------------------------
FinishAllInterrupts

-Funkca   wyîâcza   wszystkie   przerwania   zdefiniowane   przez   funkcjë
OwnInterrupts

;-------------   DEPACKING   --------------------------

DepackTs 	Source,Dest	

-Funkca ta depakuje program niewykonywalny spakowany Turtle - Smasher'em

***---------------------------------
DepackBK 	Source,Dest

-Funkca ta depakuje program niewykonywalny spakowany Byte Killer'em

***---------------------------------
DepackCrm 	Source,Dest	

-Funkca ta depakuje program niewykonywalny spakowany CrunchManiâ

***---------------------------------
DepackTE 	Source,Dest

-Funkca ta depakuje program niewykonywalny spakowany Trash Eliminatorem

***---------------------------------
DepackPP Source,Dîugoôê spakowanego,Dest,kolorDepacku (np.180,182,...)

-Funkca ta depakuje program niewykonywalny spakowany Power Packerem

Adnotacja:       Wszystkie     funkcje     do     depackingu     potrzebujâ
LibraDecrunch.library

;--------------   GRAFIKA   ------------------------------

Plot		NrEkranu,X,Y

-Stawia  punkt na zdefiniowanym przez uûytkownika ekranie o wspóîrzëdnych X
i Y
 
***---------------------------------
Draw		Nr.Ekranu,X,Y

-Rysuje  linië na ekranie od poîoûenia kursora graficznego do wspóîrzëdnych
X i Y

***---------------------------------
Box		Nr.Ekranu,X1,Y1,X2,Y2

-Rysuje  kwadrat na ekranie, wspóîrzëdne okreôlajâ lewy górny i prawy dolny
róg.

***---------------------------------
PolyLine 	Nr.Ekranu,Iloôê îamanych,Tablica

-Funkcja rusuje îamane na ekranie, które majâ wierzchoîki podane w tablicy

Przyk£ad:	PolyLine 1,#3,#Tab

Tab:	DC.W	300,100,250,185,200,100

***---------------------------------
Point		Nr.Ekranu,X,Y,Label

-Funkcja  przyjmujâca  wartoôê  numeru  koloru  w  punkcie X,Y.  Wartoôê ta
bëdzie zapisana pod label zdefiniowany sîowem.

***---------------------------------
Pen		Nr.Ekranu,nr.Koloru

-Ustala kolor w jakim funkcje graficzne bâdz tekstowe bëdâ dziaîaê.

***---------------------------------
Paper		Nr.Ekranu,nr.Koloru

-Ustala kolor tîa pod Text 

***---------------------------------
GrWriting	Nr.Ekranu,Wartoßç

-Wybór  trybu  wyôwietlania  grafiki  (moûliwe  tryby  to  Jam1, Jam2, Xor,
Inversevid oraz ich dowolne kombinacje)

***---------------------------------
GrLocate 	Nr.Ekranu,X,Y

-Umieszcza kursor graficzny na ekranie we wspóîrzëdnych X i Y

***---------------------------------
INCIFFP		'nazwa pliku'

-Jest  to  funkcja  dostëpna  juû  w  Trashu.   Tworzy  ona  paletë rysunku
zapisanego  w  IFF'ie,  którâ póúniej moûna ôciâgnâê odpowiedniâ funkcjâ do
palety kolorów (np.  SwapPalette)

***---------------------------------
UnPackVrp 	Source,Destination,KoloryDoCoppera,Tablica wîasna (LABEL) 

-Funkcja  ta  depakuje  rysunek  zapisany w nowym formacie VRP oraz pobiera
tablicë kolorów do wîasnej tablicy bâdz do Coperlisty.

Adnotacja:  Jeôli wpiszemy dowolnâ wartoôê do KolorydoCoppera, to kolory
	   zostanâ przesîane, jeôli 0, to nie.

***---------------------------------
UnpackIff Source,Dest,Label pod Kolory, 0 lub 1 (0-Copper, 1-label wîasny)

-Funkcja identyczna z poprzedniâ z tâ róûnicâ, ûe depackuje rysunek w IFF.

Adnotacja:  Label pod kolory podajemy tylko wtedy, gdy chcemy, aby kolory z
rysunku  znalazîy  sië  w  naszej  tablicy.  Wtedy wpisujemu 1 do nastëpnej
pozycji.   W  przeciwnym  wypadku  naleûy  wpisaê 0,0 i kolory znajdâ sië w
copperze.

***---------------------------------
PicturetoFront	szer,wys,iloôêB,rysunek

-Funkcja wyciâga na plan pierwszy rysunek o podanych parametrach.

Przykîad:
	PicturetoFront #320,#256,#5,#Mega

Mega:	incbin	'df0:Rysunek' 

***---------------------------------
DrawImage 	Rysunek

-Funkcja wrysowuje rysunek do aktualnie otworzonego Screenu Intuition.

Adnotacja: Rysunek musi mieê takie same parametry jak otworzony screen.

Przykîad:
	DrawImage Mega

Mega:	incbin	'df0:Rysunek' 

***---------------------------------
BlitTemplate szablonMaski,X,Modulo,nr.Ekranu,WspX,WspY,WielkoôêX,WielkoôêY

-Procedura  ta  rysuje  obrazek  zgodnie  z  aktualnym  kolorem i zgodnie z
aktualnym trybem rysowania w okreôlonej pozycji.

***---------------------------------
BlitBitMap  Str.Bitmapy(Source),X,Y,nr.Ekranu,WspX,WspY,WielkoßçX,WielkoßçY
,Min

-Kopiuje  prostokâtny  obszar z bitmapy do ekranu o podanym numerze.  Min -
to operacja logiczna dokonywana na przenoszonych prostokâtach.

***---------------------------------
BlitPattern   nr.Ekranu,Maska(obrazek),X,Y,X1,Y1,Modulo(obrazka)

-Procedura  dziaîa  podobnie  jak BlitTemplate z tym wyjâtkiem, ûe kopiujâc
prostokât dodatkowo go wypeînia.  (Efekt taki jak Flood)

***---------------------------------
BltClear    Pami©ç do wyzerowania,Liczba bajtøw do zerowania,Flagi

-Wypeînienie  wycinka  zerami.   Flagi  - Ustaw bit 0 aby zmusiê funkcjë do
czekania  aû  pamiëê bëdzie wyzerowana.  Ustaw bit 1,jeôli Liczba bajtów do
zerowania  ma  byê  interpretowana  jako  liczba wierszy i bajtów/wiersz do
wyzerowania.   Wyzeruj  bit  1,  jeôli  Liczba  bajtów  do zerowania ma byê
interpretowana jako parzysta liczba bajtów.

***---------------------------------
Flood    nr.Ekranu,tryb wypeîniania,X,Y

-Wypeînia  obszar zamkniëty.  Tryb wypeóîniania :  0 - Wypeînienie pixeli o
tym samym kolorze co Pen, 1-wypeînienie pixeli o tym samym kolorze co pixel
o wspóîrzëdnych X,Y.

Adnotacja:   Funkcje  Flood,  ADraw,  AMove,  AEnd,  SetPattern  potrzebujâ
specjlnego lokalnego bufora (Patrz AllocBufor,FreeBufor)

***---------------------------------
ADraw	Nr.Ekranu,X,Y

-Procedura  podobna  do  Draw,  lecz  szereg tych instrukcji budujâ îamanâ,
która w efekcie da nam figurë (wielokât) zamalowanâ w ôrodku.

***---------------------------------
AMove	Nr.Ekranu,X,Y

-Procedura  podobna  do  Move,  przesuwa  ona  kursor  w dane miejsce gdzie
nastëpnie uûywajâc ADraw narysujemy 1 îamanâ.

AMove	Nr.Ekranu

-Procedura zamyka nam îamanâ tworzâc figurë wypeînionâ.

***---------------------------------
SetPattern Nr.Ekranu,Wskanik na wzorek,Wielkoôê wzorka

-Funkcja  ta  jest  przydatna,  gdy  chcemy,  aby  nasza  figurka  (miejsce
wypeîniania) byîa wypeîniona wzorkiem przez nas zdefiniowanym.

***---------------------------------
AllocBufor    Nr.Ekranu,Szerokoßç,Wysokoßç,PointernaBufor,PointernaTmpRas

-Allokuje bufor lokalny na wszystkie operacje zwiâzane z wypeînianiem.

***---------------------------------
FreeBufor    PointernaBufor,Szerokoôê,Wysokoôê

-Zwalnia pamiëc zajëtâ przez AllocBufor.

***---------------------------------
Ainit	Nr.Ekranu,BufornaWektory,Iloôêwektorów,Bufor AreaInfo

-Funkcja  ta  inicjuje wszelakie operacje na wypeînieniach.  Bez niej ûadna
funkcja zwiâzana z wypeînieniem nie zadziaîa.

***---------------------------------
SetOpen	   Nr.Ekranu,nr.Koloru

-Funkcja ta tworzy otoczkë wokóî obiektu wypeînianego (Out-Line)

***---------------------------------
BndryOff   Nr.Ekranu

-Wyîancza powyûszâ funkcjë.

;-------------   RÓÛNE   ------------------------------

SetZone Iloôê zon,Xpos,Xpos1,Ypos,Ypos1,TabelaSkoków,Neg

-Funkcja  ta  tworzy  strefy  kontroli pointera Myszy.  Naleûy podaê Tabelë
poczâtkowych  pozycji  X,  koïcowych  X,  to  samo  z Y, oraz tabelë skoków
(Dî.sîowo), i Label gdy pointer nie natrafi na ûadnâ zonë.

Przykîad: 

SetZone #3,#LimitX,#LimitX1,#LimitY,#LimitY1,Jups,Grzyby

Jumps:	L	KillPC,DestroyATARI,APPLEisDEAD
Grzyby: L	AMIGA

LimitX: dc.W $23,$45,$60 ;zdefiniowane 3 Zony (1 - X=$23)(2 - X=$45) itd..
LimitX1:dc.W $29,$49,$69 ;
LimitY: dc.W $53,$55,$90 ;Identycznie jak wyûej
LimitY1:dc.W $59,$65,$99 ;

Amiga:	....	<= wîasna procedura
	pop
KillPC:
	....	<= wîasna procedura obsîugujâca 1 zonë. Tak samo postëpujemy
		    z kolejnymi labelami (DestroyATARI - druga zona itd.)
	pop

***---------------------------------
CleanAllReg              

- Czyôci rejestry danych i adresowe.

***---------------------------------
Check_L 	#1,d0,Warunek,Label
Check_W 	#1,d0,Warunek,Label
Check_B 	#1,d0,Warunek,Label

-Trzy   funkcje  przedstawione  powyûej  majâ  za  zadanie  sprawdziê,  czy
zaistniaî  jakiô  okreôlony  warunek.   Pierwsza sprawdza warunek na dîugim
sîowie,  druga  na sîowie, a trecia na bajcie.  Warunek jest identyczny jak
przy  funkcjach  LMB,RMB.   Label  - gdzie na byê wykonany skok gdy warunek
jest speîniony.

Przykîad: 
	Check_B 	#1,d0,eq,Label     <=  sprawdza czy w D0 jest 1 ;jeôli jest 
				                       to skacz do labela
Label:
	.....        <= procedura

***---------------------------------
WaitVbl

-Czeka na 1 Blanca (funkcja opóúniejâca czësto uûywana do synchronizacji
				   programu. Analogiczna do WaitVBL w AMOSIE)

***---------------------------------
WaitTof

-oczekiwanie na nastëpny pionowy cykl wyôwietlania.

Adnotacja: Funkcja ta doskonale nadaje sië do synchronizacji obrazu.

***---------------------------------
Wait		Wartoôê

-Funkcja czeka okreôlonâ niewielkâ wartoôê czasu

Przykîad:
	Wait	100

***---------------------------------
WatchAGA

-Naleûy   ustawiê   tâ   funkcjë   na  poczâtku  programu.   Umoûliwia  ona
bezkonfliktowâ pracë na nowych AMIGACH.

***---------------------------------
Random		Label
Rnd     	Label
SuperRandom 	Label

-Trzy  funkcje  przedstawione powyûej losujâ pewnâ liczbë (pseudo losowâ) i
wrzucajâ jâ pod zdefiniowany Label.

Przykîad:
	RND	LIBRA

Libra:	W	0

***---------------------------------
MakeTask 	Priorytet,NazwaTasku

-Funkcja  ta zakîada wîasny dla danego programu Task o priorytecie i nazwie
tasku.

Adnotacja:   Uwaga!   Funkcja  ta  powinna  byê  na  samym poczâtku naszego
programu  oraz  powinna  byê  doîânczana  w momencie, gdy program nasz jest
ukoïczony i zgrywamy go jako OBJECT.  Nie wolno uûywaê tej funkcji w ûadnym
innym miejscu i momencie !!!  Po tej funkcji musi byê zdefiniowany Hunk.

Przykîad:
	MakeTask -1,Nazwa
	Section Sroka,Code_C

	.................	<= nasz program

Nazwa:	Ztxt	'Deuteros'

***---------------------------------
Edit

-Funkcja  powoduje  wyjôcie  do  edytora.   Gdy  program  jest  wykonywalny
(Object),  powoduje  wyjôcie  do  DOS'a  (przy  czym nie trzeba sië martwiê
stosem,  copperem  czy  zaalokowanymi  obszarami  pamiëci.   Wszystko  jest
automatycznie ustawiane i zalniane, tak ûe nie powinno byê niespodzianek po
wyjôciu  z  naszego  programu).   Nie  uûywaê,  gdy  program nie korzysta z
systemu.

Adnotacja: Zawsze stosowaê Edit na koïcu programu. 

;-------------   ZARZÂDZANIE PAMIËCIÂ   ---------------

;------ Wartoôci:
;$00002 - Chip Memory
;$00004 - Fast Memory
;$10002 - Chip Memory i zostanie wyzerowany
;$20000 - otrzymujemy najwiëkszy dostëpny blok pamiëci

AllocMem 	Dîugoôê Obszaru,Funkcja,Label na pointer Obszaru	

-Alokuje  pewien  obszar  pamiëci.   Jeôli  operacja sië powiedzie, wartoôê
pointera pamiëci bëdzie zwrócona w Labelu zdefiniowanym dîugim sîowem.

Przykîad:	AllocMem #$10000,#2,Label 

Label:	L	0

***---------------------------------
AllocAbs 	Dîugoôê,Adres poczâtku,Label na Pointer

-Alokuje  pamiëê  w  podanym  przez  uûytkownika  miejscu w pamiëci.  Jeôli
operacja  sië  powiedzie, wartoôê pointera pamiëci bëdzie zwrócona w Labelu
zdefiniowanym dîugim sîowem.

***---------------------------------
FreeMem 	Pointer Obszaru,Dîugoôê Obszaru

-Zwalnia Pamiëê zajëtâ przez AllocMem lub AllocAbs

***---------------------------------
AvailMam 	Funkcja,Label

-Otrzymujemy  odpowiedú  na  pytanie  ile jest wolnej pamiëci zdefiniowanej
Funkcjâ

***---------------------------------
CopyMem 	Source,Destination,Wielkoôê

-Kopiuje dany obszar pamiëci z Source do Destination

***---------------------------------
CopyMemQ 	Source,Dest,Wielkoôê

-Wersja szybsza od poprzedniej, kopiuje dîugim sîowem.

***---------------------------------
Dec 		Bufor,Label gdzie jest liczba zapisana w hex'a

-Funkcja  zamienia  liczbë  zapisanâ  w  hex'a  na  liczbë decymalnâ, którâ
zapisuje w postaci ASCI pod buforem.

Przykîad:
	Dec	Bufor,#Liczba
	
Liczba:	L	0	;niech w Liczba bëdzie np. $c0
Bufor:	AB	80	;Bufor wyglâda tak: '192...................' itd.

***---------------------------------
Fill		Adres,Dîugoôê,Bajt wypeîniajâcy

-Funkcja wypeînia wartoôiâ zdefiniowanâ przez uûytkownika obszar pamiëci.

Przykîad:
	Fill	#$50000,#100,#00

***---------------------------------
FillQ		Adres,Dîugoôê,Fill

-Szybsza od wczeôniejszej, dziaîajâca na dîugicz sîowach.

;-------------   OKNA, GADÛETY I REQUESTERY   ---------

OpenWindow 	Nr,Str.Okna,0 lub 1 (1-okno ukaûe sië w na naszym 
				  Intuition Screen, 0-w aktywnym screenie)

-Otwiera okno Nr na naszym screenie bâdz na screenie WB.

Adnotacja: Uwaga! Naleûy podaê strukturë okna.

Przykîad: OpenWindow 1,Str,0
	 
struktura:	dc.w	10,20,160,156
			dc.b	1,2
			dc.l	$10640,$E,0,0,TitleW,0,0
			dc.w	30,40,320,256,1
TitleW:	Ztxt 'Okno'

***---------------------------------
CloseWindow 	nr

-Zamyka okno o numerze 

***---------------------------------
Make3d		str.Gadg,Kolor1,Kolor2

-Obrysowuje  gadûet tworzâc obwódkë 3d.  Naleûy podaê kolor skîadowy 1 oraz
2.

Adnotacja: Wymagana jest tu struktura Gadûeta
	
Przykîad:	Make3d	Gadget,1,2

GADG:	dc.l	0   ;Struktura gadûeta
		dc.w	10	;x
		dc.w	15	;y
		dc.w	55	;ax
		dc.w	12	;ay
		dc.w	0
		dc.w	1
		dc.w	1
		dc.l	0
		dc.l	0
		dc.l	Txt	;Tekst gadûeta
		dc.l	0
		dc.l	0
		dc.l	0
		dc.l	0

Txt:	dc.b	1	;struktura Textu
		dc.b	0
		dc.b	1
		dc.b	0
		dc.w	8
		dc.w	2
		dc.l	0
		dc.l	Text
		dc.l	0

Text:	Ztxt	'Push Me'

***---------------------------------
CheckGadget	Label zapëtlajâcy,End1,End2,End3

-Funkcja  ta  tworzy  specyficznâ  pëtlë,  która  ma za zadanie kontrolowaê
Gadûety  czy  nie  zostaîy wciôniëte.  End1 - Label sprawdzajâcy czy zostaî
naciôniëty  gadûet  opuszczenia  okna, End2 - Label sprawdzajâcy czy zostaî
wciôniëty  jaki  kolwiek  gadûet  na  oknie,  End3 - Label sprawdzajâcy czy
zostaî wciôniëty dowolny klawisz.  End2,End3 - potrzebujâ wîasnej procedury
sprawdzajâcej  który  gadûet  konkretnie  zostaî wciôniëty.  Procedura taka
jest poniûej.

Toop:
	...		<= Wîasna procedura
	CheckGadget Toop,End,SprawdúGadûety,Sprawdúkeys

SprawdzGadgety:
	move.l	Message,a1
	move.l	28(a1),a1

	lea	GADG,a2		        ;struktura Gadûeta 1 (patrz wyûej) 
	Check_L a1,a2,eq,Label do skoku
	Goto	Toop

SprawdzKeys:
	move.l	Message,a1
	move.w	24(a1),d0

	Check_W #$11,d0,eq,Label do skoku   ;klawisz w RAWKEY 'W' =$11 

	Goto	Toop

End:	Edit

***---------------------------------
Mreq		Title (pod path dostëp do pliku)
MArp		Tilte (pod path dostëp do pliku)
MReqTools	Tilte (pod path dostëp do pliku)

-Wywoîanie  którejô z tych procedur umoûliwi ci koûystanie z requesterów (z
bibliotek:   REQ,  ARP i REQTOOLS).  Oczywiôcie musisz posiadaê odpowiednie
biblioteki w katalogu Libs.  Funkcje te zwrucâ ci peînâ ôcieûkë dostëpu pod
Labelem   juû   zdefiniowanym   w   mojej   bibliotece   pod   nazwâ  PATH.
np.'Df0:Uzytki/Trash..........' (bez kîopotu).

;-------------   BLITTER I COPPER   -------------------

BlitClear Nr.Ekranu,Miejsce,Iloôêbitplane'ów,szer,wys 
- Funkcja ta bardzo szybko czyôci obszar ekranu (Miejsce).

Adnotacja:   Szerokoôê  minimalnie  ma  wielokrotnoôê  16  pixeli.   Moûemy
czyôciç   obszary   o  wielokrotnoôci  16  np.16+16+16  wyczyôci  obszar  w
szerokoôci 48.

***---------------------------------
OwnBlitter

-Jest  to  funkcja  która  pozwala  na wyîâczny dostëp do blittera (1-szy w
kolejce dostëpu do niego).

***---------------------------------
FreeBlitter

-Wyîâcza poprzedniâ funkcjë (czyli zwalnia blittera dla innych). 

***---------------------------------
OwnCopper	Copper lista

-Funkcja  ta  tworzy przedîuûenie do copperlisty bierzâcej utworzonej przez
ScreenOpen.
 
***---------------------------------
OldCopper

-Funkcja ta odtwarza Coppera systemowego

***---------------------------------
SetOwnCopper 	Coperlista

-Ustalenie wîasnej copperlisty bez ingerencji czegokolwiek 

***---------------------------------
SetOwnCopper2 	Coperlista

-Ustalenie wîasnej (drugiej) copperlisty bez ingerencji czegokolwiek 

***---------------------------------
Copper2Off

-Wyîâczenie Coppera na lokacji drugiej

;--------------  OPERACJE NA EKRANACH  -------------------

ScreenOpen   Nr.Ekranu,szer,Wys,Iloôê Bitplanów,KolorMapa 

-Otwiera ekran wedîug parametrów oraz sciâga kolorMapë obrazka z tabeli.

Adnotacja:   Funkcja ta powinna byê wywoîana tylko raz, gdyû Ekran ten jest
ekranem macierzysty (np.  ScreenOpen 1,320,256,5,Kolorki - Uwaga!  ostatnia
zmienna  moûe  byê  pominiëta,  wystarczy wpisaê 0, gdy definiujemy tablicë
kolorów to podajemy kolory, jak w przykîadzie)

Kolorki: DC.W $400,$FFF,$555,$512

***---------------------------------
CreateScreen	nr,szer,wys,Iloôê Bitplamów,Rysunek

-Tworzy virtualny screen o numerze i parametrach podanych oraz rysunku.

Adnotacja:   Funkcja  ta  nie  pokazuje  nam  ekranu lecz tylko tworzy go w
pamiëci.   Najlepiej nadaje sië do screenu gdzie mamy Boby, aby je wyciâgaê
na  nasz  ekran  widoczny,  lecz  oczywiôcie moûna traktowaê to jako screen
drugi i kopiowaê boby do woli.  (max iloôê screenów = 20)

***---------------------------------
MoveScreen	Ekran,Iloôê do lini scrolu, rysunek, 0 (0 - w górë  1 - w dóî)

-przestawia screen o podanâ liczbë linii w dóî, lub w górë.

***---------------------------------
IntScreen 	Yofset,szer,wys,Iloôê B,Kolor1,kolor2,ViewMode,Title,KolorMapa

-Otwiera  Intuition  Screen.  Yofset to wartoôê o ile ma byê obniûony ekran
przy wyôwietlaniu.

ViewMode:

Genlock_Video	2
Lace			4
PFBA			64
EHB				128
Genlock_Audio	256
DualPF			1024
HAM				2048
Vp_Hide			8192
Sprites			16384
Hires			32768

***---------------------------------
CloseIntScreen

-Zamyka Screen utworzony IntScreen'em

***---------------------------------
SwapPalette	Iloôê,TablicaKolorow

-kopiuje kolory zdefiniowane w tablicy do coppera 

***---------------------------------
Color0-31 	wartoôê

-Ustawienie koloru zdefiniowanego do 0-31 i wpisanie mu wartoôci

Przykîad:
	Color0	#$f00

***---------------------------------
Ntsc

-Zmiana systemu wyôwietlania obrazu na NTSC

***---------------------------------
Pal

-Zmiana systemu wyôwietlania obrazu na PAL

***---------------------------------
Cls		numer ekranu

-Czyôci ekran od kursora graficznego do koïca ekranu

***---------------------------------
SecondScreen 	szer,wys,IloôêBitplanów,Label (pointer bitplanu),rysunek

-funkcja  ta  jest  poûyteczna,  gdy namy wîasnego coppera i chcemy ustaliê
pointer Bitplanów.
 
***---------------------------------
ScreenCopy	Nr.Ekranu(Source),X,Y,Nr.Ekranu(dest),X1,Y1,szer,wys,sposób

-kopiuje boba z jednego ekranu do drugiego.
X,Y - wspóîrzëdne lewego górnego rogu
X1,Y1 - wspóîrzëdne obszaru docelowego
Sposób - w jaki majâ byê skopiowane dane


Przykîad:

ScreenCopy 1,#10,#10,1,#180,#10,#50,#50,#$c0  ;jak widaç na przykîadzie 
				               				  ;ekran source i destination 
				               				  ;moûe byê taki sam

;--------------   BOBY I SPRITE'Y   ---------------------

PasteBobe Nr.ekranu,Skâd,Szer,Wys,IloôêBitplanów,Gdzie,SmoothScroll

-Funkcja ta kopiuje boba z 'Skâd' - do 'Gdzie'

Adnotacja: Patrz Adnotacja BlitClear.
Smooth Scroll to przesuniëcie dokonywane przy kopiowaniu do 0-16 pix.

***---------------------------------
SmartBobe Nr.Ekranu,Skâd,Gdzie,wys,Iloôêbitplanów

-Kopiuje boba z 'Skâd' do 'Gdzie' o Szerokoôci = 8 pix (funkcja korzysta tu
z procesora, a nie z blittera)

***---------------------------------
SetSprite Iloßc spritów,Str.Spr1,Spr2,Paleta

-Tworzy  wîasnego  Sprita  zîoûonego  z  Iloôci spritów (1 lub 2) i wîasnej
palecie

Przkîad: SetSprite 2,Sprite1,Sprite2,KolorekSprita

sprite1:	dc.w	$0000,$0000
			dc.w	$E71E,$F81F
			dc.w	$CE64,$F078
			dc.w	$99A0,$E1C0
			dc.w	$3400,$C700
			dc.w	$E280,$0C00
			dc.w	$C7C0,$0800
			dc.w	$CE00,$11E0
			dc.w	$35F0,$23F0
			dc.w	$3580,$2380
			dc.w	$453C,$6300
			dc.w	$6160,$4318
			dc.w	$8140,$C130
			dc.w	$8040,$C020
			dc.w	$C040,$8000
			dc.w	$0000,$8000
			dc.w	$8000,$0000
			dc.w	$0000,$0000

sprite2:	dc.w	$0000,$0080
			dc.w	$001F,$FFE0
			dc.w	$007C,$FF80
			dc.w	$01E0,$FE00
			dc.w	$0780,$F800
			dc.w	$0FC0,$F000
			dc.w	$0FE0,$F000
			dc.w	$1FF0,$E000
			dc.w	$3FF8,$C000
			dc.w	$3F84,$C078
			dc.w	$6F02,$80FC
			dc.w	$6704,$80F8
			dc.w	$C308,$00F0
			dc.w	$C110,$00E0
			dc.w	$C0A0,$0040
			dc.w	$8040,$0000
			dc.w	$8000,$0000
			dc.w	$0000,$0000

KolorekSprita:	W	$500,$600,$600,$650,itd....

***---------------------------------
MakeMask  szer,wys,modulo,Iloôê Bitplanów,Rysunek,Maska,pamiëç na 1 bitplan

-funkcja  ta  powinna byê stosowana tylko wtedy, gdy poznamy dobrze sposoby
kopiowania  bobów.
szer,wys-szerokoôê  i wysokoôê maski 
modulo  -  to  iloôê bajtów w lini.  Moûna to policzyê ze wzoru:  Szerokoôê
ekranu / 8 
Maska to miejsce w pamiëci na maskë np.

Maska: AB	10240
Pamiëç  na  jeden bitplan:  wyznaczamy to wzorem:  modulo * wysokoôê ekranu
Rysunek:  z którego ma byê utworzona maska

***---------------------------------
Bob		Nr.Ekranu(Source),X,Y,Nr.Ekranu(dest),X1,Y1,szer,wys,sposób,Maska

-kopiuje boba wraz z maskâ

Adnotacja: Jeôli czegoô nie wiesz to patrz ScreenCopy

***---------------------------------
InstallSprite   iloôêSpritów,PointerS0   W  3  bity(Label),PointerS0  N  15
bitów(Label), PointerS1 W 3 bity(Label),PointerS1 N 15 bitow

-Funkcja  ta  jest  potrzebna  dla  osób piszâcych wlasnâ copperlistë przez
funkcjë  SetOwnCopper, lub SetOwnCopper2.  Naleûy w coperliôcie (oczywiôcie
jeôli chcemy mieê pointer myszy) zdefiniowaç labele Pointerów.

Przykîad: 

InstallSprite   2,meml0,memh0,meml1,memh1 ;Uwaga!  waûna jest tu kolejnoôê

Copper:
	dc.w	$0120			;tu zostanie wpisany adres
memh0:	dc.w	$0000
	dc.w 	$0122
meml0:	dc.w 	$0000

	dc.w	$0124			;tu zostanie wpisany adres
memh1:	dc.w	$0000
	dc.w 	$0126
meml1:	dc.w 	$0000
	  
***---------------------------------
PutBobe  skâd,szer,wys,iloôêBitplanów,modulo  Sourcesa,Iloôê  pam.   na  1B
sourcesa,Gdzie, modulo Destination,Iloôê pam.  na 1B destination

-Jeôli  uûywasz  tej  funkcji,  to znaczy, ûe Blitter to dla ciebie pestka.
Funkcja ta sîuûy do kopiowania dowolnych obszarów (szer min=16) z uûywaniem
róûnych modulów, co daje duûâ elastycznoôê w programowaniu.

Adnotacja:   Osoby, które nie znajâ zasad kopiowania blitterem, nie powinny
uûywaê tej funkcji, a np.  PasteBobe

;--------------   TEKST I FONTY   -----------------------

TextLength  	nr.ekranu,dîugoôê zmiennej tekstowej,nazwa zmiennej,Label

-Funkcja  ta  podaje  dîugoôê  zmiennej  tekstowej  w  pixelach  i  wrzucza
obliczonâ wartoôê do Labela zdefiniowanego dîugim sîowem.

***---------------------------------
GetDiskFont 	nr.fonta,nazwafonta,wielkoôê

-Funkcja ta przygotowuje font z dysku do uûycia go w programie.
(maksymalna iloôê fontów = 20)

Przykîad:	GetDiskFont 1,Nazwa,8
	
Nazwa:	Ztxt	'Scala.font'

***---------------------------------
SetFont		nr.ekranu,nr.fonta

-funkcja ta ustala, który font o zdefiniowanym numerze bëdziemy uûywaê.

***---------------------------------
CloseFont 	nr.ekranu,nr.fonta

-Koïczymy pracë z fontem o podanym numerze.

***---------------------------------
SetText 	nr.ekranu,nr.fonta

-ustala charakter pisania fontem (bold,italic,underline)

***---------------------------------
Cline

-wymazuje tekst od kursora graficznego do koïca linii.

***---------------------------------
Print		nr.ekranu,dîugoôê tekstu,Nazwa zmiennej tekstowej

-dziaîa jak kaûda funkcja PRINT w basic'ach, a dokîadniej jak TEXT w AMOSIE

Przykîad:	Print	1,#5,#To	
	
To:	Ztxt	'LIBRA'

***---------------------------------
FixFont1	nr.ekranu,font,Wartoôê1
FixFont2	nr.ekranu,font,Wartoôê1,Wartoôê2,Wartoôê3

-Funkcje  te  sîuûâ  do  koûystania  z  fontów bez poôrednictwa systemu, to
znaczy  ,ûe  swobodnie  "kaûdy"  font  z  dysku  moûna uûyê w programie nie
Dos'owskim.

Adnotacja:   Znalazîem sposób preparowania fontów dyskowych, aby moûna byîo
z  nich koûystaç bez poôrednictwa systemu.  Jeôli ktoô byîby zainteresowany
informacjami  na  ten  temat,  czy  teû miaîby jakiô inny problem, to niech
pisze lub dzwoni do mnie.  Telefon i adres na koïcu Opisu.

;-------------------   BIBLIOTEKI   ---------------------------------------

InitDos

-Otwiera  bibliotekë  Dos.library,a  bazë  biblioteki  zapisuje pod Labelem
DosBase (z niego noûna odczytaê bazë)

***---------------------------------
InitGfx

-Funkcja  analogiczna  do  poprzedniej,  ale  otwiera  biblitekë  graficznâ
(Graphics.library).  Baza zapisana pod GfxBase.

***---------------------------------
InitInt

-Funkcja  analogiczna  do  poprzedniej,  ale  otwiera bibliotekë Intuition.
Baza zapisana pod IntBase.

***---------------------------------
InitOwn    nazwabiblioteki,Label na pointer bazy

-Otwiera  zdefiniowanâ przez u×tkownika bibliotekë oraz wrzuca pointer bazy
pod label.

***---------------------------------
IntCall    skok

-funkcja  ta  robi skok do bibloiteki intuition (tym samym wykonuje zawarte
tam   procedury).    Oczywiôcie   wczeôniej   naleûy   zaîadowaê   rejestry
odpowiednimi wartoôciami.

Przykîad:	IntCall -$42

***---------------------------------
GfxCall    skok

-Funkcja   analogiczna  do  poprzedniej,  ale  skok  bëdzie  do  biblioteki
graficznej.

***---------------------------------
DosCall skok

-Analogiczna do powyûszej, lecz skok bëdzie do biblioteki Dos.

;--------------------------------------------------------------------------
;--------------------------------------------------------------------------

Ogîoszenie:
   Uwaga!!!   Jeôli  jesteô dobry w koderskie klocki i chciaîbyô pomóc mi w
robieniu  dodatkowych bibliotek i funkcji do tego jëzyka, to pisz lub dzwoï
do   mnie.   W  najbliûszym  czasie  LFM.library  (LibraFullMotion),  czyli
naûëdzie  przewyûszajâce  AMOSOWSKIEGO  AMALA o gîowë !!!.  Jeôli chciaîbyô
pisaê  gry,  programy  uûytkowe,  robiê  dema wraz z najliczniejszâ grupâ w
POLSCE  (eeehhm hmm, to taki ûart), to takûe pisz na mój adres lub na adres
jednego z organizatorów grupy The ValidatoR.

	WANTED:	Koderzy,Graficy,Muzycy,Swapperzy

Adresy:
	Mariusz Matras Ul.Bezpieczna 34/9 Wrocîaw Poland. (tel.25-86-33)
	Artur Tarnawski Ul.Bezpieczna 32/18 Wrocîaw Poland.



