Amiga Dünyası sayı 11, sayfa 42

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 42

6- INTUITION.LIBRARY: Adından da anlaşıldığı gibi intuition rutinlerini içeriğinde bulundurur. Bu library sayesinde ekran açmak, window açmak veya Amiga menülerini kendi programımıza eklemek çok basit bir hal alır. Hatta son örneğimiz bunun bir uygulamasını içermektedir.

7- LAYERS.LIBRARY: Bu library ekran hafızaları ile ilgili işlemleri içeren rutinleri ihtiva eder.

8- MATHFFP.LIBRARY: Basit matematik değişkenleri işlemleri için rutinler mevcuttur.

9- POTGO.LIBRARY: Analog girişler için kullanılan bir library'dir.

10- TIMER.LIBRARY: Bu library kritik programların çalışması üzerine zamanlama işlemlerini içeren rutinleri ihtiva eder.

Amiga'nın normal Workbench disketinde bulunan ve istenildiğinde buradan yüklenen library'lerin listesi ise şöyle:

1- MATHTRANS.LIBRARY: Bu library'de yüksek seviyeli matematik fonksiyonlarını içeren rutinler mevcuttur.

2- DISKFONT.LIBRARY: Bilirsiniz; Amiga'nızın Workbench'inde kullanıldığı standart font, topaz.font'tur. Topaz.font dışında herhangi bir fontu kullanmak ve o font ile çalışmak istediğinizde, gereken rutinleri bu library içinde bulabilirsiniz.

3- ICON.LIBRARY: Bu library, Workbench sembolleri (icons) işlemleri için hazırlanmıştır.

4- MATHIEEEDOUBBAS.LIBRARY: Bu library integer sayılar için basit matematik fonksiyonlarını içerir.

5- TRANSLATOR.LIBRARY: Bu library Amiga'nızın konuşma chip'ine sizin verdiğiniz text'i okuması için gerekli convert işlemini içeren makine kodu rutinleri ihtiva eder.

Bunlardan başka, diğer Amiga programcılarının da yazdığı library'ler de bulunmaktadır. Bunlar genelde Workbench disketinde bulunmayıp kullanıldıkları programların kendi disketlerinde bulunurlar. Tabii bilmem söylemeye gerek var mı? Programın çalışması için o diskette bulunmaları gereklidir. Herkesin yazabileceği bu library'lerin hepsini bilemeyeceğimden şu ana kadar elime geçenleri size aktarayım.

1- ARP.LIBRARY: Arp.library, Workbench tabanlı programlarda kullanabileceğiniz ve programın file işlemleri ve diğer kısımlarındaki window ve options işlemlerine belli bir formata kolaylıklar getirmek üzere hazırlanmıştır.

2- REQ.LIBRARY: Requester library'de aynen Arp library gibi işlemler için yapılmıştır. Fakat yapı olarak Arp Lib.'den çok daha hızlı çalışmaktadır. Ayrıca özelliklerini karşılaştırdığımızda Requester library tercih edilmektedir.

3- IFF.LIBRARY: Adından da anlaşılacağı gibi IFF file'ları ve onların kayıt işlemleri ile alakalı rutinler içerir.

4- DIGITIZER.LIBRARY: Amiga'nın digitizer'larını kendi programlarımıza dahil etmek için gerekli olan rutinleri içeren bir library'dir.

Yukarıda kısaca ne işe yaradıklarını anlattığımız library'lerin yüzlerce rutin ve bunların açıklamalarını yapamayacağız. Fakat sizin konuyu öğrenebileceğiniz kadarını anlatacağım.

Tabii şu anda son örneğimiz doğrultusunda library açıklamalarımızı yönlendiriyoruz.

Library rutinleri hakkında bilinmesi gereken önemli hususlardan biri de, her rutinin bir veya birden çok parametresi bulunabildiğidir. Bu parametreler yardımı ile o rutinin yaptığı işe bir yön vermiş oluyoruz. Bu işleme BASIC'teki komut ve komutun parametreleri olarak benzetme yapmak en doğrusudur.

