Plazma sayı 6, sayfa 55

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 55

D0'da sıralanacak sayıların adedinden geriye doğru sayan değer, A0'da tablo adresi bulunmaktadır. D7 geçici (temporary) olarak kullanılmış, D6'da ise sıralama işlemini gerekiyorsa tekrarlamak için bir flag tutulmaktadır. Kodu derleyip çalıştırdıktan sonra Asmpro'da “H table” yazarak tablonun son halini görebilirsiniz.

sort: lea table(pc),a0 moveg #8-2,d0 moveg #0,d6 loop:

;A0daki deger ile ;A04*2deki degeri

move.w (a0) şdl cmp.w 2(a0),d1 bgt.s pass swap:

ile A04*2nin ;degerlerini degistir

move.w move.w 2(a0), (a0) move.w d7,2(a0) moveg #1,0d6 pass:

#;tabloda ilerle #tablodaki degerler word ;oldugundan 2 arttiriyoruz dbf d0,loop ;herhangi bir degisiklik sort islemini

;tekrarla tst d6 bne.s sort table: de.w $0056,$0134,$0012,$0072

de.w $0145,$0001,$000Cc,$0025

Copper #1

Aşağıdaki örnek 320x256 tek bitplane (2 renkli) bir ekran açar. COLOR000 ($0180) renk register'ının değerini 225 raster satırı boyunca her satırda değiştirerek güzel bir copper bar oluşturuyor.

size - 320*256/8 bars - 22542 start

şekran adresini copper ;listesine yaz

move.l #myscreen,d0 move.w d0,sl swap dO move.w şekranin tamamini temizle lea myscreen,a0 move.l #size-l1,d0 loop move.b #$00, (a0) 4 Abi d0,loop

;copper listesinin icine ;sirasiyla wait ve move komutlarini

;yaz, toplam 225 adet move lea cp,a0 move.l #bars/2-1,d0 move.l #$0001£f00,d1 move.l #$01800000,d2 loop2 move.l d1,(a0)*4 move.l

;wait komutundaki raster ;pozisyonunu 1 artir add.l #$01000000,d1 ;move komutundaki renk degerini #bir artir add.w dbf

#$00000001,d2 d0,loop2

;custom chip base adresini al ;ve duzgun bir bitmap ekran icin gerekli degerleri

#yaz, 1 bitplane lo-res lea $Ad£f000,a0 move.w move.w #$0000,$108(a0) move.w move.w move.w #$2c81,$08e(a0) move.w #$2cc1,$090(a0)

;Copper list adresini $080e yaz

;copperi tetikle ($088e yaz) ;Ccopper dmasini ac lea mylist,al move.l a1,$80(a0) move.w move.w mouse btst #6,$bfe00l1l bne.s mouse out rts

;copper listesi ve bitmap ekran ;verilerini daima chip rame koy section data,data c

mylist #1 bitplane lo-res ekran ac ;bu degerin her taramada set şedilmesi gerekir, aksi halde ;bos veya bozuk bir ekran ; gorursunuz de.w $0100,$1200 ;bitmap pointlerlari

7$0e0 ve $0e2 adreslerinde ;hiword, loword olarak durur dc.w $00e0 sh do.w $0000 dc.w $00e2 sl dc.w $0000

move komutlari icin (450 long word) bars ŞEfİf,Ş$fffe

;wait ve ;yer ayir cp ds.l dec.w

şekran icin yer ayir myscreen

dcb.b size,$00

Evet işte basit bir copper örneği. Bu örnekte geçen bitmap ekran açma, ekran pointer'larını set etme gibi işlemleri önümüzdeki sayıda detaylıca göreceğiz. Şimdilik copper listesinin dinamik olarak nasıl oluşturulduğu ve nasıl aktif hale getirildiğini inceleyiniz.

Örnek kodlar hakkında anlayamadıklarınızı mail ile sorabilirsiniz.

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