25.11.2014 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!