Amiga Dunyasi - Sayi 21 (Subat 1992).pdf - Retro Dergi
Amiga Dunyasi - Sayi 21 (Subat 1992).pdf - Retro Dergi
Amiga Dunyasi - Sayi 21 (Subat 1992).pdf - Retro Dergi
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
DERLEYİCİLER<br />
nı barındırır, 'jsr -<strong>21</strong>6(a6)' ile de fonksiyonumuzu<br />
çağırabiliriz. Tabii ki her zaman<br />
olduğu gibi uygun library önceden açılmış<br />
olmalı (bizim durumumuzda intuition library)<br />
ve bunun base adresi a6 register'mda<br />
bulunmalıdır.<br />
Intuition library'de iki değişik fonksiyon<br />
da ScreenToBack ve ScreenToFront<br />
fonksiyonlarıdır. Bunlar yardımıyla istediğiniz<br />
ekranı öne çıkarabilir ya da en arkaya<br />
koyabiliriz. Bu fonksiyonların kullanımı<br />
tabii ki birden fazla screen kullandığınızda<br />
yararlı sonuçlar verebilir. Ön plana<br />
çıkarılması ya da arkaya atılması istenen<br />
pencerenin pointer'ını a0 register'ına atadıktan<br />
sonra, uygun fonksiyonu çağırmamız<br />
işlemin uygulanması için yeterli olacaktır.<br />
ScreenToFront fonksiyonun ofseti -<br />
252 (=-$fc), ScreenToBack'inki ise -246<br />
ı=-$f6)'dır.<br />
Aynı şekilde de Window IoBack ve<br />
WindowToFront fonksiyonları çalışmaktalar.<br />
Bunlarda da sadece window pointer'ını<br />
a0'a koymanız ve jsr yardımıyla<br />
fonksiyonu çağırmanız yeterli. Bu iki<br />
fonksiyon da aynı screen'lerde olduğu gi-<br />
">i pencereyi ön plana çıkarır ya da en arkaya<br />
atar. WindowToBack'in ofseti -306<br />
=-$132), WindowToFront'un ofseti ise -<br />
; 12(=-$138)'dir.<br />
DisplayBeep fonksiyonu yardımıyla is-<br />
TABLO I - Çeşitli library fonksiyonları<br />
tediğiniz screen üzerinde bir anlık bir<br />
flash etkisi yaratabilirsiniz. Bu şekilde<br />
kullanıcıya hata yaptığını kolaylıkla bildirebilirsiniz.<br />
Bu fonksiyonu kullanmak<br />
için, sadece flash ettirilecek olan screen'in<br />
pointer'ı a0 adres register'ına atanmalı ve<br />
'jsr -96(a6)' yardımıyla da fonksiyonun<br />
kendisi çağnlmalıdır.<br />
Herhalde bu aylık bu kadar intuition library<br />
açıklamaları yeter. Şimdi dilerseniz<br />
biraz da graphics library'sine göz atalım.<br />
Burada ilgimi ilk çeken fonksiyon<br />
BltClear. Bu fonksiyon yardımıyla<br />
blitter'ı kullanarak yüksek hızda hafıza temizleyebiliriz.<br />
Fakat bunun için temizlenecek<br />
hafıza bölgesinin blitter erişim alanı<br />
içinde bulunması şart. A3000'lerde bu<br />
alan ilk 2 MByte'lık bölgedir, fakat çoğumuz<br />
normal bir <strong>Amiga</strong> kullandığı için bu<br />
bölgeyi 512 KByte (=Chip memory) ile<br />
sınırlamak zorunda kalıyoruz. Olsun, zaten<br />
bu fonksiyon daha çok grafik gösterimi<br />
olan programlarda kullanılabilir. Ekrandan<br />
hızla bir bölge silineceği zaman bu<br />
fonksiyon işimizi görür. Chip memory dışında<br />
kalan bölgeler için de, ne yazık ki<br />
dededen kalma yöntem olan loop içinde<br />
her byte'ı teker teker silme şeklini kullanmak<br />
zorundayız.<br />
BltClear fonksiyonu, iki şekilde çalışabilir.<br />
İlk yöntemde verilen adresten sonra-<br />
ki byte'lar direkt silinir. İkinci yöntem ise<br />
hafızadan dörtgen bir alanı silmek için<br />
kullanılır. Bu yöntem, grafik ağırlıklı<br />
programlarda bir hayli kullanılmakta. İlk<br />
önce dilerseniz ilk yönteme bir göz atalım,<br />
al adres register'ına silinecek bölgenin<br />
başlangıç adresi yazılmalı. d0 register'ında<br />
ise silinecek bölgenin byte olarak<br />
uzunluğu girilir. Bu değerin çift bir sayı<br />
olmasına dikkat edin. d1 register'ı ise silme<br />
şeklini belirleyen flag'dır. Burada normal<br />
silme modunu kullandığımızdan 1. biti<br />
(%000000x0) set etmemiz gerekir. 0.bit<br />
(%0000000x) set edilmiş ise blitter'ın<br />
yaptığı işlemleri bitirmesi beklenir. Demek<br />
ki, düz silme için di register'ına yazacağımız<br />
değer 3 olmalı. Fonksiyonu -<br />
300 (=-$12c) ofsetiyle çağırabiliriz.<br />
İkinci silme modundaysa demin de belirttiğim<br />
gibi hafızadan dörtgen bir alan<br />
temizlenebilir. Bunun için di'e 1 değerini<br />
yazmak gerekmekte. d0 ise hem dikey,<br />
hem de yatay boyutu belirlemek için kullanılır.<br />
Alt değerlikli 16 bit yatayda silinecek<br />
byte adedi (1 byte=8 piksel!), diğer 16<br />
bit ise dikeydeki satır adedini belirler. Yataydaki<br />
byte adedi 128'i, dikeydeki satır<br />
adedi de 1024'ü geçmemelidir.<br />
Eh, bu aylık da ne yazık ki yerim doldu.<br />
Yine size bir dahaki aya görüşmek üzere<br />
hoşçakalın demekten başka birşey kalmıyor.<br />
Fonksiyon ismi:<br />
Bulunduğu library:<br />
Ofseti:<br />
Parametreleri:<br />
" giriş bilgileri:<br />
* çıkış'bilgileri:<br />
DisplayAlert<br />
'ntuition.library'<br />
-90 (=-$5a)<br />
AlertNumber->d0;<br />
String->a0; Height->d1<br />
RECOVERABLE.ALERT<br />
kullanıldığında sol mouse<br />
tuşuna basıldığında 0, sağ<br />
tuşa basıldığında -1.<br />
DisplayBeep<br />
'ntuition.library'<br />
-96 (=-$60)<br />
Screen->a0<br />
yok<br />
MoveScreen<br />
'intuition.library'<br />
-162(=-$a2)<br />
Screen->a0; dx->d0; dy->d1<br />
yok<br />
Fonksiyon ismi:<br />
Bulunduğu library:<br />
Ofseti:<br />
Parametreleri:<br />
* giriş bilgileri:<br />
* çıkış bilgileri:<br />
MoveWindow<br />
'intuition.library'<br />
-168 (=-$a8)<br />
Window->a0; dx->d0; dy->dl<br />
yok<br />
ClearPointer<br />
'intuition.library'<br />
-60 (=-$3c)<br />
Window->a0<br />
yok<br />
PrintrText<br />
'intuition.library'<br />
-<strong>21</strong>6(=-$d8)<br />
RastPort->a0;Intuitext->a1;<br />
x->d0; y->d1<br />
yok<br />
ScreenToFront<br />
'intuition.library'<br />
-252 (=-$fc)<br />
Screen->a0<br />
yok<br />
Fonksiyon ismi:<br />
Bulunduğu library:<br />
Ofseti:<br />
Parametreleri:<br />
* giriş bilgileri:<br />
* çıkış bilgileri:<br />
ScreenToBack<br />
'intuition.library'<br />
-246 (=-$f6)<br />
Screen->a0<br />
yok<br />
WindowToFront<br />
'intuition.library'<br />
-312 (=-$138)<br />
Window->a0<br />
yok<br />
WindowToBack<br />
'intuition.library’<br />
-306 (=-$132)<br />
Window->a0<br />
yok<br />
BltClear<br />
'graphics.library'<br />
-300(=-$12c)<br />
Memory->a1;<br />
Size->d0;Flags->d1<br />
yok<br />
AMIGA DÜNYASI 47