C64 Türkiye sayı 8, sayfa 7

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 7

Burası altrutinlerin olduğu bölümdür. hex_byte_in jsr hex_key_in ;high nibble jsr key_to_mem asl asl asl asl sta $fb jsr hex_key_in ;low nibble jsr key_to_mem ora $fb sta $fb rts Klavyeden bir baytlık hex sayı girme ve bu sayıyı hafızaya saklama bölümüdür. Önce klavyeden hex karakter girilen alt rutine gidiyoruz. Geri dönüşte aküde bulunan tuş değe- rinin sayısal karşılığını almak için bir başka alt rutine gidiyoruz. Buradan geri dönüşte ise elimizdeki sayıyı 4 kez sola kaydırıp high nibble olarak $FB adresine saklıyoruz.Aynı alt rutinlere bir kez daha uğruyoruz ve daha önce high nibble olarak sakladığımız değerle

R işlemi yaptıktan sonra aynı adrese yazıyoruz. O hex_key_in jsr $ffe4 ldx #$00 control cmp key_table,x bne next jsr $ffd2 rts next inx cpx #$10 bne control jmp hex_key_in

Bu kısımda klavyeden sadece hex sistem tuşlarına basılıp basılmadığını kontrol edi- yoruz. Önce klavye taranıyor. Tarama sonunda Aküdeki değeri bir sayaca göre tablodaki değerle karşılaştırıyoruz. Eğer karşılaştırma sonucunda basılan tuş tabloda varsa karak- ter ekrana basılıyor ve rutinden çıkılıyor. Yoksa klavye tekrar taranıyor. key_to_mem ldx #$00 loop0 cmp key_table,x beq val_read inx cpx #$10 bne loop0 val_read lda val_table,x rts

Bu kısımda basılan tuşa göre hafızaya alınacak sayı elde ediliyor. Aküdeki değer bir tablo ile karşılaştırılıyor. Karşılaştırma sonucu eşitlik varsa, kullanılan sayacın değeri kullanılarak başka bir tablodan hafızaya yazılacak değer okunuyor ve rutinden çıkılıyor. mem_to_scr pha lsr lsr lsr lsr jsr convert pla and #$0f convert tax lda key_table,x jsr $ffd2 rts

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