C64 Türkiye sayı 5, sayfa 20

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 20

NEREDEN : İSTANBUL NİCK / GRUP(LAR) : HADES / HI3S WEB SİTE : WWW.HI3S.ORG HTTP://HADES6510.SITEMYNET.COM

(Programlar C64ASM V1.1 ile compile edilecek şekilde yazılmıştır) ROM rutinlerini tanıtmaya devam ediyoruz. İlk adresimiz $A3BF (41919). ADRES : $A3BF (41919) GÖREVİ : Data blok taşıma. Bu adresi bellekteki bir bölgeyi başka bir yere taşıma amaçlı olarak kullanabilirsiniz. Zero Page’de bulunan 6 adet adresi kullanıp istediğiniz uzunluktaki bir bölgeyi taşıyabilirsiniz. Şimdi bir örnek ile bu adresin nasıl kullanıldığını öğrenelim. Örneğimizde $c000-$c750 arasındaki bölgeyi $2600-$2d50 arasına taşıyalım. *=$0801 .word nextline .word 2004 ; 2004 .byte $9e ; SYS .text "2061" ; 2061 .byte 0 ; komutu nextline .word 0 transfer1 lda #$00 ;Başlangıç adresi LOW byte ldx #$c0 ;Başlangıç adresi HIGH byte sta $5f ;Başlangıç LOW byte pointer stx $60 ;Başlangıç HIGH byte pointer lda #$50 ;Bitiş adresi LOW byte ldx #$c7 ;Bitiş adresi HIGH byte sta $5a ;Bitiş LOW byte pointer stx $5b ;Bitiş HIGH byte pointer lda #$50 ;Hedef bitiş adresi LOW byte ldx #$2d ;Hedef bitiş adresi HIGH byte sta $58 ;Hedef bitiş LOW byte pointer stx $59 ;Hedef bitiş HIGH byte pointer jsr $a3bf rts Transfer işlemini yapan rutin 28 byte yer kaplamaktadır. Bu adresin kullanılışı şöyledir. Kopyalayacağınız bölgenin başlangıç adresi $5f-$60 adreslerine, bitiş adresi $5a-$5b adreslerine, yeni bölgenin bitiş adresi ise $58-$59 adreslerine yazılır ve rutin çağrılır. Bu rutini kullanacağınız zaman BASIC ROM'un devrede olması gereklidir. Aynı taşıma işlemini bir de başka rutin yazarak yapalım. Taşınacak bölgenin uzunluğu $c750-$c000=$0750 byte olup 8 döngüde rahatça transfer edebiliriz.

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