Bu sayfadaki yazılar
Sayfanın metni
Sayfa 45
SYS 49155, karakter, renk Karakter: Karakter numarası (0-255) Renk: Karakter rengi (0-16)
Bu yordam hem 40-kolon hem de 80-kolon için çalışır, bunun anlamı bir komutla her iki ekranı da aynı anda programlayabilirsiniz demektir. Şimdi karakterleri ekranın çeşitli satırlarına nasıl koyacağımızı öğrenelim. Karakterin yeri hafızadaki 224 ve 225 numaralı (o anki Kursor'un yeri) adreslerden okunabilir. Eğer bir karakterin belirli bir yerde olmasını istiyorsanız, bu adreslerle biraz oynamak yeterli olacaktır.
Aşağıda bunu yapabilecek küçük bir program veriyoruz.
(Program Döküm Eki/PROGRAM 2)
KOL değişkeni: 0-79 (0-39) SR değişkeni: 0-24
Programda kullanılan bazı adresler şunlardır:
238 Ekranın maksimum uzunluğu 224 Kursor'un yeri - alçak 225 Kursor'un yeri - yüksek 49155 Başlangıç adresi - ROM yordamı
Taklit edilmiş POKE
Aşağıda vereceğimiz program sayesinde normalde POKE yapamadığımız video RAM bölgesine bizim yaptığımız POKE komutu ile POKE yapmak mümkün olacaktır.
(Program Döküm Eki/PROGRAM 3)
Hazırlamış olduğumuz POKE komutunun formatı şu şekildedir:
SYS karakter, LO, HI Karakter byte değeri (0-255) İstenilen adresin alçak byte'ı İstenilen adresin yüksek byte'ı
Şu ufak programı deneyin:
40 İNPUT“ADRES”;AD 20 — AD-(256* HI) 30 SYS
Video RAM'deki herhangi bir byte'ın içeriği şu şekildedir: BİT 0: Parlaklık BİT 1: Mavi BİT 2: Yeşil BİT 3: Kırmızı BİT 4: Yanıp sönme BİT 5: Altı çizilmiş BİT 6: Reverse video BİT 7: İkinci karakter seti
İlk dört bit'in kullanımı oldukça açıktır, bu bitleri birleştirerek mümkün olan 16 rengi elde edebilirsiniz. Dördüncü bit'i 1 yaparak karakterinizin yanıp sönmesini sağlayabilirsiniz. Biraz eğlenmek için üstte verdiğimiz programın 30'uncu satırını şöyle değiştirin:
30 SYS 042 342 4.L0.HI
Programı çalıştırarak adrese 2048 değerini verin, şimdi ekranda açık kırmızı renkte olarak karakter yanıp sönmeye başlayacaktır. BİT 7 ile karakter setini değiştirebilirsiniz. Normalde bunu SHIFT/C= tuşu ile yapıyoruz. 40-kolon ekranın aksine 80-kolon ekranda aynı anda her iki karakter setinin de bulunması mümkündür. Bunun anlamı da çalışabileceğiniz karakter sayısının 512 adet olduğudur.
Karakter üretimi
Aşağıda vereceğimiz program karakter üreticiyi video RAM'den okuyacaktır.
(Program Döküm Eki/PROGRAM 4) Programımızda kullanılan değişkenler:
BA: Karakter üreticinin başlangıcı A: VDC'nin başlangıcı AD: Karakter üreticide o anda bulunan adres HI: AD değişkenindeki adresin yüksek byte'ı LD: AD değişkenindeki adresin alçak byte'ı CH: Karakter satırının okunuş değeri W: Sayaç Programı çalıştırdığınızda bütün karakterler ekrana genişletilmiş matrisler halinde basılacaktır. Her karakteri sekiz boşluğun izlediğine dikkat edeceksiniz. Bundan başka 80-kolon karakter üreticinin VIC-20 veya C-64'ünkilerden farklı olduğuna dikkat edin. Her karakter 18 byte'dan meydana gelmektedir. Bu fazladan olan sekiz byte normalde kullanılmamaktadır, bunlar bazı özel durumlarda kullanılacaktır, VDC 8563 hem 8 matrislik hem de 16*8 matrislik karakterler üretebilmektedir.
Büyütülmüş karakterler
Aşağıda yer alan program ile genişletilmiş karakterler elde edeceksiniz. (Program Döküm Eki / PROGRAM 5) Bir sonraki yazımızda biraz daha 80-kolon gösterimden bahsedeceğiz, şimdi C-64'te oynayabileceğiniz bazı oyunları kolaylaştıracak yararlı POKE komutlarına geçiyoruz. Oyunumuzun adı PSYCASTRIA, başlık ekranında iken, yani bilgisayara RUN komutunu verdikten sonra ilk çıkan ekranda L, T, D, N tuşlarına aynı anda basıp bırakın. Bu tuşlar İngilizce olarak şu kelimelere karşılık gelmektedir: Love Tracey Dianne Nicolson. Bu tuşlara aynı anda bastığınızda size sorulacak olan şifre yerine THEVOICE kelimesini yazdığınızda CHEATING MODE'a girmiş olacaksınız, böylece de gemimiz görünmez olacaktır.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 44
32 Blok başlangıç adresi - yüksek byte 33 Blok başlangıç adresi - alçak byte 34 Ekran gösteriminin başlangıcı 35 Ekran gösteriminin sonu 36 Tazeleme oranı Şimdi listesini verdiğimiz yazmaçları bireysel olarak örnekler vererek işlevlerini açıklayacağız. Bu yazmaçlar dolaylı olarak adreslenirler. Bunun anlamı sadece sıfırıncı ve birinci yazmaçlara giriş yapabildiğimizdir. Bunu şu örnekle açıklayalım, eğer 26 numaralı yazmacın içeriğini görmek istiyorsanız şu satırları yazmanız gerekir
POKE 53760,26:PRINT PEEK(53761) $D600 ve $D601 yazmaçlarına yazılan yazmaç numarası istenilen yazmaçtan okuma ve yazmak için bir kanal açmamızı sağlar. Bunu aşağıda vereceğimiz küçük bir program yapabilir.
40 INPUT “YAZMAC";Y 20 INPUT “DEGER";D 30 POKE DEC(“D600”),Y 40 POKE DEC(“D601*) .D
Yazımızın başında da belirttiğimiz gibi VDC işlemcisinin normal adreslenemeyen 16K'lık RAM'i bulunmaktadır. VDC video RAM'ine girebilmek için aşağıdaki programı kullanın.
(Program Döküm Eki/PROGRAM 1)
Satır Açıklama 100 BA değişkenine VDC'nin temel adresini yüklenir. 110 V değişkenine istediğiniz video RAM adresini yükleme.
120 W değişkenine video RAM'ine yazmak istediğiniz değer yüklenir. 130 V değişkenindeki değer yüksek ve alçak byte'lara ayrılır. 140 18'inci yazmaca istenilen adresin yüksek byte'ı konulur. 150 19'uncu yazmaca alçak byte konulur. 160 34'üncü yazmaca byte değeri konulur. 170 BA değişkeninin hafıza adresine ulaşana kadar komut bekle. 180 30'uncu yazmaç * ile doldurulur (karakter çıkışı).
Bilgisayar ilk açıldığında video RAM'in durumu şu şekildedir:
$0000-$07FF Ekran tazeleme hafızası (SCR-RAM) (0-2047) $0800-$0FFF RAM (mesela ekran hafızası) (2048-4095) Serbest (4096-8191) $2000-$3FFF Karakter üretimi (8192-16385)
Yukarıda verilen Basic programı çalıştırın ve adres olarak '0' girin. Değer olarak '0 ve 255' arası bir değer giriniz. 80-kolon gösterimde üst sol köşede verdiğiniz değere bağlı olarak bir karakter yazılacaktır.
Video RAM'e pratik olarak giriş
80-kolonda işletim sistemi bir tuşa basıldığında ne yapar? Bu işletim sisteminin bir karakteri ne yaptığını inceleyelim. İşletim sisteminde bu işle ROM'da bulunan bir yordam görevlidir. Bu yordamı BASIC'ten şu şekilde çağırabilirsiniz:
45