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ı.
Sayfa 23
00 Nn $CO00O-$FFF
(49152-65535)
“BO/1” ile CIA 2'nin O kütüğündeki iki bitin gerçek yerleşimini kastedmekteyiz. Adres B VIC adreslemesi için 14. ve 15. bitleri vermektedir. Orijinal değer B 0/1”11'dir. O zaman video RAM $0400-$07FF ar: sında (1024-2047) ve karakter seti de $1000 (53248)'de bulunur. Bir örnek verelim: Diyelim ki katerlerin depolanmasını $C400 (50176 4 4*256)'e getirmek istiyorsunuz. Bu amaçla aşağıdaki komutu vermeniz rli olacaktır: POKE 56576, PEEK (56576) AND 253 OR O VIİC tüm bilgisini $CO0OO $FFF arasındaki alandan alır; bu da ekranda büyük karışıklığa yol açar. (yalnızca hareketsiz olduğu için renk düzgün bir şekilde değiştirilebilir.) POKE 56576, PEEK (5657) AND 253 OR 0 komutu ekanı ekranı eski haline döndürür. b) Video RAM'i hareket ettirmek: Video RAM'de bu IK'lik adres alanı içerisinde küçük adımlarla hareket ettirilebilir. Bu VIC'in 24. kütüğünün içeriğini, özellikle 4-7. bitleri değiştirerek mümkün olmaktadır Bu dört bit video RAM adresinin 10.- 13. bitlerini belirlerler: Adres bitleri $F ED C BA 98 7664 3210 CIA 2 reg. 24 VIC'in İÇ bitler 4-7 O zaman da video RAM 16'lık adres alanı içinde 1K'lık adımlarla hareket ettirilebilir. Bilgisayar açıldıktan sonra, bu dört bit 0001”e verilirler. Bu video RAM'in metin deposu olarak $400 (1024)'de bulunmasının nedenidir. Bu bitleri değiştirmek diğer bellek alanlarının değimesini gerektirmez. Bir örnek: $400'de bulunan video RAM'in $800'e götürülmesini istiyorsak, bunu şu komutla yaparız: POKE 53240 4 24, PEEK (53 24) AND 15 OR 2*16 Bu hareket, $400-$7FF arasındaki bellek alanına ihtiyaç gösteren geniş BASIC programlar olduğunda sürekli olarak or... or... or... diye değişen iki metin sayfası kullandığınızda kullanılabilir. c) Karakter jeneratörünü hareket ettirmek: Video RAM'e ek olarak, VIC'i 16K'lik alanı içinde karakter jenera törünün yerini değiştermek de mümkündür. Burada VIC'in 24. biti bazı adrers bitleri için ara depolama alanı olarak işe yarayabilir. Yalnıca bu sefer 2x 2K'lık karakter jeneratörünü 2K'lık adımlarla hareket ettirebiliriz. Video RAM tablosundaki 4-7. bitlerin yerini burada 1-3. bitler almaktadır. d) Grafik Deposunu Hareket Bttirmek:
Grafik depolarının yeri de seçilebilir. 8K uzunluğunda olduğu için K'lık adres alanında gidebileceğ nızca iki yer vardır. Bu nedenle onun için ayarlanabilecek yalnızca tek bir bit vardır. Bu da VİC 24. kütüğün 3. bitidir Geli devam edeceğiz.
ay bit-mapped grafikler ile