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

Sayfa 8

lsr ; sağa kaydır lsr ; sağa kaydır lsr ; sağa kaydır lsr ; sağa kaydır jsr convert ; çevirme rutinine uğra pla ; yığındaki değeri geri al and #$0f ; üst 4 biti sıfırla alt 4 biti kullan convert tax ; aküdeki değeri x registerine kopyala lda tablo,x ; tablodan X registerinin gösterdiği byte’ı al jsr $ffd2 ; ekrana yazdır rts ; geri dön.

tablo .text “0123456789ABCDEF” adres .byte 179

Bu arada 1. yöntemdeki rutin 29 byte, 2. yöntemdeki rutin 39 byte uzunluğundadır. Anlaşılabilirlik yönünden 2. yöntem daha iyidir. Bazı durumlarda tablo kullanmak kısa ve karışık bir program yazmaktan daha avantajlı olabilir.

(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 cmp #$30 ; “0” tuşundan bcc key_read ; küçükse tekrar dene cmp #$3a ; “:” tuşundan bcc print ; küçükse yazdır. cmp #$41 ; “A” tuşundan bcc key_read ; küçükse tekrar dene cmp #$47 ; “G” tuşuna bcs key_read ; eşitse veya büyükse tekrar dene print jsr $ffd2 ; basılan tuşu ekrana yazdır. rts

Yukarıdaki kısa rutin ile klavyeden sadece hex sistemde kullanılan tuşlara basılıp basılmadığı kontrol edilmektedir. Önce JSR $FFE4 komutu ile klavyeyi kontrol ediyoruz. Sonra CMP #$30 BCC KEY_READ komutlarıyla ASCII kodu 0 ile $30 arasında olup olmadığına bakıyoruz. Eğer bu tuşlardan birine basıldıysa yani “boşluk ! “ # $ % & ‘ ( ) * + , - . /” tuşlarından birine bastıysak hiçbir işlem yapmadan klavyeyi tekrar kontrol ediyoruz. Daha sonra CMP #$3A BCC PRINT komutlarıyla basılan tuşların “0 1 2 3 4 5 6 7 8 9” tuşlarından biri olduğunu anlıyoruz ve ekrana yazdırarak programdan çıkıyoruz. Burada $3A sayısı “:” tuşunun kodu olup “9” tuşunun kodundan sonra gelmektedir. Matematiksel bir anlatımla $2F < TUŞ < $3A şartını kontrol ediyoruz. Yani “/” < TUŞ < “:”. Devam ediyoruz ve eğer yukarıdaki şart sağlanmadıysa bu sefer CMP #$41 BCC KEY_READ komutlarıyla “: ; < = > ? @” tuşlarından birine basıldığını anlıyoruz ve işimize yaramadığı için tekrar klavyeyi kontrol ediyoruz. Eğer bu tuşlara da basılmadıysa son kez CMP #$47 BCS KEY_READ komutları ile $40 < TUŞ ≥ $47 (“@” < TUŞ ≥ “G”) arasındaki tuşlar kontrol ediliyor. Eğer bu şart gerçekleşmişse basılan tuşu ekrana yazdırıp programdan çıkıyoruz. Değilse klavye bir daha kontrol ediliyor.

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