C64 Türkiye sayı 4, sayfa 17

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 17

1 - $E536: Bu adrese gitmeden önce bir LDA komutuyla yazı rengini değiştirerek ekran silinir.

LDA #$01 JSR $E536 ... .....

Burada LDA komutuyla, ekran silindikten sonra yazılar beyaz olarak ekrana yazılır. Bu işlemi eğer BASIC ile yapmak isterseniz aşağıdaki komutları kullanmanız gerekecektir.

POKE 780,RENKKODU : SYS 58678

2 - $E544: Eğer bu adresi kullanırsanız o anki yazı rengi korunur ve ekran silindikten sonraki yazılacak yazıların rengi değişmez. Bu adresin BASIC'teki karşılığı ise SYS 58692'dir. 3 - $E55E: Eğer yazdığınız programda ekran belleğinin yerini ve/veya bank değiştirmediyseniz ve yazı rengi sizin için önemli değilse bu adresi güvenle kullanabilirsiniz. Bu adres daha önce bahsettiğimiz satır satır ekran silme işini yapan adrestir. BASIC'ten SYS 58718 komutuyla aynı işi yaparsınız.

Sırada ikinci ROM adresimiz var.

ADRES: $E566 GÖREVİ: KURSÖRÜ EKRANIN SOL ÜST KÖŞESİNE YERLEŞTİRİR KLAVYE KARŞILIĞI: CLR/HOME

Fazla teknik bilgiye gerek yok. Ekranı silmeden kursör sol üst köşeye gider. Aslında $E55E adresindeki rutinin devamında yer alır. Daha önceki verdiğimiz adreslerde ekran silindikten sonra kursör sol üst köşeye gitmektedir. Bu adresi de BASIC'ten SYS 58726 komutuyla kullanabilirsiniz.

ADRES: $E9FF GÖREVİ: EKRANDAKİ BİR YAZI SATIRINI SİLER

İşte geldik güzel bir adrese... Bu adres gerçekten güzeldir çünkü X registerini kullanarak istediğiniz bir ekran satırını silebilirsiniz. Fakat bir şeye dikkat etmeniz gerekmektedir. Bu rutinde ilk ekran satırı 1'den değil 0'dan başlamaktadır. Dolayısıyla sizin ekranda 1, 2, 3 diye saydığınız satırlar artık 0, 1, 2 olacaktır. Bu arada ufak bir hatırlatma yapayım. Derginin bu sayısında başladığımız C64'e yeni komutlar ekleme konusundaki CLS komutu, komuttan sonraki parametrenin olup olmamasına göre $E544 veya $E9FF adresini kullanmaktadır.

Daha önce ekranın aslında satır satır silindiğinden bahsetmiştim. Bu silme işi yukarıdan aşağıya doğru değil, aşağıdan yukarıya doğrudur. Bu küçük bilgiden sonra bir iki örnek verelim.

LDX #$0C JSR $E9FF ... .....

İlk örneğimizde ekranın tam ortasındaki yazı satırını silmiş olduk.

LDX #$14 CLEAR JSR $E9FF DEX CPX #$08 BNE CLEAR ... .....

Bu örnekte ise ekranda 8 ile 20. satırlar arasını sildik. Ve son örnek olarak...

LDX #$10 JSR $E9FF DEX BPL CLEAR ... .....

Son örnekte ise ekranın üstten 17 satırını siliyoruz. Eğer en üstten itibaren olacak şekilde birkaç satır silecekseniz o zaman sadece aşağıdaki komutlar işinizi görecektir.

LDX SATIRNO JSR $E560 ... .....

Yukarıdaki adresleri BASIC'te şu şekilde kullanabilirsiniz: 1 - Sadece bir satır silmek için:

POKE 781,SATIRNO : SYS 59903

2 - En üstten itibaren birkaç satır silmek için:

POKE 781,SATIRNO : SYS 58720

ADRES: $EEB3 GÖREVİ: 1 MİLİSANİYE GECİKME RUTİNİ

Bu adreste 1 milisaniye gecikme rutini bulunmaktadır. Eğer program içinde kullanmak isterseniz X veya Y registerini kullanmalısınız. Registere girdiğiniz sayı kadar milisaniye gecikme sağlarsınız. En fazla gecikme 0 değeri ile sağlanır ve 256 milisaniyedir. Daha uzun süreli bir gecikme elde etmek isterseniz iç içe döngü kullanmanız gereklidir. 7D3 demo party'de 256 byte on the fly olarak yaptığım "ZOOMER" programında bu adresi kullanarak 1/2 saniyelik bir gecikme kullandım. Aşağıdaki örnekte yaklaşık olarak 1 saniyelik gecikme elde edebilirsiniz. Eğer Y registeri de 0 olursa gecikme yaklaşık 65,5 saniye olur.

LDY #$04 LDX #$00 DELAY JSR $EEB3 DEX BNE DELAY DEY BNE DELAY ... .....

ADRES: $AB1E GÖREVİ: HAFIZADAKİ BİR YAZIYI EKRANA YAZAR

Bu adresimiz ise hafızada ASCII kodlarıyla bulunan bir yazıyı ekrana basar. En fazla 255 byte uzunluğundaki bir yazıyı ekrana basabilirsiniz. Bu rutini kullanırken dikkat etmeniz gereken üç konu var. Birincisi yazınız 255 byte'ı geçmemelidir, ikincisi C64'ün yazının bittiğini anlaması için son byte'ın değeri 0 olmalıdır, sonuncusu ise hafızadaki yazının bulunduğu adresin LOW BYTE'ı Akü'ye, HIGH BYTE'ı ise Y registerine yerleştirilmelidir. İsterseniz yazınızın rengini, kursör pozisyonunu vs. bile değiştirebilirsiniz.

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