Commodore sayı 18, sayfa 25

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 25

Bütün bu hazır GEOS rutinleri profesyonel software geliştiricilerine çekici ve yüksek performanslı programların hazırlanmasında yararlı olsun ve böylelikle C-64 software pazarına yeni bir atılım kazandırılsın diye düşünülüyor. GEOS kullanımında, bizzat altprogramlar yazmaktansa, hazır bulunan oranlı karakter setlerine başvuruluyor. Ve de Icon'lar, pull-down menüleri ve diyalog penceresi, uygulamacıya üniform bir kullanıcı arabirimi sağlıyor. Böylece alışılageldik programlarda karşımıza çıkan komut dizilerini öğrenmek için yırtınma gereği de kalkmış oluyor: Bir GEOS aplikasyonunun kullanımını öğrenen kişi, prensip olarak, tüm programları kullanabilir hale gelmiş demektir. GEOS'un süratli disket rutinleri sayesinde, artık C-64'de çok sayıda datanın disketten büyük hızla okunması ya da diskete büyük hızla yazılması gereken programların (örneğin Data Management) akla uygun bir kullanımı da mümkün olmakta; bu iş eskiden floppy disklerin yavaşlığı nedeniyle bir sabır sınavı haline gelirdi. Sistem disketinin yüklenmesinden sonra GEOS, C-64'ün belleğinde kalıyor ve ROM'daki alışıldık işletim sistemine paralel çalışıyor. Uygulamacının programları için rezerve edilmiş 23 KByte'lık (konfordan edilen birtakım fedakarlıklarla hattâ 32 KByte'lık) bir bellek parçası hizmete hazır bulunuyor. Aplikasyonun GEOS'la birlikte sistemin belleğinde bulunması, kütüphane rutinlerinin de el altında olması anlamına geliyor. Bu sırada GEOS, programa giriş-çıkışların kontrolünü üstleniyor ve kullanıcının yaptıklarını yönetiyor. Bu bağlamda anahtar kelime, aplikasyonların dışsal olaylarla yönetildiği anlamına gelen “event-driven” kelimesi. “Dışsal olay”'dan da, örneğin, Mouse-cursor'ın hareketi, ateş tuşunun kullanıma sokulması ya da klavyeye dokunulması anlaşılmakta. Bunu somut bir durumu ele alıp açıklayalım: Diyelim ki, disket fihristinden bir program yüklenmek ve cursor ekranda gezdirilip arzulanan aplikasyon-Icon'unun üstüne getirilir ve ateş tuşuna basılır (çıt ettirilir). GEOS özel değişken belleğinde, ekrandaki mevcut gösterimin fiili örgütlenişi hakkındaki tüm bilgilere (“desktop”) sahip bulunmaktadır. Böylelikle, hem tek tek her Icon'un ve hem de cursor'ın ekrandaki koordinatlarını bilmektedir. Aplikasyon Icon'u çıt ettirildiğinde, cursor'ın koordinatlarına göre Icon tablosunda bir GEOS servis rutini belirir ve seçilen programı yükler. Bunun ardından GEOS kontrolü ($400'ün uygulanmasıyla) uygulamacının programına devreder. Bu karmaşık uygulamaların hakkından gelebilmek için, GEOS, birbirlerinden farklı oldukları kadar temel niteliklere de sahip olan iki program yapısı kullanmakta: temel program döngüsü (“main loop”) ve interrupt düzeyi (“interrupt level”). “Main loop” tek ve büyük bir program döngüsü ve büyük “event”-leri kontrol ediyor. Interrupt düzeyi, sınırlı bir çerçevede, birden fazla sürecin eş-zamanlı olarak işleme sokulmasını olanaklı kılıyor. Bunun için de C-64'de her 1/64 saniyede bir gönderilen kesme sinyalinden (interrupt!) yararlanılıyor. Bu demektir ki, bir sürecin gerçekleştirilmesi 1/60 saniyeyi aşamaz. Ancak, “interrupt level” kullanılmakta olan donanımın (klavye, joystick, mouse, vb.) türüne duyarlı olduğundan, bu zamansal kısıtlama özellikle engelleyici olmamaktadır. Bu program tekniğiyle kullanıcının hiç bir eylemi kaybolup gitmemektedir. Her “event” kaydedilmekte ve arada bir tamponda biriktirilmektedir. Kişi, kendi programına, servis rutinlerinin yardımıyla programdan beklediği işlevleri tasarlayarak başlayabilir. Ve tasarladığı bu çatıyı ayrıntılı bir biçimde sınayabilir. Bu modüler program anlayışı tabii GEOS kütüphanelerinin belirli bir modülerleştirilmesini de gerektirmektedir: Menüler, “DoMenu” çağrısıyla kurulurlar. Bu onların ekranda hem dikey hem de yatay olarak görüntülenebilmesini sağlar. Bunun için menü kutusunun dört köşesinin koordinatları ve menünün metni alt-programa verilir. GEOS, bunun üstüne, ekrana datalara uygun bir menü dörtgeni çizer ve bu dörtgene, birer çizgiyle ayırarak, tek tek menü metinlerini yazar. Oranlı karakter seti kullanıldığından, menünün sağ kenarına ilişkin datanın bulunması için bir parça deneme yapmak gerekiyor. En iyisi 319'la başlamak ve bu değeri, dörtgen dolana dek küçültmektir. Ayrıca bu tablodan çeşitli alt-menülerin de listesini okumak mümkündür. Bu tür tablolarla kullanıcı tarafından tanımlanmış Icon'ların oluşturulması da mümkün hale gelmektedir. Bunun için “DoIcons” rutinine Icon tablosuna gönderme yapan bir işaret otomatik olarak başlatılmak istensin. Bunun için, GEOS'un arka planından yönetilen mouse ya da joystick'le sürüklenmiştir. Bu işaretin gösterdiği rutin, sadece bir Icon'u harekete geçirmekle kalmamakta, aynı zamanda da artık gerekmeyen sembollerin silinmesini de üstlenmektedir. Window'ların yönetimi işi de GEOS'ta kurnazca ve yerden son derece tasarruflu bir biçimde çözülmüştür. Çalışma düzlemi önce bir maskebyte'la (iki bit'ten biri konmuş olarak) satır satır geriye boyanır. “Rectangle” rutini kullanılarak tercihe tabi bir doldurucu desenle ekranda bir window açmak mümkündür artık. Dört window köşesinin x-koordinatları (0'dan 199'a kadar) ve y-koordinatları (0'dan 319'a kadar) verilir. “Frame Rectangle” ile pencere bir de çerçeve kazanır. Doldurucu-desen için “SetPattern”'le ayarlanan 0'la 33 arasında bir değer verilebilir. Menülerle diyalog penceresi, çalışma sırasında yazıyla doldurdukları için, GEOS, ekranda görünmez hale gelmiş resim parçalarını kurtarmak üzere 8000 Byte'lık bir tamponbelleği de hazırda bulunmaktadır. “Recover Rectangle”, sonradan, tampona atılmış grafik detayı basitçe kopya ederek, resmin hasar görmüş kısımlarını yeniler. Ayrıca GeoPaint, aynı mekanizmayı, “Undo” fonksiyonu için de kullanmakta. Tampon bellek, RAM olarak aplikasyonların hizmetine de girebilir, ancak bu durumda, üstüne yazı yazılmış grafiklerin yeniden imali imkansızlaşır. Bu durumdan kurtulmanın bir yolu, resmin yeniden çizimi; tabii bu yol daha fazla zamana ihtiyaç gösterir. Ama bu amaçla kullanılmak üzere, “Graphic String” rutini geliştirilmiş bulunuyor: Bu rutin, bir grafiği alıp ara-depolama için bir metin stringine dönüştürür. Yenileme için artık gereken yegâne iş, bu metin stringini window-açıcıya geri vermektir. Bu açıcı, başlangıçtaki resmi, temel yapı taşları olan daire, dikdörtgen, çizgi ve doldurucu-desenlerle yeniden kurar. Oranlı metinlerin çeşitli karakter setleriyle ekrana yazılması da aynı derecede basittir. “LoadCharSet”, GEOS'un sistem disketinden bir karakter setini yükler ve “PutString” arzulanan metni seçilen yazı tipiyle ekrana yazar. GEOS, girilen datanın işlenmesi için

Berkeley Softworks tarafından gerçekleştirilen GEOS işletim sistemi grafik uygulamalar açısından da kullanıcıya büyük kolaylıklar sağlıyor. İkonlar yardımı ile programcılar, daha kolay ve daha insani çalışma olanağına sahip oluyorlar.

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