C 128 için Püf Noktaları (2)

Bu yazımızda C128'in yanında C-64 ile de ilgili bilgiler vermeye çalışacağız, bundan başka ara sıra bazı oyunlarda size kolaylık sağlayabilecek veya size bir oyunda sonsuz hak verdirecek POKE'lar öğreteceğiz. C128 ile ilgili bir adresin mümkünse C-64'teki karşılığı da gösterilecektir. İlk yazımızda C-128'de VIC'ten yani 40-kolon modundan bahsetmiştik, şimdi sıra 80-kolon moduna geldi, bu yazımızda VDC 8563 (VIDEO DISPLAY CONTROLLER) işlemcisinin özelliklerini tanıyacağız. Bu işlemciye nasıl girebiliriz, normal karakterleri nasıl iki kat büyütebiliriz gibi ilginç şeyler göreceğiz. Bildiğiniz gibi C128'i bir iş bilgisayarı olarak kullanabilmemiz mümkün, makineye bir profesyonel özelliği kazandıran 80-kolon'luk gösterim yeteneğidir. Bu arada şunu hatırlatalım ki bu işlemci sadece RGB monitörlerde görüntü sağlamaktadır. Bu yüzden bu modda görüntü elde edebilmek için C1901 tipinde olduğu gibi RGB çıkışı olan bir monitör kullanmanız gerekmektedir. Şimdi alışmış olduğumuz ortamın dışına çıkıyoruz, bildiğimiz gibi 40-kolon modda ekran ve renk RAM'i normal RAM'de idi ve normal PEEK ve POKE komutunu kullanarak bu işlemciyi istediğimiz şekilde kullanabiliyorduk. Fakat 80-kolonda bu rahata sahip değiliz; çünkü 80-kolonun RAM'i normal RAM'de değildir ve normal PEEK ve POKE komutunu kullanamazsınız. Tak üzülmenize gerek yok, çünkü size 80-kolonda kullanılan işlemciyi nasıl kullanacağınızı göstereceğiz. Aşağıda işlemcinin yazmaçlarının bir listesi yer almaktadır.

00 Okuma: Durum, LP, VBlank... Yazma: İstenilen yazmacın 0-5 Biti 01 Satır başına karakter sayısı 02 Ekran penceresini kaydırma (yatay/karakter olarak) 03 Ekran penceresini kaydırma (dikey/satır olarak) 04 Dikey senkronize 05 Dikey toplam 06 Ekran sayfasında yer alan satır sayısı 07 Ekran penceresini kaydırma (dikey/satır olarak) 08 Interface modu 09 Matriks yazmacı - dikey 10 Kursor modu - taramaya başlama 11 Taramayı durdurma 12 Ekran hafızasının başlama adresi - yüksek byte 13 Ekran hafızasının başlama adresi - alçak byte 14 Kursor'un yeri - yüksek byte 15 Kursor'un yeri - alçak byte 16 Light Pen dikey 17 Light Pen yatay 18 Kanal adresi - yüksek byte 19 Kanal adresi - alçak byte 20 RAM başlangıç adresi - yüksek byte 21 RAM başlangıç adresi - alçak byte 22 Matriks yazmacı/yatay görüntü 23 Matriks dikey görüntü 24 Dikey düzgün akış 25 Yatay düzgün akış 26 Renk 27 Adres kaydırma 28 Karakter üretme basic adresi - yüksek byte 29 Alt çizim - Kursor - tarama - satır 30 Yazmaç tekrarı 34 Kanal, video RAM'indeki byte'ı okuma/yazma

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

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.

TUNA ERTEMALP

Bugüne kadar, altı bölüm boyunca, Commodore 64'ün grafiksel yeteneklerinin başmimarı, görüntü sorumlusu VIC'in içini dışını, neler yapabildiğini gördük. Tüm yazmaçlar, bellek kontrolü, grafik, sprite derken, sıra onun en son yeteneğine geldi. Bu kez, karakter seti kullanımını, onu renklendirmeyi ve yeni karakterler tanımlamayı öğreneceğiz. Her zamanki gibi, dergimizin 10. ve 12. sayılarında yayınladığımız, grafik dizimizin 2. ve 4. bölümlerini elinizin altında bulundurun.

