Amiga Dünyası sayı 15, sayfa 14

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 14

DİLLER

AMIGA

CENKER ÖZKURT C severler Amiga başına. Artık sıra sizde! Amiga'da baş döndürücü programlar yazmak için, elinizde daha fazla kaynak program olacak. Kaynaklar bizden!

Bu sayımızda, geçen sayıda verdiğimiz örneğin açıklaması dışında, Amiga'da library açma-kapama ve bununla ilgili örnekler göreceksiniz.

Şimdi sizlere Amiga Library'leri hakkında biraz bilgi vererek yazıma başlamak istiyorum. Library'ler (kütüphaneler), adından da anlaşılacağı gibi, içerisinde bilgisayar için gerekli olan sistem komutlarını içerir. Biz herhangi bir programı çalıştırdığımızda, grafik ya da müzik olsun, program kendi için gerekli olan library'i açarak içindeki program parçalarını kullanmaya başlar. Bu program parçaları (routine'ler), Amiga üreticileri tarafından bilgisayarınızın belleğine (Rom'una) yerleştirilmiştir. Tabii ki bu, biz programcılara büyük kolaylıklar sağlamaktadır. Zaten C dili de bu program parçalarını kullanmak için yazılmış en ideal dillerden biridir. Ayrıca Amiga'nın Rom'unun da, C dilinde yazıldığını belirtmeden geçemeyeceğim.

Amiga'da Library'ler, yaptıkları işe göre çeşitli isimler altında toplanmıştır. Örneğin grafik için gerekli olan program parçaları Amiga'da 'graphics.library' olarak isimlendirilmiştir. Eğer biz Amiga'da yeni bir ekran (screen) açmak istersek, 'graphics.library'yi kullanmak zorundayız. Çünkü Amiga bize bu screen'i açmak için 'graphics library' içinde bir routine hazırlamıştır. Biz bu library'i açarak, sisteme grafik alt programlarını kullanacağımızı bildiriyoruz.

Aslında biz bu routine'leri kullanmak zorunda değiliz. Mesela ekran açma işini, biz kendimiz de bir alt routine olarak hazırlayabiliriz. Fakat bu düşünüldüğü kadar kolay bir iş değil. Çünkü böyle bir programı hazırlamak için, hem Amiga Hardware'ini (donanımını) çok iyi bilmeli, hem de bu routine'leri, hardware'e tam olarak ulaşabilmek için Assembler (en hızlı program dili: 68000MC bu dili kullanır.) ile yazmalıyız. Ayrıca şunu da belirtmek isterim ki; C dili içerisinde de Assembler programları yazıp kullanabilirsiniz. Eğer C dili içerisinde Assembler kullanmak isterseniz, biraz Assembler ve Hardware çalışmanız gerekiyor. Zaten bildiğiniz gibi dergimizde, Ömer Sinan Polat arkadaşımızın Assembler kursları yayınlanmakta. Siz de bu yazıları takip ederek hem Assembler öğrenmiş, hem de daha hızlı programlar yazmış olursunuz.

Daha hızlı programlar(ı) dedim. Şimdi soracaksınız, Amiga C hızlı bir dil değilse, neden Amiga'nın Rom'u C dilinde yazılmış? Aslında olay şu; Amiga C dili oldukça hızlı bir dildir. Zaten C Compiler programı da, yazdığınız programları sonuç olarak Assembler diline çevirir. Fakat C'de routine'ler birden fazla amaca yönelik yazılmıştır. Bu programlar çalışırken, devamlı olarak başka programlarla alışveriş içerisindedirler. Bunun amacı, programın hatasız olarak çalışmasını sağlamak; eğer varsa da, bunu kullanıcıya ya da programcıya bildirmektir. Tabii ki bu da programın hızını biraz yavaşlatmaktadır. Fakat bunun bazı avantajları da vardır. En başta gelen avantajı, hem bu routine'leri kullanarak daha kısa zamanda program yazabilmemiz, hem de korkusuzca istediğimiz program parçalarını (routine'leri) kullanabilmemiz. Sadece bu oldukça yeterli bir sebep. Ama öyle program kısımları olur ki, bu kısımların hem çok kısa sürede işini bitirmesi, hem de çok iş yapması beklenir. Bu tür routine'lerin oldukça hızlı olması gerekir. İşte kara gün dostunuz Assembler, böyle zamanlarda yardımınıza koşar.

