(0-3 numaralı bit'ler) kullanılır. Böy- lece 0-15 arası renk kodları saklana- bilir. Üst dört bit, daima | olur. Nor- mal yazı ekranı aktif iken, her karak- terin rengi bu bölgede saklanır. Nok- ta grafiğinde ise, eğer çokrenkli mod kullanılıyorsa, renk RAM'ının her byte'ı grafik ekranında karşılık geldiği 4*8'lik alanın 3 numaralı rengini be- lirler. 3) Video RAM'ı Bu bölüm de 1000 byte'dan oluşur ve değişik görevleri vardır. Normal yazı ekranı kullanılırken, ekranda gör- düğünüz harflerin kodlarını saklar. Grafik ekranında ise, eğer çokrenkli- lik yoksa, 8*8'lik alanın çizgi ve ar- kaplan rengini verir. Çokrenkli mod kullanılıyorsa, 4*8'lik alanın 1 ve 2 numaralı renklerini belirler. Normalde 1024-2023 ($O7ET) arasında bulunur, ama biraz sonra göreceğimiz yöntem- lerle kaydırılabilir. Ayrıca 2024-2047 (507E8-$07FF) arası da, sprite vektör- lerini içermesi açısından önemlidir ve video RAM'ı ile birlikte kayar. 4) Grafik hafızası 320*200'lük grafik ekranının gerek- tirdiği bilgiyi saklayan 8 Kbyte'lık bir bölümdür. Normalde $2000-53FFF (8192-18383) arasında bulunur ve kay- dırılabilir. 5) Karakter Üreteci Yazı yazarken gördüğünüz karak- terlerin her birinin görüntü tanımla- masının yer aldığı bölüm, işte burası- dır. Büyük ve küçük harf olmak üze- re 256'şar karakterlik, toplam 512 ka- rakter saklayan bu bölüm, her bir ka- rakter 8 byte gerektirdiği için 4 Kbyte'lık bir alan kaplar. Normalde $DOO0-$DFFF (53248-57343) arasın- da bulunan ROM'da saklanan bu ta- nımlar, gerektiğinde başka bir bölge- ye taşınıp değiştirilebilirler. Deminden beri, taşınma ve kaydır- ma sözlerini çok kullandık. Peki bun- lar nasıl oluyor? İşte buna cevap ve- rebilmek için, C64'ün kalbi 6510'un adreslemesinin dışında, grafik sorum- lusu VIİC'ın de bir adreslemesi oldu- ğunu bilmemiz gerekir. Şimdi de bu- nun ayrıntılarına inelim... VIC'ın bize sunduğu en önemli avantaj, tüm hafızayı bir RAM ola- rak görmesi. Örneğin bizim ROM'un altındaki RAM'ı okumamız için | nu- maralı yazmacı değiştirmemiz gerekir- ken, VIC oradaki bilgiyi doğrudan doğruya alabiliyor. Dolayısıyla, gra- fik bilgilerimizi hiçbir sorunla karşı- laşmadan ROM'un altına yerleştirebi- leceğiz. VIİC, tek başına sadece 16K'lık bir alanı gözetleyebilir. Yani, VİC'ın kul- lanacağı tüm bilgilerin, renk RAM'ı hariç, o sırada okuduğu 16K'nın için- de olması gerekir. Demek ki, 6G4K'lık bilgisayarımızın içinde VIC'ın ulaşa- bileceği 4 ayrı bölüm (BANK 0... BANK 3 olarak adlandırılan) var. Bunların nasıl kaydırılacağını biraz- dan göreceğiz. Ancak en başta bir sonradan söz etmek gerekiyor. Bilgisayar ilk açıldığında, BANK 0 kullanılmaktadır. Yani 0-16383 (5$0000- $3FFF) arası. Ancak, karakter üre- ci ROM'u $DOd0-$DFFF arasında ol- duğuna göre, VIC, karakter tanımla- malarını '“göremeyecektir”'. İşte bu- nu önlemek için, C64 dizayncıları bir numara daha yapmışlar ve bir iki tel yardımı ile, ROM'un bulunduğu ad- reslerdeki bilgileri $1000-$1FFF ve $9000-$9FFF arasına da taşımışlardır. Bunlara, bilgisayar çevrelerinde, ““ha- yalet bölgeler”' denir, çünkü orada ol- mayan bilgi, VİC için sanki oraday- mış gibi görünmektedir. Bu nedenle, örneğin $1000-$1FFF arasına sprite tanımlamaları koymak anlamsızdır. Çünkü VIC bunları değil, $DO00- $DFFF arasındaki karakter tanımla- rını okuyacaktır. Bir diğer önemli nokta da, $D80ü- $DBFF (55296-56319) arasındaki renk RAM'ının, aynı bölgedeki boş RAM'- la karıştırılmaması gerektiği. Yukarıda gördüğümüz gibi VIC, 16K'lık 4 değişik bölgeyi adresleyebil- mekte. Bu 16K'nın hangi bölüm ola- cağını, daha önce de gördüğümüz, CIA 2 olarak adlandırdığımız hafıza biriminin ilk iki bit'i yapacaktır. Ha- tırlarsanız, bu bit'ler için LOW-aktif demiştik. Dolayısıyla, biz bu iki bit'i örneğin Ül yaparsak, bunlar sanki 10 değerini almış gibi davranacaklardır. Bu iki bit'in durumu ile hangi 16K'lık bölgenin seçildiğini aşağıdaki tablo- dan görebilirsiniz: BANK'ın $8000'den başlamasını isti- yorsunuz. Eğer 8'i ikilik sistemde ya- zarsak Wo1000 elde ederiz. En solda- ki iki bit 10 durumunda. Kontrol bit'- lerimiz LOW-aktif olduklarına göre, bunu ters çevirmemiz gerekiyor. Ya- ni sonuç, ÖOl olacak. Tabloda sonucu elde ettik. Daha da basiti, BANK 0...BANK 3 isimlendirmesini kullanırsak, $8000? den BANK 2 başlar; ikilik sistemde iki için Yo l0 yazarız; tersi de bize ihtiya- cını duyduğumuz Öl'i verir. Şimdi sıra geldi, bu iki bit'i CIA 2'ye (56576,5DDOO) yerleştirmeye. Bunun için aşağıdaki formülü kulla- nabilirsiniz: POKE 56576,PEEK(56576) AND 252 OR (3-X) Adresler l1 $0000-$3FFF (0-16383) 10 $4000-$7FFF (16384-32767) 01 $8000-$BFFF (32768-49151) 00 $C000-S$FFFF (49152-65535) 'X? yerine, kullanacağınız BANK numarasını (0..3) koyacaksınız. Bir örnek verelim. Diyelim ki, $0400'de başlayan video RAM'ını $8400'e taşımak istediniz. Hemen *X” yerine 2 koyarak yukarıdaki komutu yazın, Ekran'saçmasapan bir hal ala- cak, çünkü ekran editörüne falan bu- rayı kullandığımızı söylemedik. Bu sonraki iş. Şimdi de geri dönmek için, aynı komutu, X yerine 0 koyarak ya- zın. Yazdığınızı ekranda görmeyecek- siniz ama, eğer yazarken bir hata yap- mamışsanız, RETURN'a basar bas- maz, ekran eski haline gelecektir. VIC'ın adresleme bölgelerini böy- lece kaydırdıktan sonra, sıra geldi vi- deo RAM, grafik hafızası ve karak- ter üretecinin bu seçtiğimiz 16K için- deki yerini belirlemeye. Bu işlem için, daha önce de gördüğümüz, VIC'ın 24 numaralı yazmaçını kullanacağız. Video RAM'ının 1K gerektirdiğini daha önce görmüştük. Yani I6K'nın içinde, 16 değişik yerden başlayabilir. Bunlara sırasıyla 0-15 arası numara- lar verirsek, aşağıdaki komut ile, 16K'nın içindeki istediğimiz bir böl- geyi video RAM'ı olarak kullanabili- riz. Bu kez, 0-15 arası ekran numara- sını, 24. yazmaçın 4-7 numaralı bit'- leri saklamakta. Bunu daha mantıklı bir şekilde bul- manın bir yolu var. Diyelim ki, Commodore POKE 53248 4 24,PEEK(53248 4 24) AND 15 OR X*16