Bilgisayarınız, sizin her tuşa basışınızda, bastığınız tuşun kodunu, daha önce de gördüğümüz, normalde $0400-$07FF (1024-2047) adresleri arasındaki videoram'a kaydeder. VIC de, ekrandaki görüntüyü yaratırken bu hafıza bölgesindeki bilgiden yararlanır ve sizin devamlı olarak ekranda gördüğünüz görüntüyü oluşturur; hem de saniyede 20 kere. Böylece, görüntünün devamlılığı sağlanır. Videoram aynı zamanda, eğer noktasal grafik kullanıyorsak, ekrandaki noktaların rengini belirler. Bunu daha önce görmüştük. Bu ayki konumuzla pek fazla ilgisi yok. Videoram'da saklanan, karakterlerin ASCII kodları değildir. Commodore 64'ün el kitabında da bulabileceğiniz ekran POKE komutlarıdır. Örneğin ekranın sol üst köşesinde A harfi varsa, PEEK (1024) işlemi sonucunda elde edeceğiniz değer 1 olacaktır. Bu noktada, ekran POKE kodlarını biraz inceleyelim. 0-255 arası kodlamaya bakarsak, karakterlerin yanısıra, birtakım kontrol karakterleri de görürüz. Bunlar ekranda hiçbir karakter oluşturmazlar ancak, renk değiştirme, negatif yazıma başlama gibi işlemleri gerçekleştirirler. Ekran POKE kodları ise daha farklıdır. 0-255 arası kodların tamamı karakterlerle doldurulmuştur. Bunun başlıca sebebi, normal karakterlerin yanısıra negatif gösterimdeki karakterlerin de birer koda ihtiyaç duymaları. Böyle bir ayrımın yapılmadığını farzedelim. Bu durumda, VIC, ekrandaki görüntüyü oluştururken videoram'ı okuduğunda elde ettiği bir değerin normal mi, yoksa negatif bir karaktere mi ait olduğunu nasıl anlayacaktı? Bu nedenle 0-255 arası kodların ilk yarısı (0-127) normal karakterlere, ikinci yarısı da (128-255) negatif karakterlere ayrılmıştır. Bu size bir de kolaylık sağlamaktadır. Eğer ekrandaki herhangi bir bölgeyi negatif hale getirmek istersek, videoram'daki o bölgeye ait değerleri PEEK ile okuyup, 128 toplayıp, yeniden yerine POKE etmemiz yeterli olacaktır. PRINT komutunu kullanarak negatif yazmak istediğimizde, RVSON (karakter kodu 18) ve RVSOFF (karakter kodu 146) tuşlarını kullandığınızı hatırlarsınız. Sıra karakterlerin rengine geldi. Birazdan bahsedeceğimiz renk kodlarının hepsinin 0-15 arası rakamlar olduğunu ve her birinin Commodore 64'ün 16 renginden birine karşılık geldiğini gözönüne alın. Şimdi devam edelim. Renk RAM'ı olarak isimlendirdiğimiz, daha önce de noktasal grafikte çok renklilik kullandığımızda işimize yarayan bu bellek bölümü $D800-$DFFF (55296-56295) adresleri arasında bulunmaktadır. Bu bölgeyi, BANK adreslemeleriyle oynayarak değiştiremeyeceğimizi geçmiş bölümlerden biliyor olmalısınız. Bu bellek kısmında, ekrandaki her pozisyona bir byte ayrılmıştır (tıpkı videoram gibi). Örneğin 55296'nın içindeki değer ekranın sol üst köşesinin renk kodunu içerirken, 55297 onun hemen sağındaki karakterin, 56295 de ekranın sağ alt köşesinin rengini belirler. Bu noktada, belki de bugüne kadar dikkatinizi hiç çekmemiş bir konuyu açıklamak istiyoruz. CLR tuşuyla ekranı sildiğiniz zaman Commodore 64, renk RAM'ını baştan aşağı belli bir renk koduyla doldurur. Önemli olan bu renk kodunu nereden aldığıdır. Commodore 64'ün belli bir modeline kadar bu renk kodu, 53281 adresinde bulunan, yazı ekranının rengi olmaktadır. Daha sonra üretilen Commodore 64'lerde ise bu kod, o anda geçerli olan karakter kodunu saklayan 646'dan alınmaya başlandı. Bu değişikliğin ne gibi sonuçları oldu? Eski Commodore 64'te ekranı sildikten sonra 1024-2047 arasına bir değer POKE edildiği zaman bu görünmemekteydi. Çünkü o ekran pozisyonunun karakter rengi, ekran rengiyle aynı olmaktaydı. Tıpkı siyah kalemle siyah kâğıda yazı yazmak gibi. Daha sonra çıkan modellerdeki değişiklik ise şuna yolaçtı: Diyelim ki CLR yapmadan önce kırmızı renkle yazı yazıyordunuz, CLR yaptıktan sonra da ekrana bir şey POKE ettiğinizde, ekranda kırmızı renkle görünecektir. Eski modellerde bu olmayacağı için, CLR'den sonra 55296-56295 arasının da bir renk ile dolması gerekmektedir. Tabii bunun da kolay bir yolu var. Diyelim ki ekranı POKE yaptığınızda karakterlerin sarı olmasını istiyorsunuz. Bu durumda önce POKE 53281,7 ile ekran rengini sarı yapın, sonra ekranı silin.

