Amiga Dünyası sayı 11, sayfa 41

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 41

Merhaba assembler'cılar. Geçen sayımızda Seka üzerinden bir örnek vermiştik. Örnek programımız bir window açıyordu. Window Workbench ekranında açılıyordu. Şu anda sadece size ait ve kendinizce yaklaşık bir sayfalık bir yazım yaparak işte bu sonucu elde ettiniz. Tabii bunu söylerken bana kızanlar olabilir. Nasıl mı? Şöyle..

Bana kızacak olan arkadaşlarımızdan kastımız, geçen sayıdaki source text'ini defalarca yazıp da bir türlü çalıştıramayan arkadaşlar. Onlara öğüdüm böyle bir durumda hemen, bu olmuyor diye pes etmemeleri. Çünkü benim de yaptığım gibi sizin de bu gibi zorluklara sabırla ve gayet sakin yaklaşmanız gerekiyor. Bu anda yapmanız gereken şey, hata aramak olmalıdır. Bu olayda herkesin kendine göre bir tercihi olacaktır. Bazıları program text'ini defalarca kontrol edecektir. Veya compile işlemlerini kurcalayacaktır. Çok güzel. Zaten hata da böyle bulunurdu. Fakat sizden istediğim ve size önereceğim tek şey; bakış açınız. Seka'nın başındaki her insan, pardon düzeltme yapıyorum, her programcı klavyedeki hakimiyeti ile, source text üzerindeki yaptığı değişiklikler ile, system üzerindeki etkisi ile kendisini işlemciden bir parça olarak görmelidir. İşlemcinin, programcının yazdığı rutinleri üzerinde yaptığı işleri, programcının da aynen satırları yazarken kafasında biçimlendirmesi gerekir.

Şimdi programımızın açıklamasına geçelim.

Örnek rutinimizde (rutin demek biraz yanlış oluyor. Ona program dememiz daha doğru olur) öncekilerden farklı olarak AMIGA LIBRARY'leri gözükmekte.

Şimdi AMIGA LIBRARY'lerinden size biraz bahsedeyim.

AMIGA LIBRARY Kısaca AMIGA LIBRARY deyimi. Amiga'nın belleğinde bir yerde (bellekteki yerini daha sonra söylerim) duran, bilgisayarda sabit olup, bilgisayarı kapadığınızda dahi silinmeyen, ROM bellek diye adlandırdığımız yardımcı rutin niteliğinde makina kodu programlarıdır.

Pardon düzeltme yapıyorum. Amiga'yla ilgili bütün library'lerin hepsi hafızada sabit ROM bellekte bulunmuyor. Bir kısmını disketten yükleyebiliyoruz. Veya mega programcılar, mega programlarını hazırlarken daha önceden yapıp, birçok programına dahil ettikleri library'lerde bulunmaktadır.

Her Amiga System Library'sinde 2-100 arası rutin bulunmaktadır. Fakat bunda bir kısıtlama yoktur. Rutin sayısı istenildiği kadar çoğaltılabilir.

Tabii yararlarının sonsuz olduğunu söylememe bilmem gerek var mı? Normalde yazımı saatler ya da günler, aylar sürecek rutinleri, bu işin ustaları bizim için hazırlayıp ROM belleğe kaydetmişler. Ne güzeldir ki, bize sadece onları kullanmak kalıyor.

Bunların bir başka yapılış amacı ise programcıları fazla üzmemek. Amiga'nın yapısı olan sistem, workbench, intuition, disket işlemleri ve daha aklınıza gelen her şey hakkında fazla bilgisi olmayan programcıyı bunları öğrenmeye zorlayıp zaman ve beyin yorgunluğu kaybı vermeyip onları belli formatlar içerisinde topluca sistem üzerinde bir derece hakim hale getiriyorlar. Sözünü ettiğim derece; programcının, programına Amiga'nın ileri window, mouse, ekran, ses, multitasking, disk veya Workbench uygulamalarını kolayca dahil edebilmesi.

Mesela Amiga'nın mimarları zamanında bu rutinleri Amiga'nın belleğine koymasalardı diye bir düşünün. Bence o zaman bir felaket olurdu. Nasıl mı? Şöyle. Herkes Amiga'nın yukarıda bahsettiğimiz özelliklerinden yararlanabilmek için kendince bir sürü rutin yazardı. Örneğin biri bir başkasının programına bir göz gezdirdiğinde programın amacından çok program sisteminin tabanını oluşturan rutinleri algılamak için uğraşması gerekecekti. Şöyle durup sakince bir düşünüyorum da, böyle bir problem bu şekilden başka türlü herhalde halledilmezdi.

