64'ler sayı 43, sayfa 23

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 23

YER REGISTER'LERİ : Copper listesi-

nin yerini copper'a bildirmek için kullanılan hardware register'leridir. Bu amaçla 4 adet register ayrılmıştır. Fakat bu register'ler adres belirlemede kullanıldığından, 4 register Hi-pointer'lar ve low-pointer'lar ikişer, ikişer ayrılmıştır. Bu register'lerin adları şöyledir: COP1LC copper listesi adresinin yüksek 3 biti. COP1LCL copper listesi adresinin alt 16 biti. COP2LCH : İkinci copper listesi adresinin yüksek 3 biti. COP2LCL : İkinci copper listesi adresinin alt 16 biti. Hardware register'lerine bazı adresleri yazmak için mutlaka iki adet hardware register'i gerekmektedir, bu amaçla adres yazılması gereken register'ler iki ayrı register olarak, birisi high 3 bit, diğeri ise low 16 bit alır. Bunun sebebi hardware register'lerinin 16 bit olması fakat bu register'lere yazılacak chip ram adreslerinin 19 bit olmasından doğan bir durumdur. Örnek olarak COP1LC register'i COP1LCH ve COP1LCL olarak ikiye ayrılmıştır. Register'ine $25000 adresini yazmak için, ilk önce COP1LCH'ye $0002 değerini daha sonra register'ine ise $5000 değerini yazmalısınız. ATLAMA ADRES REGISTER'LERİ Atlama adres register'lerinden birine yazdığınız zaman, copper belirtilen COP LC adresine atlar ve copper listesini o adresten yeniden başlatır. Bu işlem için iki adet register ayrılmıştır. Bunlar; COPJMP1 ; Copper'ın COP1LC'deki adresten yeniden başlatılmasını sağlar. COPJMP2 ; Copper'ın COP2LC'deki adresten yeniden başlatılmasını sağlar. COPPER KONTROL REGISTER'LERİ : Daha öncede gördüğümüz gibi, copper istenildiği zaman bazı hardware register'lerine kısıtlama olmaksızın ulaşabiliyor, $10 - $20 adresleri arasında bulunan register'lerine ise sadece copper kontrol register'indeki CDANG (Copper Danger Bit) bitinin 1 yapılması durumunda ulaşabiliyordu. İşte copper kontrol register'i bu işlemi yapabilmemizi sağlamak için ayrılmıştır. Copper kontrol bitinin adı COPCON'dur ve kullanılan sadece bir adet biti vardır. Bu bit CDANG bitidir. ÖRNEK COPPER LİSTESİ : Şimdiki örneğimiz her şeyiyle tamam ve çalışmaya hazır bir copper komut listesidir. Copper listemiz, iki bitplanelik (birisi $21000, diğeri $25000 adreslerinde olmak üzere). Ekran renkleri ise beyaz, kırmızı, yeşil ve mavidir. Fakat beam pozisyonu 150 (y pozisyonu) ye geldiğinden renk yazmaçları değiştirilir ve renkler, siyah, sarı, uçuk mavi ve eflatun olarak değiştirilir. Şimdi örnek listeye bir göz atalım... COPPERLİST:

;Bitplane pointerlerinden ikisine $21000 ve $25000 adreslerini yükle.

; registerine $2 değerini yükler. ; $E2 (BPLİPTL) registerine $1000 değerini yükler. — ; $E4 (BPLAPTH) registerine $2 değerini yükler. ; $E6 (BPL2PTL) registerine $5000 değerini yükle.

; Renk registerlerini ayarla.

;$180 (COLOR0O) registerine beyaz rengini yükle. ;$182 registerine kırmızı ($100) değerini yükler. DC.W $184,$00F0 — ;$184 (COLORO2) registerine yeşil ($10) de- ğerini yükle. ;$186 (COLOR03) registerine mavi ($f) rengi yükler.

2 bitplane kullanan düşük çözünürlükte bir ekran aç.

$100,$2200 res, color on.

22 bitplane, lo-

! Taranması imkansız bir noktayı bekleyerek copper listesini bitir.

DC.W $FFFF,$FFFE ; Taranması imkansız olan 254,255 noktasını bekleyerek copper listesini bitirir. COPPER LİSTESİNİ YAPTIKTAN SONRA ÇALIŞMASINI SAĞLAMAK : Copper listesini başlatmak için iki yol izleyebiliriz. Bunlardan birisi direkt hardware aracılığıyla diğeri ise graphics library aracılığıyla. Hardware register'leriyle zaman daha hızlı ve daha güvenli olduğundan bu yolu seçmemiz daha akıllıca olmaktadır. Copper listesini assembler'da yazdıktan sonra, aşağıdaki küçük programcıkla çalıştırabiliriz.

LEA çat < custom chiplerinin adresi. LEA ;a0-bi-

raz önce yazdığımız copper listesinin adresi. MOVE.L a0,$80(at) bulu- 'nan copper listesi adresini COP1LC registerine yükle. Burada Normal olarak $80 ve $82 registerleri- nelliste adresi yazılır. MOVE.W $88(a1),d0 —— ; Copperin COP1LC için COPJMP1'den PC ad- Tesş almasını sağlar. İkinci yol olan graphics.library yoluyla açma yolu için ise şöyle bir program yazmalısınız.

: graphics library'yi aç...

move.| #'graphics.library',a0 -408(a6) move.l

: Copper listesini çalıştır

#COPPERLİST at move.l a1,$32(a6) Bu kodu girip çalıştırdıktan sonra, copper çalıştırılacak, listenin sonuna gelip, imkansız noktayı bekleyince yine başa dönecek ve listeyi baştan çalıştırmaya başlayacaktır. DURDURMAK : Daha öncede gördüğümüz gibi copper taranması imkansız bir bölge taranmaya çalışıldığı zaman duruyor ve yine listenin başına dönüyordu. Copper x pozisyonu olarak $e2 pozisyonundan sonrasını tarayamadığını biliyoruz. Böylece biz $fe gibi bir pozisyonu tararsak, copper $fe, x pozisyonuna ulaşamadığı için listenin başına döner. Bu aylıkta bu kadar. Bir dahaki aya kadar hoşçakalın ve mektup yazmaya devam edin. Mektuplarınızın konuyla ilgili olmasına özen gösterin. Özellikle komik mektup yazanların mektuplarının yayınlanma şansı %100. BURAK ÖZIŞIK

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