C64 Türkiye sayı 5, sayfa 16

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 16

(Programlar C64ASM V1.1 ile compile edilecek şekilde yazılmıştır)

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

Eğer C64’ün yanıp sönen kare şeklindeki kursöründen sıkıldıysanız aşağıdaki kısa programla (sadece 96 byte uzunluğundadır) kursörünüz artık PC’lerin DOS zamanındaki kursörü şeklinde olacaktır. Peki bu değişiklik nasıl oluyor? Yeni kursörümüz aslında bir sprite’dır ve interrupt tekniği kullanılmıştır. Normal kursörün satır ve sütun değerleri okunarak programda sprite’ın X ve Y koordinat değerlerine dönüştürülmektedir.

*=$0801 .word nextline .word 2004 ; 2004 .byte $9e ; SYS .text "2061" ; 2061 .byte 0 ; komutu nextline .word 0 sei ;interruptları durdur lda #<cursor ;programın low byte’ını sta $0134 ;interrupt vektörünün low byte’ına yaz lda #>cursor ;programın high byte’ını sta $0315 ;interrupt vektörünün high byte’ına yaz ldx #$00 ;X registerini sıfırla txa ;Akü’ye X registerinin değerini yükle loop0 sta $03c0,x ;Sprite data adresine 0 yaz inx ;sayacı 1 arttır cpx #$40 ;#$40 (64) oldumu ? bne loop0 ;olmadıysa tekrarla lda #$ff ;çizgi şekli olması için $ff sayısını sta $03c0+21 ;sprite’ın uygun data adresine yaz lda #$03c0/64 ;sprite data başlangıcını sta $07f8 ;1. sprite pointerine yaz lda #$01 ;1. Sprite’ı sta $d015 ;görünür yap cli ;interruptları başlat rts ;programı bitir cursor lda $d3 ;normal kursörün sütun pozisyonunu oku cmp #$1d ;$1d (19) ile karşılaştır bcc no_extra ;$1d’den küçükse git ldx #$01 ;sprite’ın extra x koordinatı var .byte $2c ;bilgisayarı kandırma sayısı no_extra ldx #$00 ;sprite’ın extra x koordinatı yok stx $d010 ;spritelar için extra x koordinat adresi

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