Bu arada renk de sarı rengin koduyla dolacaktır. Sonra da ekranı tekrar eski rengine döndürün. FOR...NEXT döngüsü içinde renk RAM'ının 1000 elemanına POKE yapmaktan çok daha hızlı bir yöntem bu. Eğer elinizdeki model eski ise ve bazı programlar arkadaşınızda görüntü verirken sizde vermiyorsa, programın gerekli yerlerine bu tip bir satır ekleyin. Faydasını göreceksiniz... Bu minicik (!) ayrıntıdan sonra konumuza devam edelim. Herhalde yazı ekranının renginden VIC'in 33 numaralı yazmaçının (53281) ve çerçeve renginden de 32 numaralı yazmaçın (53280) sorumlu olduğunu belirtmeye gerek yok. Biz daha ciddi konularla ilgilenelim. Commodore 64'ün içinde iki karakter seti vardır. Birisi büyük harfleri ve grafik karakterlerini kapsar. Diğeri de küçük ve büyük harfleri kapsar ve grafik karakterlerinin bir kısmının yerini harfler alır. Bu iki karakter seti arasında, SHIFT ve COMMODORE tuşlarına aynı anda basarak gidip gelebilirsiniz. Her bir set 256 karakter içerir. Yani hafızada toplam 512 değişik karakter tanımlaması bulunmaktadır. Her bir set de kendi içinde ikiye ayrılır. İlk yarısı karakterlerin normal görünüşlerini, ikinci yarısı da negatif görünüşlerini taşır. Bu size bir şey hatırlattı mı? Yukarıda bahsettiğimiz ekran kodlarını mesela? Öyleyse, bu setleri biraz daha derinlemesine inceleyelim... Her bir karakter, 8*8 noktadan oluşur. Commodore 64'ün 320*200 noktalık bir ekran kapasitesi olduğuna göre, yazı ekranının neden 40'ar karakterlik 25 satırdan oluştuğu ortaya çıkıyor. Peki bu karakterlerin nasıl görüneceklerini VIC nereden biliyor? Tabii ki, bilgisayarımızın belleğindeki karakter tanımlamalarından. Her karakterimiz 8*8'lik bir matris oluşturduğuna göre, karakterin görüntüsüyle ilgili bilgiyi 8 byte içinde saklayabiliriz. Toplam 512 karakter olduğuna göre 512*8 = 4096 byte, yani 4K hafıza bize yeterli olacaktır. Bilgisayarımızda bu hafıza normal durumda $D000-$DFFF (53248-57343) arasıdır. Karakter tanımlamaları, ekran kodlarına göre sıralanmıştır. Örneğin ilk 8 byte karakteri, bir sonraki 8 byte ile de “A” harfi tanımlanır. Bu böylece sürer gider. İlk 256 karakter (karakter kodu 0-255) ile büyük harf ve grafik karakterlerinden oluşan set tanımlanır. Bunun da ilk yarısı normal gösterim, ikinci yarısı negatif gösterime ayrılmıştır. Sonra gelen 256 karakter ise küçük/büyük harf gösteriminin normal ve negatif tanımlamalarından oluşur. VIC ekrandaki görüntüyü yaratırken, videoram'daki ekran kodlarının yardımıyla karakter tanımlamalarındaki doğru yeri bulur ve oradaki karakter tanımını ekrana getirir. Gördüğünüz gibi ekran kodları ile karakter tanımlamalarının düzeni arasındaki benzerlik sadece tesadüf değil. Ancak, karakter tanımlamalarının bulunduğu bu bölge ROM olduğu için üstüne bir şey yazılamaz. ROM'u okuyabilmek için de normal PEEK komutu yeterli olmamaktadır. Birazdan, verdiğiniz programları incelerken bu bölgeyle ilgili zorlukları nasıl çözeceğimizi de göreceğiz. Bilgisayarı açtığınızda, karşınıza çıkan yazı ekranı normal renk modundadır. Ancak, grafik ekranı gibi, yazı ekranını da çok renkli (multicolor) hale sokabiliriz. Bunun için VIC'in 17 ve 22 numaralı yazmaçlarının bit'leri ile oynamamız gerekiyor. Şu iki POKE komutu ile önce grafik ekranını ve birazdan açıklamasına başlayacağımız extended color (geliştirilmiş renk) modunu kapatıp, multicolor'u aktif hale getiriyoruz. POKE 53265, PEEK (53265) AND 159 POKE 53270, PEEK (53270) OR 16 Yazı ekranını multicolor'a geçirmenin sağladığı en önemli olanak, özellikle oyun türü programlarda, renkli grafikleri sadece yazı ekranını kullanarak yapabilmek. Grafik ekranının 8K, yazı ekranının 1K olduğunu ve grafik ekranının gerek renk, gerekse nokta organizasyonunun ne kadar karmaşık olduğunu düşünürseniz, multicolor karakterlerin programlamada ne kadar kolaylık yaratacağını kolayca tahmin edebilirsiniz. Şimdi bu özelliğin derinliklerine inelim. Diyelim ki multicolor'a geçtiniz. Bu durumda bilgisayarınızın kullanabileceğiniz renk sayısı 16'dan 8'e inecektir. Hemen meraklanmayın. Tabii ki, bunun bize sağlayacağı bir fayda var. Eğer ekrandaki bir karakterin rengi, daha doğrusu onun rengini temsil eden renk RAM'ındaki byte'ın değeri 0-7 arasında ise, sözkonusu karakter normal modda gösterilecektir. Dolayısıyla, multicolor moda geçtiğimiz halde normal karakter biçimlerini kullanma olanağımızı sürdürebiliyoruz. Düşünün, bu olmasaydı, çok renkli yazı ekranında oynanan bir oyunun skorlarını ekrana nasıl yazardık. Sakın multicolor harflerle demeyin! Neden mi? O zaman multicolor karakterlerin açıklamasına girişelim... Eğer ekrandaki karakterimizin rengi olarak 8-15 arası bir renk belirlemişsek, artık karakterimiz multicolor'dadır. Yazı dizimizde defalarca belirttiğimiz gibi, multicolor moduna karşılık feda ettiğimiz şey, yatay noktasal çözünürlüktür. Bu durumda karakterimizin çözünürlüğü 4*8'e düşecektir ama, dört değişik renk kullanabilecektir. Her zaman olduğu gibi, yanyana duran iki noktanın aldığı değere göre, oluşturdukları renk noktasının renginin nereden geleceği belli olacaktır. Bir tablo halinde bu ilişkiyi belirleyelim: 000: VIC'in 33. yazmaçı (0 numaralı arkaplan rengi) 001: VIC'in 34. yazmaçı (1 numaralı arkaplan rengi) 010: VIC'in 35. yazmaçı (2 numaralı arkaplan rengi) 8-15 arası tanımlanan, o karaktere ait renkten 8 çıkartıldığında elde edilen 0-7 arası renk kodu (Renk RAM'ının alt 3 bit'i). Bu konuyu böylece kapatalım ve oldukça ilginç bir başka özelliğe değinelim: Extended Color. Bilindiği üzere, ekran renginiz ne ise, ekrandaki karakterlerin arkasında görünen renk de hep odur. Karakteri negatif yapsanız bile, ortaya çıkan şey sadece karakter rengi ile ekran renginin o karakterin kapladığı alan içinde birbirleriyle değiştirilmiş olmalıdır. Peki, her karakterimizin arkasında kalan rengin ayrı olmasını becerebilir miyiz? Tabii ki... Şüpheniz mi vardı?.. Şu iki POKE komutunu verin:

