Bildiğiniz gibi GEOS, bit-mapped ekran üzerinde me- nüler, ikonlar, diyalog kutuları gibi yüksek düzeyde kul- lanım rahatlığı getiren işleri kullanmakta ve programla- rında oldukça rahatlık sağlamaktadır. Eğer sizin prog- ramlarınızda da bu rahatlığa sahip olmak isterseniz, GE- OS'u kullanmanız size büyük bir avantaj ve rahatlık sağ- layacaktır. Peki ama bütün bu rahatlığı sağlayan GEÖOS nedir? GEOS, tıpkı C-64'ünüzün sahip olduğu kernal gibi ken- di kernal'ına sahip, bu kernal'da pull-down menu, ikon, normalin dört katı hızlı bir disket işletim sistemi, string 1/O rutinleri gibi, program yazarken en çok ihtiyaç du- yacağınız rutinleri saklayan bir işletim sistemidir. (49. sa- yıda kernal daha ayrıntılı biçimde işlenmiştir.) Aslında Desk-Top, yani GEOS'u çalıştırdığınızda karşınıza çıkan ve dosyaları ikon ve menüler yardımıyla kullanmanızı sağlayan program GEOS'a dahil değildir, yalnızca iler- de sizin de yazmayı öğreneceğiniz türden bir uygulama'- dır. GEÖOS yalnızca bu tür uygulama'ları destekleyen bir işletim sistemidir. GEOS kernal'ının içinde iki düzeyde kod çalışmakta- dır. Bunlar ana döngü (Main loop) ve interrupt düzeyi- dir (İnterrupt level). Ana döngü, eventleri tarayarak ge- rekli rutinleri çağıran ve bu arada sizin uygulamalarınızı çalıştıran uzun bir koddur. İnterrupt düzeyi kodu ise sa- niyede 60 kere main kodu keserek donanımı okur. Bu sa- yede, ana döngü ne ile uğraşırsa uğraşsın, sizin bastığı- nız tuşun veya oynattığınız joystick'in hatasız olarak oku- nabilmesi sağlanır. Bunun yanında eğer programınızda interrupt düzeyini kullanmak istiyorsanız yalnızca GE- OS'a kendi interrupt düzeyinin arkasına sizinkini ekle- mesini istediğinizi söylemeniz yeterlidir. Gördüğünüz gibi GEOS gerekli olan bütün yükü kendi üstüne almıştır. Eğer makine dili biliyorsanız, GEOS'la program yazmak- tan daha kolay bir iş olmadığını göreceksiniz. Tabii bu arada belirtmem gerekir ki bu iş de dünyanın en kolay işi değil. Özellikle GEOS daysalarının standartlardan farklı olması yüzünden bazı zorluklar çıkıyor karşımıza. Fakat gelecek ayki yazımızla vereceğimiz “THE ULTI- MATE GEÖOS CONVERTER” programı ile bu proble- mi halledeceğiz. Bu kadar özetten sonra daha ciddi konulara, yani GE- OS kernal rutinlerinin kullanılmasına gelelim: GEOS yaratıcıları her şeyden önce zero page'de ken- dilerine bazı bölgeler ayırmışlar. Bunun sebebi ise 6502 komutlarının zero page kullanımında daha az yer tutması ve daha az zaman alması. Bununla birlikte, bu bölgeler yardımıyla değerlerin kernal rutinlerine yollanması ve ru- tinlerin bu bölgelerde hesap yaparak sonuçlarını yine aynı bölgeler yardımıyla göndermesi, programcının belleğin hangi kısmının kullanıldığını hatırlatması konusunda bü- yük kolaylık sağlar. Bunun sonucunda GEOS'un programcıları $02'den başlayan 30 baytlık bir bölgeyi pseudoregister olarak ayır- mışlar. Bu bölge 15 adet çift baytlık değişkendin oluşur. Bu değişkenlerin isimleri, rO,rl,r2, ...,rl5'tir. Yazımızda bu psoundoregisterlerin low-baytları rN veya rNL ola- rak adlandırılacaklar. (Burada N, register numarasıdır: rÜ, rOL.. gibi). High baytlar ise rNH olarak isimlendiri- lecekler. Bu pseuderegisterler yardımıyla GEOS Kernal rutin- leriyle haberleşmeniz mümkün olacağı için bu bölgelere yazımızda sık sık değineceğim. Bu bölgeler GEOS ker- nal'ının işlem yaptığı tek bölgedir. Bu sayede hiç kork- madan belleğin bize ayrılan kısmını rahatlıkla kullana- biliriz. GEOS Kernal rutinlerine değer yollamanın tek yolu bu pseudoregisterler değildir. Hız gerektiği zamanlar A, X, Y ve hatta carry flag kullanılabilir. Fakat bunlar arasın- da özellikle sık çağrılan rutinlerde kullanılan in-line ça- gırımlar en kullanışlısıdır. In-line çağırımlarda rutine gön- derilecek değerler doğrudan doğruya jsr komutunun ar- KSTE OlAYyı