C64 Türkiye sayı 6, sayfa 9
Sayfanın metni

Sayfa 9

(SADECE “0-9” VE “A-F” TUŞLARI)

*=$0801

.word nextline .word 2004 ; 2004 .byte $9e ; SYS .text "2061" ; 2061 .byte 0 ; komutu nextline .word 0

key_read jsr $ffe4 ; klavyeyi kontrol et ldx #$00 ; tablo sayacını sıfırla control cmp tablo,x ; aküdeki değeri tablodaki değerle karşılaştır. bne next ; aynı değilse sonraki iş için git jsr $ffd2 ; aynı ise basılan tuşu ekrana yazdır. rts ; programdan çık

next inx ; tablo sayacını 1 arttır cpx #$10 ; tablonun uzunluğu ile karşılaştır. bne control ; eşit değilse karşılaştırmayı tekrarla jmp key_read ; Tablodaki olmayan bir tuşa basıldığı için tekrarla.

tablo .text “0123456789ABCDEF”

Tuşların kontrolünü isterseniz her tuş için ayrı ayrı CMP #$TUSKODU yazarak da yapabilirsiniz.

key_read jsr $ffe4 cmp #$30 beq print cmp #$31 beq print .............. .............. jmp key_read print jsr $ffd2 rts

Yukarıdaki rutin, daha anlaşılır olması avantajına rağmen daha uzundur. Bir tuş için 4 byte kullanılmaktadır ve sadece tuşlar için 64 byte harcanmaktadır. Geri kalan komutlar ise 10 byte tutmakta ve 74 byte ile işimiz görülmektedir. Bu rutinin bir avantajı daha vardır. Mesela programdan çıkış için “space” tuşunu kullanmak istiyorsunuz diyelim. Bunun için yapmanız gereken CMP #$20 BEQ ÇIKIŞ komutlarını diğer tuş kontrollerinin olduğu yere eklemek ve program içindeki bir RTS komutunu ÇIKIŞ etiketi ile göstermek. Daha genel bir ifadeyle yukarıdaki rutin istediğiniz tuşların kontrolü için kullanılabilir.

(NOT: EVLİLİK BİLGİSAYAR BAĞIMLILARI İÇİN TAVSİYE EDİLMEZ ☺☺)

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