Şimdi Amiga'da var olan diğer Library'leri ve yaptıkları işleri kısaca görelim; gerçi Assembler'cı Ömer Sinan arkadaşımız geçen sayılarda ayrıntılı olarak Library'lerden bahsetmişti; fakat ben de kısaca değinmek istiyorum. Amiga'nın Library'leri şunlardır:

EXEC.LIBRARY Amiga sisteminizin çalışması için, bu Library'ye ihtiyacınız vardır. Bu Library açılmadan diğer Library'ler açılamaz. Çünkü Library'leri açmak için gerekli olan OpenLibrary() fonksiyonu, 'exec.library' içerisindedir ve hafızada hazır olarak bulunmaktadır. Unutmadan şunu da belirteyim ki: bazı Library'ler Amiga'nızın Rom'unda değil disketlerde saklıdır. Bunlar sonradan hazırlanmıştır. Bu Library'leri kullanacaksanız, disketinizde LIBS directory'si içinde bulunup bulunmadıklarına dikkat edin. Yoksa Library'niz açılamaz.

Exec Library, bunlardan başka hafıza ayıran komutları içerir. Çünkü bildiğiniz gibi, Amiga Multi-Tasking bir alettir. Birden fazla program çalışırken, hangi programın hangi hafızayı kullandığını sisteme belirtmek gerekir. Böylece programlar birbirlerine karışmamış, kısacası aletiniz **Crash** etmemiş olur. Bundan başka exec.library, input-output kanallarının çalışması için gerekli olan program parçalarını içerir.

GRAPHICS LIBRARY Bu Library grafik için gerekli olan yazı, çizim, ve buna benzer grafik routine'lerini içerir. Ayrıca ekrandaki veya hafızadaki bir bloğu taşımak için kullanılan, Amiga'nın yardımcı cipi Blitter'ı kullanır.

DOS.LIBRARY Amiga'nızın disket işlemleri için gerekli olan komutları içerir. Yükleme, saklama, silme, kopyalama gibi..

INTUITION.LIBRARY WorkBench disketinizi taktığınızda, karşınıza çıkan ilk pencere bu Library sayesinde oluşmaktadır. Menüler, ekranlar ve windowlar, bu library ile kullanılabilir hale gelir.

CLIST.LIBRARY Amiga'nızdaki Copper cipi için gerekli değişiklikleri yapmada kullanılır. Copper, grafik içinde kullanılan çok hızlı bir Hardware donanımıdır.

MATHFFP.LIBRARY Basit matematiksel fonksiyonları içerir.

MATHTRANS.LIBRARY Yüksek seviyeli matematiksel fonksiyonları içerir.

MATHIEEEDOUBBAS.LIBRARY Integer (tamsayılar) için basit matematiksel fonksiyonları içerir.

DISKFONT.LIBRARY Disketteki fontları kullanmamızı sağlayan routine'leri içerir. FONTS directory'si içerisindedir.

LAYERS.LIBRARY Ekran hafızalarını kontrol eden program parçalarını içerir.

Bunlar dışında, CONSOLE.LIBRARY, POTGO.LIBRARY, ICON.LIBRARY, TRANSLATOR.LIBRARY de Amiga'nızın Rom'unda bulunuyor.

Library'ler de burada sona erdiğine göre, artık geçen sayımızda verdiğimiz örneğimizi açıklamaya başlayabiliriz. Fakat gene de bu örneği açıklarken, bazı noktaları yüzeysel olarak geçeceğim. Bunlara ileride daha derinlemesine değineceğiz.

Şimdi ilk olarak programımızın başındaki INCLUDE'ların ne işe yaradıklarına bir bakalım.

Include'lardan sonra küçük ve büyük işaretleri arasındaki isimler, programımızın başlangıçta tanımlaması gereken yapıların saklandığı dosya ismini verir. Bu isimler Compiler disketinizin içerisindeki 'include' directory'si içerisinde saklıdır. Include komutundan sonra, bu dosya yüklenerek ilk tanımlamalar yapılır. Bu dosyanın da bir C dosyası olması zorunludur. Çünkü compiler bu dosyayı da derler. Ayrıca bu dosyalarda macrolar, değişkenler ve yapılar mevcuttur. Eğer biz bir grafik programı yazacaksak, içerisinde bu routine'lerin kullanacağı macroları veya yapıları saklayan <graphics/gfxbase.h> dosyasını include ile yüklemeliyiz. Aksi takdirde, grafik library'nin açıldığı adresi saklayan değişkenin (GfxBase) yapısını belirleyememiş oluruz.

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