Bu sayfadaki yazılar
Sayfanın metni
Sayfa 72
Merhabalar, yeni bir SEKA ASSEMBLER köşesiyle yine karşınızdayız. Bu hafta size bir sürprizimiz var. Hayır hayır bilemediniz ortada kamera felan yok sadece SEKA ASSEMBLER köşesi olarak 1 yaşına girdik. Yehhooo, sevgili direktörümüzün tüm suikastlerine ve ego operasyonlarına karşın dimdik ayakta olarak 0 yaşını doldurarak 1 yaşına girdik (mantıksal olarak ve yüce assembler kurallarına göre, her şeyin başlangıcı 0 olduğundan, 1 yaşımızı değil 0 yaşımızı doldurmuş olduk). Sevenleri ve okuyanları kutlar nice yaşlar dilerim. Bu arada eski toprak MAC Adventure çatladı. Ayrıca son alınan haberlere göre önümüzdeki üç ay içinde bir köşe bayramı olacak 64LER köşeleri doğum günlerini kutlayacaktır. Her neyse biz traşı keselim ve bu ayki SEKA'ya başlayalım ilk önce mektuplarla başlıyoruz. Geçen ay sayfaya konulması unutulan tablolar da bu sayıda (sağ olsun MAC bey). İlk mektup AMOS köşesine de mektup yazan BURÇAK TÜRKMEN'den geliyor. Burçak arkadaşımız, Seka assembler'la da AMOS gibi çalışmaktayım fakat bu programı kullanırken kaynak ve döküman yokluğu yüzünden pek muvaffak olamıyorum. Varsa bana birkaç mektup önerebilir misiniz? Fiyatlarını biliyor musunuz? Cevap: Tabii ki piyasada birkaç iyi kitap var. Bu kitaplar; 1) AMIGA HARDWARE MANUAL 2) AMIGA ROM KERNEL MANUAL
3) 68000 MACHINE LANGUAGE Bunlarda birincisi, makinenin hardware'ini inceliyor. Yardımcı çiplerin kullanımını işliyor ve bu konuda hardware adresleri gibi temel şeyleri içeriyor. Bir kere bunu alman kaçınılmaz bir şey.
İkinci kitap ise Amiga'da bulunan librarileri işliyor. Bu kitap çok fazla yararlı olmasa bile yine de alınması gereken bir kitap. Üçüncü kitap olan 68000 machine language ise 68000 çipi konusuna giriyor, 68000 komutlarını ve adresleme modları gibi çok yararlı şeyler içeriyor. Bu da üç. Eğer iyi bir Assembler kölesi olmak istiyorsan bu üç kitabı da almalısın. Bu kitapları fotokopi halinde bulabilirsin. Üçünün fiyatları toplamı ise hatırladığım kadarıyla yaklaşık 200.000 TL eder.
Şimdi geçelim bu ayki konumuza.
Hatırlarsanız, geçen ay 68000 komutları bitmişti. Bu ay, yeni bir konuya geçiyoruz. Konumuzun adı Copper çipi. 68000'den ayrı olarak üç tane farklı komutu ve sadece kendisinin kullanabildiği kendine özel hafızası vardır. Üç komutu var deyince hemen küçümsemeyin. Bu üç komutla akla hayale gelmedik efektler yaratabilirsiniz. Bir örnek verirsek, demolarda gördüğümüz yılan gibi kıvrılarak geçen sin scrollar copper çipi yardımıyla yapılmaktadır. Copper'ın yapabileceği birçok işlem vardır. Bu işlemlerin başında veri transferi gelir. Fakat bu transferi sadece hardware registerlerine yapabilir. Copper'la herhangi bir hardware registerine bilgi transfer edilebilir. Ekran çizgi çizgi kontrol edilir. Bu bazı kodlama teknikleri sayesinde pixellere indirilebilir. Copper ekranı çizgi çizgi tarar. Copper'ın taradığı her yatay çizgiye raster satırı denir. Copper 2 cycle'lı bir işlemcidir, ve sadece odd numaralı hafızayı kullanır. Böylece assembler komutlarının neden even adreslerde olması gerektiğini anlayabiliyoruz. Copper çipi de, DMA kanallarını kullanan diğer yardımcı çipler gibi sadece hafızanın ilk 512 K'sını kullanabilir ve copper komutları bu hafızada bulunmalıdır. COPPER LİSTESİ NEDİR: Copper listesi, copper çipinin yapmasını istediğimiz işler için verdiğimiz komutların listesi demektir. Bu komutlar assembler komutları gibi küçük kısaltmalardan oluşmazlar, wordler ya da longwordler formlarındaki sayılardan oluşur. Bu sayıların bitlerindeki bazı değişmeler komutun ne olduğunu gösterir. Copper çipinin üç komutu şunlardır... 1) WAIT 2) MOVE 3) SKIP birinci komut olan wait komutu verilen x,y pozisyonunu bekler ve kendinden sonra gelen işlemi o koordinattan sonra yapar. İkinci komut olan move komutu herhangi bir hardware registerine herhangi bir bilgi yükler. Üçüncü komut olan skip komutu ise eğer raster tarama işlemi verilen x,y koordinatına ulaşmışsa skip komutundan sonraki komut işleme konmaz, atlanır. Eğer tarama bu noktaya ulaşmamışsa sonra gelen komut işleme konur, ve bu döngü böylece gider. Eğer bütün copper listesi çalıştırılıp bitmişse copper başa döner ve listeyi yeniden çalıştırmaya başlar. Şimdi bu komutların bit numaralarını ve örnek kullanımlarını görelim. MOVE KOMUTU: Move komutu bir hardware registerine herhangi bir bilgi yükler. Fakat hardware registerlerine ulaşmada bir limit var. Bu limit, komutun $20 adresi ile registerlere ulaşamamasıdır. İkinci kısıtlama ise Copper Control registerinde bulunan COPPER DANGER BİTİ bir olmadığı taktirde $20 - $40 registerleri arasına etki etmemesi. Komutun uzunluğu iki worddür. Bu iki worddan ilki transfer hardware registerinin adresini tutmakla görevlidir. İkincisi ise transfer edilecek veriyi tutar. Şimdi bu komutun wordlerinin bitlerine bir göz atalım...
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 73
Birinci word:
Bit no: 0; 0 yapılır. Bit no: 1-8; hardware register adresi. Bit no: 9-15; 0 yapılır. İkinci word: Bit no: 0-15: transferi yapılacak veri.
Şimdi bu komut için birkaç örnek verelim... copperlist
DC.W $00e0, $0007 DC.W $00e2, $0000 DC.W $00e4, $0007 OC .W $00e6, $2800 OC .W $00e8, $0007 DC.W $00ea, $5000 OC .W $00ec, $0007 oc~w $00ee, $7800 OC. W $0100,$4200
Yukarıdaki kUçuk copper stesıyle 4 bitplane derınlığınele bir e il' an aç ır • ~ 8 komut bitplane poinıerte ne bltplane adresleri nı yukler. sonuncu omut ise 4 bitplanelik bır ekran açdacağ belirtir. Birind komutu e e a!al D C .W $00e0. $0007 :bu oır.ıt.ıa oc v.:
verılerın word uzun,uğunda o acag bel irtır. Bu ışın assembler e :ıg olan tarafı. copperın ılk komu:u olan SOOeO değeri bitplane 1'in low-poın!er . Yani veri yazılacak hardware ·eg srer adresi. ikincı komut olan 50007 ceğen ise registere yazılacak veo. Bunda sonraki komut ıse bitplane 1.- tuwordünu belirler Boylece bi~00..1e • $70000 adresınde olduğu beb
Diğer komutlarla 2. bitplane $72000'e, üçüncüsü $75000'e, dördüncüsü ise $77800'e konularak 4 bitplane'in pointerleri tanımlanmış olur. Sonuncu ise bitplane kontrol registerine (BPLCON0) $4200 değeri yazılarak 4 bitplaneli bir ekran açılması sağlanır.
Tabıı bu komuı,arı sekaöa )<azaraı çalıştıramaısınız Bu ·omlf'..an çahştırma"- ıç"· o. once stenın adresinı copper çipıne oelirtme sıriz Bu u yapmak ıçın aerde ~:üçü!· progra ar vereceğ m. Şımd ikıncı :.omına geçelim .. WA.T KO UTU:
Wait komutu belirtilen bir x,y pozisyonunu bekler ve işlemler o pozisyondan itibaren devam ettirir. Copper raster pozisyonunu beklerken çip hafıza bus'ını rahatsız etmez. Komutun ilk word'ü x ve y koordinatlarını tutar, ikinci word ise hangi pozisyonun (yatay ya da düşey) kontrol edileceğini tutar. Bu ilk word'ün bitleri aşağıdaki gibidir... İlk word:
Bıt no· O :O yapılır.
Bit no: 8-15: raster ışınının y pozisyonu (yatay). Bit no: 1-7: raster ışınının x pozisyonu.
İkinci word: Bit no: 0: 0 yapılır.
Bit no: 1-7: x pozisyonunu kontrol eden bitler.
Bit no: 8-14: y pozisyonunu kontrol eden bitler. Bit no: 15: BFD biti (Blitter finished disable). Bu bit blitter'ın işlemini bitirip bitirmediğini kontrol eder. Bu komut
içın genış açıklamayı ileriki sayı/arımız da bulabilirsiniz. Omekter: OC W$9601. $FFOO:wait komutu OC .W SOOeO, $0007 :move komutu DC.W $9701, $FFOO :wait komutu OC .W SOOe2. $0000 :move komutu OC W$9801 . $FFOO :wait komutu OC W SOOe4, $0007 :move komutu OC. W S990 1. $FFOO :w ait komutu OC W SOOe6. $2800 ;move komutu OC W $a001, $FFOO ;wait komutu DCW $0100, $2200 :move komutu Y .ı<arıdakı kamullarda ilk komut 150 y
pozisyonlu çizgiyi bekler, raster ışını 150 ($96) çizgiye geldiği zaman bir sonraki komutu çalıştırır. Daha sonra bitplane pointerleri birer çizgi arayla yerleştirilirler. En son ise 154 yatay pozisyonuna gelindiği zaman 2 bitplaneli bir ekran açılması sağlanır. Böylece bu ayki Assembler muhabbetimiz de burada bitmiş oluyor. Gelecek sayıda skip komutunu ve copper kullanımını açıklayacağız. Bu arada bir assembler sorununuz varsa ya da deluxe paint'te çizdiğiniz kuş uçmuyorsa bana bir mektup yazın elbet bir yardım yolu buluruz. Byeeeeeeeeeeee.