Sayfanın metni
Sayfa 10
C64 TÜRKİYE #8 10 ldx #$18 ldy #$25 stx $d000 sty $d001
Sprite'ın X ve Y koordinatlarını belirliyoruz. lda #<text1 ldx #>text1 sta get_tx+1 stx get_tx+2
Ekrana yazdıracağımız yazının başlangıç adresini programdaki ilgili yere kopyalıyoruz. ldx #$00 loop1 lda text1,x sta $0400+13,x inx cpx #$0e bne loop1
İlk yazımızı ekrana yazıyoruz. lda max_del sta delay_cnt
Sprite hareket gecikme sayacını ayarlıyoruz lda max_move sta move_cnt
Sprite hareket sayacını ayarlıyoruz. lda max_text sta text_cnt
Ekrana yazdırılacak maksimum text sayacını ayarlıyoruz. lda #$ee sta dir
Sprite'ın ilk hareket yönü için "INC" komut kodunu programdaki yerine yazıyoruz. cli jmp *
İnterruptları serbest bırakarak programı sonsuz döngüye sokuyoruz. irq inc $d019 dec delay_cnt bne exit
Hareket gecikme sayacını bir azaltıyoruz. Sıfır olmadıysa programdan çıkıyoruz. lda max_del sta delay_cnt
Hareket gecikme sayacı sıfır olduysa, sayacı tekrar yüklüyoruz ve devam ediyoruz.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 11
C64 TÜRKİYE #8 11 dec move_cnt bne dir lda max_move sta move_cnt lda dir eor #$20 sta dir
Hareket sayacını bir azaltıyoruz ve sıfır olmadıysa "dir" yazan yere gidiyoruz. Sıfır ise hareket sayacını tekrar yüklüyoruz. “EOR” ile hareket yönünü değiştiriyoruz. cmp #$ee beq drx
Hareket yönünü kontrol ediyoruz. Eğer "INC" komutu ise (yani hareket soldan sağa ise) "drx" yazan yere gidiyoruz. lda get_tx+1 clc adc #$0e sta get_tx+1 bcc cont inc get_tx+2
Eğer "DEC" ise (yani sağdan sola ise) ekrana basılacak yeni yazının adresini hesaplayıp programdaki yerine yazıyoruz. Hesaplama sırasında elde biti "1" olduysa yazıların alınacağı adresin yüksek baytını 1 arttırıyoruz. Değilse aşağıda devam ediyoruz. cont dec text_cnt bne get_text lda max_text sta text_cnt lda #<text1 ldx #>text1 sta get_tx+1 stx get_tx+2
Ekranda gösterilecek yazı sayacını 1 azaltıyoruz. Sıfır olmadıysa "get_text" bölümüne gidiyoruz. Eğer sıfır olduysa Text sayacını ayarlıyoruz ve ilk yazının adresini programda ilgili yere yazıyoruz. get_text ldx #$00 get_tx lda text1,x sta $040d,x inx cpx #$0e bne get_tx
Bu kısımda ekrana yazı yazıyoruz. drx lda col+1 eor color sta col+1
Yukarıdaki komutlarla renk belleği için kullanacağımız değeri siyah/sarı şeklinde değiştiriyoruz. dir inc $d000 lda $d000 sec sbc #$10 lsr lsr lsr