Bunların yanında, diyelim ki sizin yazmadığınız bir source'u inceliyorsunuz. Örneğin; program başladı. Bir ekran açıcı library rutinini çağıran bir kısım gördünüz. Demek ki ekran açılıyor. Arkasından aynı şekilde bir window uygulaması. Buraya kadar gelindiğinde geçen süre sadece birkaç saniye. Bu mükemmel bir olaydır. Rutinler, tanıdık sistem rutinleri olduğundan anlamak gayet basit. Böylece, programın ve gerçek anlamda programın özünü oluşturan kısımları yakalamak ve anlamak da çok basit bir hal alıyor.

Bu arada başka bir programcının programlarını incelemek sizin için çok büyük adımlar kaydetmek demektir. Fakat inceleyeceğiniz programı çok iyi seçmeniz gerekmektedir. Acemi bir programcının

AMIGA ASSEMBLER

programını incelemek, onu anlamaya çalışmak sizi fazlası ile yoracak ve makine kodu programlama bilginiz üzerinde ters uygulamalardan ötürü zedeleme yapacaktır. Ben bunu bizzat yaşadım. Daima en büyük hedefiniz, usta programcıların küçük programları olmalıdır. Usta programcıdan kastım, işin ehli ve uzun zamandan beri makine kodu çalışmasını yapan, Amiga library'lerini programlarına en iyi şekilde yerleştiren ve ortaya pozitif bir şeyler çıkarmış olanları kastediyorum. Acemi programcı dediklerim ise, program listesi kısa olan ve sadece bir işi yapmak ile görevli olan program yazanlar. İlerlemenin temel öğelerinden biri de budur. Zamanı geldiğinde hep beraber program incelemeleri yapacağız. Şimdilik bu konuda (DE-BUG) bu kadar bilgi yeter. Hatta fazla bile.

ÖMER SİNAN POLAT

Amiga library'leri Amiga'nın varoluşundan beri çok büyük değişikliklere uğramıştır. Programcılar devamlı hataları ve eksiklikleri gidermişlerdir.

Amiga'nın ROM belleğinde bulunan yani akım kesildiğinde silinmeyen library'leri şunlardır.

1- CLIST.LIBRARY: Bu library'deki rutinler Amiga'nın copper listesi üzerinde değişiklikler yapmak için gerekli olan kolaylığı sağlayan rutinleri içerir. Copper listesinin ne olduğunu şu anda sormayın. Çünkü onu anlatmam için daha öğrenmeniz gereken çok şeyler var. Size sadece copper'ın bilgisayarınızın grafik ile işlemlerini süper bir hız ile yapan bir devre olduğunu söyleyebilirim.

2- CONSOLE.LIBRARY: Bu library Amiga'nın Workbench sistemindeki console window'undan yazı çıkışı almak için kullanılır.

3- DOS.LIBRARY: Amiga'nın disk işlemleri için bu library'deki rutinleri kullanabilirsiniz. Bu library ile herhangi bir kayıt cihazından bir file silmek, ismini değiştirmek veya file flag'ları ile oynamak ya da file'ın comment bölümü ile kayıt zamanı değiştirme işlemlerini yapabilirsiniz.

4- EXEC.LIBRARY: Amiga'nızın library'lerinin babasıdır. Diğer library'leri kullanabilmek için de bu library'ye ihtiyacımız var. Neden mi? Çünkü diğer library'lerin açılmasında kullanılan OPEN LIBRARY adlı rutin burada bulunuyor. Bu arada exec library hafızada hazır bulunduğundan yüklemenize gerek yok.

Exec library bu işlerden başka hafıza tahsis etmek ve Amiga'nın input-output kanallarının çalışması ile ilgili rutinleri de içerir.

5- GRAPHICS.LIBRARY: Bu

library, blitter çipinin kontrol fonksiyonlarını içerir. Ayrıca grafik parçalarını kopyalama, dörtgen veya çizgi çizme, yazı yazma gibi basit grafik işlemlerini de yapan rutinleri ihtiva eder.

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