KLAVYEDEN HEX SİSTEM TUŞLARININ KONTROLÜ (2. 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
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 ☺☺)