Commodore sayı 49, sayfa 21

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 21

ESS VEKTÖRÜ İLE ÇİFTE CLICK

Çifte click mouse'u arka arkaya iki kere click etme anlamına gelir. Bu işlemin bir ikon üzerinde yapılmasını ikonlara geldiğimizde göreceğiz. Burada otherPress Vektör ile çifte click konusundan söz edeceğiz. GEOS Kernal'da bir çifte click şu şekilde gerçekleştirilmektedir. Mouse ekran alanı üzerinde ilk defa click edildiğinde otherPress Vektörü çağırılır. Servis rutinin bir parçası olarak, değişkeninin değerini kontrol eder ve eğer 0 ise, CLICK-COUNT sabitiyle yükleriz. Ondan sonra servis rutinimiz, tek bir click ve sonra return için gereken her şeyi yapar. BAŞLANGIÇ

Bir uygulamanın GEOS deskTOP ile çalıştırıldığı zaman yapması gereken ilk şey menülerini, ikonlarını tanımlamak ve klavye girdileri ve mouse'a basılacak durumlar için çağrılacak servis rutinlerini göstermektir. Aynı zamanda ekranı temizlemeli ve genel ekran görüntüsünü oluşturmak üzere gerek duyduğu grafik biçimleri çizmelidir. Bir kullanıcı uygulamanın ikonuna deskTOP'tan click ederse GEOS Kernal sistemi bir default durumuna getirecek, uygulamayı yükleyecek, ve uygulamanın başlangıç rutinine doğru bir altrutine atlama işlemi gerçekleştirecektir. Başlangıç rutininin adresi uygulamanın Dosya Başı bloğunda gösterilmektedir, bunlara daha sonradan ayrıntılı olarak değineceğiz. Başlangıç rutini menüleri, ikonları ve başka eventleri tanımlamak için data tablolarına sahiptir ve tabloları okuyup eventleri gerçekleştirmek için GEOS rutinlerini çağırırlar. İlk ekranı da çizer. Tamamlandıktan sonra, başlangıç rutini GEOS Kernal'a döner. GEOS Kernal'daki ana program döngüsü şimdi çalışmaya başlamış ve menü seçimi, ikonlara basılması ve başka eventleri halletmek için hazır durumda olacaktır. Herhangi bir event başlatılırsa, GEOS Kernal uygulama tarafından belirlenmiş servis rutinini çağırır. Başlangıç rutinleri gibi, her servis rutini daha sonra GEOS Kernal'a döner.

GEOS KERNAL YAPISI

GEOS Kernal içinde çalışan iki düzey kod vardır. Bunları (MainLoop) Ana Döngü ve (InterruptLevel) Interrupt Düzeyidir.

ANADÖNGÜ

GEOS Kernal AnaDöngüsü uzun bir döngü kodudur. Eventleri tarayıp uygun uygulama servis rutinini çağırır. Devrini tamamladığı her sefer, AnaDöngü kodu kullanıcı girdilerinin olup olmadığına bakar ve anlamını belirler. Örneğin bir mouse click edilmesi: bir ikonun seçilmesi bir menünün açılması açık bir menüden bir maddenin seçilmesi ya da, menü ve ikonların dışında, otherPress Vektörünün aktive edilmesi anlamlarına gelebilir. Klavye girdisi: Kullanıcı ya bir metin girdi ya da GEOS Kernal tarafından işlenecek bir diyalog kutusu için metin girildi. Bir süreç devre arası ise: bir uygulama servis rutinin çalıştırılması gerektiği anlamına gelir. Bu girdiler verildikten sonra, AnaKod ne yapacağına karar verir. Örneğin bir menü olması durumunda 1. bir altmenünün indirilmesi gereği olup olmadığına, menü düzenleme seçeneklerinin gösterilip gösterilmeyeceğine ya da, 2. bir servis rutinini tetikleyen bir maddenin seçildiğine ve uygulama servis rutinin çalıştırılması gerektiğine karar verecektir.

INTERRUPTDÜZEYİ

GEOS Kernal Interrupt (Kesilme) Düzeyi kodu C-64'te bir raster interrupt tarafından saniyede 60 kere tetiklenen 6510 IRQ interrupt ile uğraşır. Saniyenin altmışta birinde, işlemcinin AnaDöngü uygulaması durur, InterruptDüzeyi kodu çalıştırılır. InterruptDüzeyi saniyenin altmışta birinden çok daha çabuk bir sürede tamamlanır. Tüm yaptığı donanımı okumaktır. Böylelikle AnaDöngü saniyenin altmışta birinden daha uzun sürse bile (örneğin çok uzun uygulama servis rutinleri gibi) InterruptDüzeyinin donanımla zamanında etkileşimi sürecektir. Klavyede basılan tuşlar boşa gitmeyecektir. InterruptDüzeyi makinanın o sıradaki durumunu save eder ve donanımla direkt olarak etkileşimi sürdürür. Eğer mouse düğmesine basılırsa, InterruptDüzeyi Ana Döngü tarafından kontrol edilen bir flag (bayrak) yerleştirir. AnaDöngü mouse'un bir ikon, menü ya da başka bir yerde olmasına göre ne yapılacağına karar verir. Böylece bir event dizisinin ilk kısmı her zaman InterruptDüzeyinde başlar. C-64 programcıları kendi AnaDöngü ve InterruptDüzeyi kodlarını yazmaya alışıktırlar. Bu işin GEOS Kernal tarafından zaten yapılmış olduğunu kavramak önemlidir. GEOS Kernal programcının üzerine et koyduğu bir iskelet gibidir. GEOS uyumlu program uygulamaları eventleri ve onları halledecek servis rutinlerini tanımlamak için bir dizi tablodan oluşur. Kontrolün akış yapısı Kernal tarafından belirlenir. Bir servis rutini her zaman AnaDöngüye döner. Her servis rutini ekranı yeniden oluşturabilir, tüm eventleri yeniden başlatabilir, sonra da AnaDöngüye dönebilir. Böylece uygulamanın tüm yeni fonksiyonlarıyla başka bir “ekrana” gitmesini sağlayan bir menü tanımlanabilir. Bu yeni menü ve ikonları başlatabilir. Menü kalemi servis rutini AnaDöngüye döndüğünde, AnaDöngü eventleri kollamaya devam edecektir, ama yalnızca yeni tanımlanmış olanlarını. Daha sonra da genellikle bir ikona basılıp basılmadığına bakılır. Ama bir menü seçildiyse, AnaDöngü ikon kontrolünü atlayacaktır. Çünkü aynı anda bir ikon ve bir menü seçilemez. GEOS Kernal ayak işlerinin çoğunu yaparak programcının her seferinde Amerika'yı yeniden keşfetmek zorunda kalmasını önleyecektir. geoWrite, geoPaint ve deskTOP gibi kompleks program uygulamaları için bile bu durum geçerlidir. Programlamayı daha da kolaylaştırmak üzere, GEOS Kernal pek çok yardımcı rutinler sağlar (grafik, metin, disk). Bunlar uygulamaların geliştirilmesinde yardımcıdırlar.

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