KLAVYEDEN HEX SİSTEM TUŞLARININ KONTROLÜ (1. YÖNTEM)
(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.