POKE 53265, PEEK (53265) OR
64
POKE 53270, PEEK (53270) AND
239

Eğer şansınız varsa, ekranda hemen birkaç değişiklik farkedeceksiniz. Etmediyseniz, şunları sırasıyla yapın: 1) “a” harfine basın. 2) “a” harfine SHIFT ile basın. 3) RVS ON yapın. 4) “a” harfine basın. 5) “e” harfine SHIFT ile basın. 6) RVS OFF yapın. Göreceğiniz gibi, ekrandaki “a” harflerinin her birinin arkasında farklı bir renk olacak. Birincinin arkasında o anki ekran rengi (normalde koyu mavi), ötekilerinde de muhtemelen beyaz, kırmızı ve camgöbeği olacak. Ancak dikkatinizi çekti mi acaba? SHIFT ile “a”ya basınca, büyük “A” veya bir grafik işareti çıkmadı. Ortaya çıkan sadece arka rengi değişmiş yeni bir “a” harfi oldu. Şimdi bu özelliği daha teknik açıdan inceleyelim. Onuncu sayımızda da görebileceğiniz gibi, VIC'in 33-36 arası yazmaçları, değişik arkaplan renkleri tanımlıyorlar. 33. yazmaç: 0 numaralı arkaplan rengi. 34. yazmaç: 1 numaralı arkaplan rengi. 35. yazmaç: 2 numaralı arkaplan rengi. 36. yazmaç: 3 numaralı arkaplan rengi. 0 numaralı arkaplan rengini, normalde ekran rengi olarak kullanıyoruz (53248 + 33 = 53281!). Diğerleri de ya multicolor'da, ya da extended'de işe yarıyorlar. Extended moda geçtiğinizde, sadece ekran kodu 0-63 arası olan, karakter setinin ilk 64 karakterini kullanabilirsiniz. Bu tabii ki büyük bir kısıtlama. Ancak bu setin içine, bütün harf, rakam ve noktalama işaretleri giriyor. Dolayısıyla eğer sadece yazı yazacaksanız, grafik sembolleri ile bir alâkanız yoksa ve arkaplan renklerinin farklı olması önem taşıyorsa, oldukça uygun bir özellik. Bir karakterin alabileceği arkaplan renklerini, ekran kodu'na göre şu şekilde özetleyebiliriz. 0-63: 0 numaralı arkaplan rengi. 64-127: 1 numaralı arkaplan rengi. 128-191: 2 numaralı arkaplan rengi. 192-255: 3 numaralı arkaplan rengi. Bir başka açıdan da şunu söyleyebiliriz: Eğer tuşa doğrudan basılırsa, 0 numaralı arkaplan rengi. Eğer tuşa SHIFT ile basılırsa 1 numaralı arkaplan rengi. Eğer RVS ON (CTRL ve 9) ile negatif gösterime geçilir ve tuşa doğrudan basılırsa, 2 numaralı arkaplan rengi. Yazı ekranıyla VIC arasındaki ilişkiler de bu kadar...