Commodore sayı 50, sayfa 22

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 22

VIC BELLEK KONTROLÜ

Değişik bellek alanlarının video kontrolü tarafından yapılması CPU tarafından sunulan diğer seçenekle re göre çok daha kolay ve basittir. Programcı yalnızca ROM'a ulaşabildiği zamanlar bile, RAM video RAM menzilindedir. Bu çok önemli çünkü grafik belleği ROM'a yerleştirilebilir. Bunu yaparken BASIC depo alanı kullanılmaz. Daha önce sözünü etti ğimiz video RAM, fik, sprite tanımları gibi bellek alanları da iki istisna dışında RAM'den alınır: Eğer $1000-$1FFF (4096-8191) ya da $9000-$9FFF arasındaki alan gerekiyorsa, bu alanlardaki bilgi bu bölgelerdeki RAM'den değil, $DO00- $DFFF arasında uzanan kter jeneratörü ROM'undan alınır. İlk durum bilgisayarınızı açtıktan sonra, yalnızca alt taraftaki 16K'nın VİC tarafından kontrol edilebilmesiyle açıklanabilir. Ekrandaki karakterleri tanımlamak için gereken karakter seti 1/O adreslerinin aşağısında, $DO00-$DFFF arasındadır. Bu nedenle arasındaki adresler özel bir statüye sahiptir ve karakter seti mantıksal olarak oray yerleştirilir. Bu bölgenin diğer fonksiyonları, ne yazık ki feda edilmelidir. $9000'deki sınırlama da aynı nedenden kaynaklanmaktadır. Renkli RAM'de işler daha da basittir. Diğer alanlar gibi hareket ettirilemediği için, her zaman $D800- $DBFF (55296-56319) arasındadır.

EKRAN BELLEĞİNİ HAREKET

ETTİRMEK

Video kontrolünün bellek idaresindeki en pratik yönlerden birisi ekran belleğini hareket ettirebilme yeteneğidir. Örneğin, Bit-mapped grafik belleğini normal olarak bulunduğu $2000 (8192) yerine, ROM'un altına $E000 (41440)'a yerleştirebilirsiniz. Karakter setini de başka alanlara taşıyıp kendi kişisel karakterlerinizi yaratabilirsiniz. O kadar çok olanak vardır ki tümünün peşine düşemezsiniz. Her hareketten sonra, VIC'in kontrol edebileceği bellek alanını takip etmelisiniz. Örneğin, RAM'deki sprite tanımını $1000-$1FFF”e yerleştiremezsiniz, çünkü VİIC RAM değil, $DO0O00-$DFFF arasındaki ROM karakter setini okur. a) VİC'in Adres Alanını Deği mek Video Denetimcisi ancak 16K'lık bir alana ulaşabilir. ($000-$3FFF) C- 64'ün adres alanı 64 K'dır. Yani yu-

Şİ karıdakinin dört kat fazlası. VİC en üst ik adres bitine sahip değildir (14 ve 15). Onun için dışarıdan sağlanmaları gerekiyor. Bu amaçla Register (kütük) O kullanılır: register 0, CIA 20/1. bitler ($DDOO — 5676) Bu iki bit VIC bellek adresi için en önemli iki biti temsil ederler: adres bitleri SFEDECBA987654 3210 Bunları ayarlayıp tüm adrese sahip olabilirdiniz. Ama burada dikkat edilmesi gereken bi nokta var. Bu iki bit LOW (aşağı) aktiftir. Yani, eğer ayarlanırlarsa, adresi hesaplamak amacıyla temizlenmişler gibi muamele görürler. Doğru adrese ulaşmak istiyorsak bu bitleri ters çevirmeliyiz. Bunu yaptıktan sonra, VIC'in kontrol edebileceği alanı alırız. VIC'in kontrol ettiği tüm ekran fonksiyonlarını 16K'lık adımlarla otomatik olarak hareket ettirir:

-video RAM rafik depolama -karakter jeneratörü -sprite tanımlama

Anlaşılmasını kolaylaştırmak için, bunların bellek alanlarını aşağıda bir tablo halinde veriyoruz:

BO/1 Adres B Adres alanı nn 00 $0000-$3FFF (0-16383) 10 01 $4000-$7FFF (16384-32767) 01 10 $8000-$BEFF

(32768-49151)

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