Bu sayfadaki yazılar
Sayfanın metni
Sayfa 42
$26(a4d),d0 cınp.w REALLYEND #2,dü 2 ise CLOSEREALI
: WİNDOW'a gn bne.s WAİTREALLY de değilse başa dön
Gördüğünüz gibi, mesaj portu yardımıyla gadget
Bundan sonraki long-word yardımıyla, gadget kliklendiğinde diğer bazı gadget'ların da aktif ya da deaktif duruma geçmeleri sağlanılabilir. Bu yönteme İngilizce'de exclude (bağımlı)
KickStart 1.2 ve 1.3'lerde bu yöntem, sistem türlerindeki bazı ufak tefek ek-
Gadget ID kodunu al, yine REALLYEND'e kodu da aktarılmakta. Biz de bu tanımlama kodunu gadget tanımlama adresinin 38. ve 39. byte'larından meydana gelen word'den alabiliyoruz. EVENT rutininin en alttan üç ve dördüncü satırlarında mesaj portundan gadget'in tanımlama adresini bu-
İuyoruz: move.l — ad move.l
Eh, gadget structure'unun sonuna geldik. En sondaki long-word USER DATA'dır. Bunu şimdilik kullanmadığımızdan 0 değerini almakta. Gelelim gadget structure'ının alt kısmına. Kısaca tanıtmaya, ilk olarak GADGETTEXT adlı structure'ını inceleyelim. Örneğimizde gadgettext alt structure'ı REALITEXT altında yer almakta: REALITEXT:
deb 3,0,1.0 10,5
dc.l REALLYITEXTTEXTI: dc.b Evet, yine bilmediğimiz datalar ve pointer'lar. Hemen açıklamaya geçelim. İlk satırda 4 adet byte cinsinden sayı bulunmakta (3,0,1 ve 0). İlk iki byte olan 3 ve 0, kalem ve renkleri. Bunlar yardımıyla gadget text'imizin istediğimiz renkteki zemin üzerine istediğimiz renkle basılmasını sağlayabiliriz. 1 değerini taşıyan byte, yazının yazılış modunu tanımlamak için kullanılır. Aşağıdaki ufak tabloda kullanabileceğiniz değerler ve olan yazım modları vardır. Bunların detaylı açıklamasını ilerde göreceğiz.
Değer — Yazım modu 0 JAM1 1 JAM2 2 COMPLEMENT 4 INVERSID
İlk satırımızın en sonundaki 0 değeri, hiçbir anlam taşımaz; koymamızın sebebi, bilgisayarın hata etmesini engellemek. Biliyorsunuz, 68000 tek sayı bir adrese erişemez. Erişmeye kalkarsa da crash eder. Bunu engellemek için ya uygun yere bir dc.b 0 ya da bir EVEN komutu eklemek gerekir. EVEN komutu, Seka Assembler derleyicisine has bir komuttur. Görevi bir boş byte bırakarak komuttan sonra gelen komutları ya da dataları çift sayılı bir adrese yerleştirmesidir. Eğer zaten çift sayılı bir adresteyseniz, Seka bu komut yokmuş gibi davranacaktır. Zaten tek sayılı bir adrese erişmeye kalkıştığınızda Seka sizi uyarır ve hatanızı düzeltmenizi ister.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 43
İkinci satırda yer alan iki word, yazımızın gadget içerisinde yerleştirileceği konumdur. Ardından gelen long-word, gadget içinde font kullanımı içindir. Sistem fontundan farklı bir fontla text'imizi içerisine yerleştirmek istiyorsak, buraya fontun adres pointer'ini yazmamız gerekli. Tabii ki bundan önce gerekli library rutinlerini kullanarak fontu açmamız ve disketten yüklemiş olmamız şart. Sıradaki adres pointer'ı hemen az aşağıdaki esas yazıyı göstermekte. En son long-word da bir adres pointer'i ve diğer bir text alt structure'ini tanımlamak için kullanılmakta. Gördüğünüz gibi burada da zincirleme bağlantı yöntemi hala kullanılmakta. Biz, başka bir yazıyı gadget içerisinde basmak istemediğimizden buraya 0 değeri giriyoruz. Fakat yazımız birkaç satırdan oluşuyorsa, bunların herbirini zincirleme yöntemiyle birbirine bağlamak gerekmekte. Sistem ancak bu şekilde diğer yazı satırlarını da görebilecektir. REALLYITEXTTEXTI label'ı ilk gadget'imizin text'ini tanımlamak için kullanılmakta. Gadget text'inin sonuna bitişi belirtmek için bir 0 değeri koymalıyız. Şayet 0 değerini eklediğimizde adres göstergecimiz tek sayılı bir adrese denk düşerse, ya bir 0 değeri daha ekleyin, ya EVEN komutunu ekleyin ya da tırnakların arasındaki yazının sonuna bir boşluk ekleyin. Bu üç yöntem sayesinde yine adres sayacını çift sayılı bir adrese getirmiş oluruz. GADGETTEXT da bittiğine göre, sıradaki diğer bir alt structure'a geçebiliriz: IMAGE. Bu alt structure yardımıyla gadget'imizin kenar çizgilerini tanımlayabilir ya da gadget'ımıza bir resim ekleyebiliriz. İkinci seçenek sayesinde hem programlarınız daha kolay anlaşılır, hem de görsel açıdan da zengin olacak. Bizim örneğimizde, Image REALLYGADGETIMAGE altında bulunmakta. Hemen bu label'dan sonra gelen satırlara bir göz atıyoruz: REALLYGADGETIMAGE: dc.w 2,1
REALLYGADGETIMAGE BORDERVECTORS'ü REALLYGADGETIMAGEBORDERVECTORS: 1,0,70,0,70,18,1,18,1,0 İlk satırdaki iki word, gadget görüntüsünü gadget değme bölgesi üzerinde yerleştirmek için kullanılır. Bu değerler yatay ve dikey koordinat eksenleri üzerinde + ve - olarak kayma miktarını belirler. Bu sayede gadget image'i, gadget değme bölgesi üzerinde istediğiniz yere koyabilirsiniz. Değerler orta nokta merkez alınmak şartıyla kayma piksel olarak belirler. Bundan sonraki iki değer (3 ve 0), çizim ve zemin renklerini tanımlamakta. Ardından gelen byte ise çizim modunu belirler. Bunun için gadgettext alt structure'indaki yazım modları tablosuna bakabilirsiniz. 5 değeri, kenarları tanımlayan 5 çift koordinatın olduğunu belirtmekte. Image structure'inin en alt satırındaki ilk long-word, kenar çizgilerinin koordinatlarını içeren tabloyu gösterir. İkinci long-word, varsa diğer bir image göstermek için kullanılmakta. Bu sayede istediğiniz bitplane sayısında (yine de maksimum 5) gadget görüntüsü yaratabilirsiniz. Gelelim kenar çizgilerini içeren tablomuza: GADGETBORDERVECTORS. Örneğimizde kenarı oluşturan 5 çift koordinat değeri var. Bunlardan ilk ikisi (1 ve 0) çizim kalemimizi yerleştirir. Daha sonraki koordinat çiftleri kalemin sırasıyla gideceği koordinatlardır. Kalem hareket ederken kenar çizgilerini çizecek ve bir dörtgen yaratacaktır. Tabii biz bu çizimi adım adım göremeyiz. Zira blitter bu çizgileri muhteşem bir hızla yaratmakta. Son iki koordinat çifti ise, tekrar başlangıç noktasına dönmemizi ve bu şekilde gadget'i kutuyu kapamamızı sağlar. Örnek programımızın en sonundaki DEPO değişkeni, zaman zaman a6 register'inin içeriğini saklamak için kullanılmakta. Eh, örnek programımızın açıklaması bu kadar. Zaten bize ayrılan sayfalar da burada dolmaya başladı. Artık bana da bir dahaki ay görüşmek üzere hoşçakalın demekten başka bir şey kalmıyor.