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ı.
Sayfa 44
Merhaba, GEOS yazımız bu ay da tüm hızıyla devam ediyor. Ama geçen ay can sıkıcı temelleri bitirmiş olduğumuz için bu ay GEOS rutinlerine ve kullanılış şekillerine geçeceğiz. Her şeyden önce ilk bölümde adı geçen pseudo register kelimesinin manasını açıklamak istiyorum. Pseudo register'lar hem GEOS Kernal'ı hem de sizin programlarınız (uygulamalar ve benzerleri) tarafından kullanılan register'lara verilen addır. Yazıda bahsedilen kısımlardan anlayamadığınız bir şeyler olursa dergiye yazmaktan çekinmeyin. Bu sayede daha sağlıklı bir şekilde GEOS kullanımını öğrenebilirsiniz. Evet, gelelim bu ayın konusu olan ikonlar ve menülere. İkonlar GEOS işletim sisteminin temelini oluşturan aktif grafik elemanlarıdır ve genelde sprite boyutlarındadır. Ekranda bulunan ikonlar Kernal ana döngüsüne her girişte kontrol edilirler ve eğer üzerinde ateş tuşuna iki kere basılırsa sizin önceden belirttiğiniz belli bir rutine sıçrama yapılır. Bu rutinden geri dönmek için ise her zamanki gibi RTS komutunu kullanırsınız. Peki bu ikon denen grafik türünü kullanmanın ne yararı var? Bu ikonları bir kez sprite gibi tanımladıktan sonra aktive ederseniz daha sonra gereken her şeyi GEOS'unuza bırakabilirsiniz. Yani bundan sonra o ikonun koyduğunuz yerde aktif durumda kalacağından emin olabilirsiniz. Bu sayede programınız daha gerekli işlemlerle uğraşabilir. İkonları her tür GEOS programında görmeniz mümkündür. En basitinden DESKTOP programını da diskteki programları gösteren grafik blokları ve sağ üst köşedeki disk resmi birer ikondur. DİKKAT!!! GEOS her türlü uygulamanın en az bir ikonu olduğunu farz-
VEDAT HALLAÇ eder. Bu yüzden programınız ikon kullanmasa bile bir boş grafik bloğunu ekranın gereksiz bir yerine koyarsanız hem programınızın çalışmasını sağlarsınız, hem de yanlışlıkla ikonun çağırılması tehlikesinden kurtulursunuz.
İkonlar genelde uygulamanızın hazırlık ve düzenlenme rutinleri safhasında düzenlenir ve aktive edilir. Daha sonra kontrol tekrar GEOS kernal'a bırakılır. Hazırlık ve düzenlenme rutinlerinin adresi Header block'taki BAŞLANGIÇ ADRESİ byte'larında saklanır. Bizim burada göstereceğimiz örnek program önce ekranı temizlemek için JSR Rectangle komutunu kullanır (örneği ilk bölümde verilmişti), daha sonra da ikonları aktive eden Dolcons rutinine sıçrar ve kontrolü tekrar GEOS Kernal'ıma bırakır.