Commodore sayı 53, sayfa 22

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 22

Yukarıdaki programda, $1000-$4100'de bulunan değerlerin $0400-$0500 arasına nasıl basılabileceğini gördük. Bu işlem sırasında ekrana $00'dan $FF'e kadar olan değerleri bastık. Yani decimal olarak 255 tane karakter bastık. Bunun sebebi de makine dilinde her sayının karakter olarak bir karşılığı vardır. Eğer ekrana bir mesaj yazdırmak isterseniz $1000 ile $4100 arasına, mesajınızı yazın. Programın içinde kullandığımız LDX #$00 komutu ile hafızada bir sayaç açıyoruz. INX komutuyla (Increment X) X'i bir değer arttırıyoruz. JMP ile ekrana X'in bir değer artmış halini basıyoruz. Yani X, sıfır iken sıfırıncı değeri, X bir iken birinci değeri bastırıyoruz. Bu işlem X, 255 olana kadar devam ediyor. Eğer bu sayının 255'den küçük olmasını isterseniz INX komutundan sonra CPX (Compare X) kullanmamız gerekir. $10 kullanarak X'in $10 olup olmadığı karşılaştırılır. Aynı zamanda JMP komutu yerine BNE (Branch if not Equal) kullanmamız gerekir.

BNE komutu BASIC'de IF komutuna karşılık gelir. X, $10 olana kadar BNE DÖNGÜ yapılır. Yani X'in o andaki değeri kontrol edilir, $10 olup olmadığı kontrol edilir, X $10'dan küçükse BNE yardımıyla LDA X yazan satıra gidilir. Şimdi LDA, STA, LDX, STX komutlarını kullanarak ekranı silme, zemin ve kenar renklerini değiştirmeyi görelim. Ekran iki şekilde silinir. 1- Aynen BASIC'de olduğu gibi (PRINT “CLR HOME”)

LDA #$93- JSRS D2- ekranın yazım adresi

Yukarıdaki programda A'nın aldığı değer (147), BASIC'de yaptığımız CLRHOME'a eşittir. Yani SHIFT tuşu ile beraber CLEAR HOME tuşuna bastığımızda ekrana çıkan (negatif kalp) işaretin değeri, hafızada $93 değerine karşılık gelir. JSR $FFD2 ise PRINT komutunun assembler karşılığıdır. Commodore 64'ün içinde bulunan (KERNAL ROM) bazı komutlar vardır. Bunlara KERNAL RUTİNLERİ denir. $FFD2'de bu kernal rutinlerinden biridir. Yukarıdaki program ekrana CLRHOME'a karşılık gelen değeri basar. Böylece ekran silinmiş olur. Bildiğiniz gibi BASIC'de ekranın renklerini 53280 ve 53281 adreslerini kullanarak değiştiriyoruz. POKE 53280,0 yazdığımızda ekranın dışı siyah rengi alır. POKE 53281,0 yazdığımızda ekranın iç kısmı da siyah olur. Aynı işlemi assembler'da şöyle yapabiliriz

LDA #$00 -> Az00 STA $DO20 - >A'daki değeri $DO20 adresine yerleştir. LDX #S00 STX $DO21 ->X'deki değeri $DO21 adresine yerleştir

Aynı işlemi pratik olarak

LDA # $00 - > STA $DO20 - > A'daki değeri $DO20'ye koy. STA $DO21 - > A'daki değeri $DO21'e koy.

Sanırım şu ana kadar basit de olsa bir şeyler anlamışsınızdır. Gelecek sayıda INTERRUPT ve TIMING konularını anlatacağım. Görüşmek dileğiyle.

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