Mesela BASIC'te kullanılan LOCATE 10,20 komutunun ne anlama geldiğini hepimiz bilmekteyiz! Burada LOCATE, komutun ismi; 10 ile 20 ise komutun parametreleri olmaktadır. Aynı format makine dilinde library kullanımları içinde geçerlidir.

Bir library'yi kullanmak için ilk önce onu yüklemeniz gerekmektedir. Yükleme işlemi için EXEC.LIBRARY'yi kullanacağız.

Herhangi bir library'yi yükleme işlemini makine koduna şu şekilde çevirebiliriz.

MOVE.L4,A6 LEA INTNAME,A1 JSR -$228(A6)

INTNAME: dc.b "intuition.library",0

Evet görüldüğü gibi bu üç satır, son örneğimizin de ilk üç satırı ile aynıdır.

İlk satırdaki MOVE komutu Exec library'nin rutinlerinin hafıza adreslerini içeren tablonun başlangıcını verecektir.

İkinci satır Exec'deki OpenLibrary rutininin bir parametresidir. Yaptığı iş, açılacak library'nin isminin adresini A1 register'ına yazmak olmaktadır. Yukarıda INT-NAME bir label olmaktadır. Gösterdiği hafıza adresi ise intuition library yazısının başlangıcı olan yerdir. Burada dikkat edilmesi gerekli bir şey de isimden sonra 0 değeridir. Bu NULL (0) değeri ismin bittiği anlamına gelir.

Üçüncü satıra geldiğimizde, artık rutini çağırmanın zamanı gelmiştir. Exec library'deki OpenLibrary rutininin tablo adresi olan -$228 sayısını (A6)'nın içeriğine ekleyerek rutinin bulunduğu adrese atlanır. Ve işlem tamamlanınca bir alt satırdan itibaren program devam eder.

Window açıcı örneğimize şöyle bir bakınca tamamen library'lerden oluştuğunu göreceksiniz. Boşluklar ile aralanmış satırlar birer library uygulamalarını ifade etmektedir.

Kısaca programın gidiş hattını size açıklamak gerekirse;

İlk beş satır INTUITION.LIBRARY'yi açmaya ve onun rutin tablosunun adresini INTBASE label'lı hafıza adresine yazmaktan ibarettir.

6-10 arası satırlar WINDOW'u açmak için intuition library'den OpenWindow rutininin uygulanmasıdır.

11-12 arası satırlar Mouse'un sağ tuşunu beklemekle alakalıdır.

13-18 arası satırlar Window'u ve Intuition library'yi kapamakla görevlidir.

Diğer satırlar da yukarıda kullanılan üç rutinin diğer parametrelerini oluşturmaktadır. Bu satırları ayrıntılı olarak aşağıda anlatacağım.

Şimdi her zamanki gibi örneğimizin satır satır açıklamasını verelim.

Anlayış bakımından size programı oluşturan rutinleri tek tek bölmeden vereceğim.

start: move.l4,a6

lea INTNAME,al jsr -$228(a6) move.l d0,INTBASE beq EXIT3

Programın ilk parçasında yaptığımız iş, intuition library'yi açmaktır. İlk satırdaki MOVE.L 4,A6 komutu, hafızada hazır olarak bekleyen Exec library'nin rutin tablo adresini A6 register'ına gönderiyor. Arkasından intuition library yazısının hafızada bulunduğu adresi A1'e gönderiyoruz. Jsr -$228(A6) ile rutin çağrılıyor. Ve bir alt satırdaki MOVE.L D0,INTBASE satırının önemi çok büyük olmakta. OpenLibrary rutininden çıktıktan sonra bilgisayar D0 register'ına intuition library'nin tablo adresini atayacaktır. Bu bölümün son satırı ise, eğer intuition library açılamazsa D0 register'ındaki değer 0 olacaktır. Böyle bir durumda olmayan library'den rutin çağıramayacağımız için bilgisayarı kilitlenmeden kurtarıp library açılmadan doğrudan programdan çıkmasını sağlarız.

Yazı dizimizi bu aylık noktalıyoruz. Gelecek sayı programımızın diğer satırlarının açıklamalarına devam edeceğiz.

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