Commodore sayı 55, sayfa 45

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 45

Yani programınız;

lda 2 ; sistem moti- fini Yo 50 ka- reli olarak jsr SetPattern ; düzenle

jsri Rectangle ; ekranı temiz- le . byte 0 byte 199 . word 0 . word 319 Ida testicons ; ikon datala- rının saklan- dığı sta ; adresleri TO pseudo- register'ine Ida testicons ; yerleştir sta r0 jsr Dolcons ; ikonları akti- ve et rts ; Kernal'a dön

Evet, ana programınız bu uzunlukta. Fakat asıl zor olanı ikonların işlemlerini ayarlayan rutinleri yazmak. Deminki örnek programdaki testicons, ikonların datalarının saklandığı bellek alanının label'ıdır. Sizin ikonları aktive etmeniz için yapmanız gereken şey şimdi açıklayacağım özellikte bir ikon tablosu hazırlayarak bu tablonun başlangıç adresini GEOS Kernal'a bildirmektir. Bu yolla birden fazla ikonu tek komutla ekrana çıkartabilir ve al edeblirsiniz. Bu işi de Dolcons rutinine tablonun adresini r0 registerine koyduktan sonra sıçrayarak yapabilirsiniz.

İKON TABLOSUNUN DÜZENLENMESİ

İkon tablosunun en başındaki dört byte'ta kaç tane ikon tanımlanacağı ve ikonlar gösterildikten sonra imleç'in (GEOS'ta seçimlerinizi yapmanızı sağlayan, joystikle hareket ettirebildiğiniz ok işareti) hangi (x,y) koordinatlarında gösterileceği hakkında bilgi bulunur. Bundan sonra her ikon için sekiz byte olmak üzere ikonlar tanımlanır. Bu byte'lar sırasıyla şu bilgileri verir: 1. ve 2. byte: İkonun grafik datasının saklandığı alanın adresi. Burada adresin saklanması; C-64'ün standardı olan önce alçak (low) sonra yüksek (high) değerlikli byte'ların sıralanması şeklinde yapılır. Bu sayede aynı grafik datasını birden fazla ikon için de kullanabi iz. 3. byte: İkonun byte değeri olarak

X pozisyonu. İkonunuzun X koordinatı 0-319 arasında sadece belli X koordinatlarında bulunabilir. Yani ancak 0,8,16,... koordinatlı X pozi: yonlarında ikon bulundurabilirsiniz. Bu byte pozisyonunu bulmak için kı ordinatı sekize bölmeniz yeterlidir. Bu tür bir sistemin kullanılmasının her X koordinatını vermek için iki byte kullanmayı ve dolayısıyla bellek israfını önlemek. Buna karşılık Y koordinatı 0-199 arasında her değeri alabilir. koordinatı. Bu koordi- -199 arasında olabilir. 5. byte: İkonun X genişliği. Bu değer de X koordinatı gibi byte olarak verilmesi gerekir. X boyutunun kaç piksel olduğunu bulmak için bu değeri sekizle çarpmak gerekiyor. 6. byte: İkonun Y uzunluğu. Bu değer de Y koordinatı gibi kaç piksel uzunluğunda bir ikonunuz olacağını kontrol eder. 7. ve 8. byte'lar: İkon ateş tuşu ile aktive edildikten sonra sıçranacak rutinin adresi. Bu da C-64 standart sistemi ile saklanır. (Alçak byte önce, yüksek byte sonra.) (Tablo 1) 7. ve 8. byte'larda gösterilen rutinde istediğiniz her türlü işlemi yapabilirsiniz. İsterseniz tüm sistemi yeniden başlatabilirsiniz. (Desktop'u yeniden yükleyerek programınızın sona ermesini sağlamak ve benzeri amaçlarla.) Bu rutinlerde ikonunuzun üzerinde ateş tuşuna bir kez mi yoksa iki

TEST İKONLARI :

award JustForFunData ©

byte 3 e

şikonun sol üst köşesi y piksel pozisyonu servis rutini adet ikon data girişi daha ikonun negatifi görünür. Daha sonra bir menüden seçtiğiniz bir işlemle (mesela dosya hakkında bilgi alma - get info-) seçilen ikon üzerinde işlem yapabilirsiniz. GeoPAINT'de de herhangi bir işlemi seçtiğinizde o işlemin ikonu negatif olarak kalır. Yeni bir ikon seçildiğinde ise ilki normale döner ve ikincisinin negatifi gösterilir. Peki ikon-menü ve ikon-ikon arasındaki bu ilişkiler nasıl düzenleniyor? GEOS Kernal'ında iconSelFlag ($84B5 adresinde) adı verilen bir değişken bulunur. Bu değişkenin 6. ve 7. bitleri ikon seçiminde neler yapılacağını kontrol eder. Eğer bit 7 set edildiyse, aktive edildiği zaman ikon önce negatif, sonra normal olarak görünerek seçildiğini belli eder. Bu modu seçmek için $8b45 adresine vereceğiniz değeri $80 değeriyle OR'lamanız gerekmektedir. İkonlar aktive edildiği zaman ne kadar uzun süre negatif olarak kalacakları selectionFlash ($84B3) adresiyle ayarlanmaktadır. Bu adresin orijinal değeri 10'dur. Eğer bit 7 reset ve bit 6 set durumunda ise ikon seçildikten sonra devamlı olarak negatif olarak kalacakkez mi basıldığını kolaylıkla anlaya-

Klavyeyle gezinmek için ← ve → tuşları.