Amiga Dünyası sayı 10, sayfa 45

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 45

İşte Assembler yazı dizimizde yeni bir boyut açıyoruz.

Yan kutudaki makina dili programında Amiga sistem library'lerinin ne olduğu ve nasıl çalıştırıldığı, ardından bu library uygulamalarını kendi programımıza nasıl dahil edeceğimiz ve nelere dikkat edeceğimizi öğreneceğiz.

Yıldızlı satırlardan itibaren gördüğünüz her karakteri aynen Seka editör ekranına aktarmalısınız.

Son satırı da yazdıktan sonra artık açıklamalara geçebiliriz.

Programımızın genel amacı, intuition library üzerinden, Amiga'nın Workbench ekranında basit bir window açmaktır. Artık editördeki yazım işiniz bitti. ESCAPE tuşuna basarak editörden çıkabiliriz. Şimdi Seka'nın direkt komut modundayız. Buradan bir önceki sayıda verdiğimiz tek veya iki harflik bütün komutları kullanabiliriz.

Programımızı compile etmenin zamanı gelmiştir. Fakat daha önce yapmamız gereken çok önemli bir şey var. Programın source listesini diskete kayıt etmek. Bunun için ".W DF0:İsim" komutunu kullanacağız. İsim yerine siz de source'un diskete hangi isim ile kayıt edilmesini istiyorsanız, onu koyabilirsiniz. Kayıt için son bir şey daha söylememiz gerekiyor. Derleyici source listesini diskete daima sizin verdiğiniz ismin sonuna ".S" ibaresi ile kaydeder. Nedeni ise onu diğer Amiga file'larından ayırıp disket directory'sinde source listelerini temsil eden file isimlerini kolayca ayırt etmemiz içindir.

Tabii şu anda editörde hazır durumda bir programımız çalıştırılmayı bekliyor. Hemen A (Compile) komutunu verip iki defa RETURN tuşuna basın. Kısa bir süre sonra bir satır aşağıda NO ERRORS mesajı belirecektir. Böylece herhangi bir Syntax hatası yapmadığımıza emin olabiliriz.

Bu andan itibaren source listesinin obje kodu, Seka çalışma bölgesi içinde hazırdır.

Oluşan makina kodu programı çalıştırmak için JSTART veya GSTART komutunu vereceğiz. GSTART'ı kullanırsak ardından iki defa RETURN tuşuna basmalıyız (Daha sonra açıklanacak). Görünürde hiçbir şey olmamış gibi gözükebilir. Fakat hemen Seka derleyicisinin ekranının arkasındaki ekrana (Workbench ekranına) bir göz gezdirirseniz, Benim window'um isimli bir window açıldığını göreceksiniz.

Eğer programı çalıştırdığımızda bilgisayarınızın power led'i yanıp sönmeye başlarsa veya mouse işaretçiniz hareket etmiyorsa bilgisayarınız kilitlenmiş demektir. Böyle bir durumda ya bilgisayar kendisini bir guru mesajı ile reset eder ya da kendi halinde bekleyip sizin onu reset etmenizi bekler. Örneğimizi çalıştırdığınızda böyle bir sonuç ile karşılaşırsanız hemen derleyiciyi tekrar yükleyip, ardından "R isim" komutunu kullanarak örneği yükleyip dergideki döküm ile karşılaştırınız.

Evet, yazdığınız satırlar işte bu window'un yaratılması içindi. Artık sizin de Workbench ekranında tamamı ile kendi ürününüz olan bir pencere mevcut. Tamam çok güzel de, derleyicinin editörüne

*** AMIGA DÜNYASI *** AMIGA INTUITION LIBRARY WINDOW EXAMPLE *** ASSEMBLER KURSU ÖRNEK 10.1 ***

start: move.l 4,a6

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

move.l INTBASE,a6 lea WINDOW,a0 jsr -$cc(a6) move.l d0,WINBASE beq EXIT2

LOOP: btst #10,$dff016 bne LOOP

EXIT1: move.l WINBASE,a0

jsr -$48(a6) EXIT2: move.l 4,a6

move.l INTBASE,al jsr -$19e(a6) EXIT3: rts

* _________________________________________ INTNAME: dc.b "intuition.library",0 WINNAME: dc.b "Benim Window'um",0

WINDOW: dc.w 20,20 dc.w 300,100 dc.b 0,1 del 0 del $l+ $2+$4+$8 del 0,0 del WINNAME del 0,0 dew 200,50 dc.w 400,200 dc.w 1

INTBASE: del 0 WINBASE: del 0

bir şeyler yazdık. Sonra onu compile ettik. Ardından çalıştırdığımızda ortaya bir window çıktı. Şimdi hepinizin bu source listesi üzerinde az çok bir fikriniz vardır. Hemen sizi bir sürü sorularla yalnız bırakmayıp bu esrarlı ve bilinmeyen dolu satırları açıklığa kavuşturalım.

Bu arada JSTART ve GSTART harflerinin ne anlama geldiğini size kısaca anlatayım.

J komutu (jump) hafızada herhangi bir makina dili programını çalıştırmak için kullanılır, ikinci harf olarak yazdığımız START ise benim programlama tekniğim ile ilgilidir. Anlamı ise source koddaki programın başlangıç label'ının ismidir. Ben bu programda başlangıç label'ı için START demiştim. Siz de kendinizce kolay gelebilecek başka label isimleri kullanabilirsiniz. Mesela başlangıç label'ımızın ismi AMIGA olsaydı, biz programı compile ettikten sonra çalıştırmak için JAMIGA yazmamız gerekecekti. Yani J komutunun çalışma şekli, J + LABEL'dı. Aynı zamanda J ile AMIGA arasında isteğe göre boşluk da bırakabilirsiniz (J AMIGA gibi). Veya sadece J komutunu verirseniz, LABEL ismi vermezseniz, bilgisayar otomatik olarak source kodunun başından itibaren programı çalıştırmaya başlayacaktır.

GSTART komutu için de aynı şeyler geçerlidir. Fakat J ile arasında ufak bir fark vardır. GSTART komutunu verdiğinizde, bilgisayar programı çalıştırmadan önce size BREAKPOINT soracaktır. Bunun anlamı, programın ortasında bir yerde işlemci RTS komutu olmadan RTS görmüş gibi Seka'ya geri dönmesini isteyebilirsiniz. İlk düşünüşte bir anlam veremeyebilirsiniz. Fakat yerine göre BreakPoint'in yararı çok olabilir. En basitinden hata arama ve tespit etmede yararı büyük olmaktadır. Veya yine programın belli bir yerinde programı durdurup Register'lerin değerlerini öğrenmeniz gerekebilir. Ya da başka birisinin programını kurcalarken işlem adımlarını birbirinden ayırmak için bu komutu kullanabilirsiniz. Kısacası BREAKPOINT, 68000 makina kodunun yararı çok olan bir kullanım modudur.

Bu sayı için bize ayrılan sayfalar doldu. Yazı dizimize bu aylık son veriyoruz. Son örneğimizin tam açıklamasını gelecek sayıda yapacağız. Buna ek olarak gelecek sayıda Amiga Library'lerine de gireceğiz ve yukarıdaki programda da görüldüğü gibi son derece yararlı olan bu sistem rutinlerinin, basit ama can sıkıcı işlemleri kolayca ve zahmetsiz yapmamıza ne kadar yaradığını göreceksiniz.

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