Tablomuzun X satırının ve Y kolonu- nun yardımıyla o noktayı bulun. 8192 4 328 — 8520 adresinin 0 numa- ralı bit'i olduğunu göreceksiniz. He- men yanındaki (16,15) koordinatı ise, 8192 4 336 — 8528 adresinin Y numa- ralı bit'i oluyor. Kâğıt üzerinde bulunması pek de zor olmayan bu adres ve bit'lerin, he- sap yoluyla bulunması oldukça kar- maşık. Birazdan grafik rutinlerini ge- liştirirken bu konuya geleceğiz. Çokrenkli mod (multicolor) kulla- nıldığında byte'ların düzeni değişmi- yor. Tek değişen, yanyana iki nokta- nın bir noktaymış gibi davranması. Örneğin (0,0) multicolor koordinatı 8192'nin 7. bit'i iken, (1,0) koordinatı 8192'nin 5. bit'i olacaktır. Çünkü 7. ve 6. bit'lerin ikisi de (0,0) koordinat- ları için kullanılacaktır. Bu iki bit'in içeriği 7000, 7001, 7010 veya Yol1 ola- bileceğinden, o nokta dört değişik renkte olabilecektir. Böylelikle renk konusuna girdik. Her iki modda da renk kullanımının nasıl olduğunu görelim... 320*200'ü kullanıyorsak, grafik ek- ranındaki her 8*8'lik bölgede iki de- ğişik renk olabilir. Biri çizgi rengi, di- ğeri de arka plan rengi. Her bir 8*8'lik bölgenin bu iki rengi farklı farklı ola- bilir. Bu renklerle ilgili bilgi, VİIDE- ORAM dediğimiz bölgede saklanır. Normalde yazı yazdığımız ekranı sak- layan bu hafıza bölgesi, grafik ekra- nına geçtiğimizde bir renk deposu ha- line gelir. Bu hafızanın her byte'ındaki sayısal değer, karşılık geldiği 8*8'lik alanın rengini belirler. Bir alandaki çizgi rengini RC ile, arkaplan rengini de RE ile gösterirsek, VIDEORAM'- da karşılık gelen byte'ın içeriğinin RC*16-4- RE olması gerekir. Bir baş- ka deyişle, o byte'ın üst 4 bit'i çizgi rengini, alt 4 bit'i de ekran rengini be- lirler. VIDEORAM'ın organizasyonu da- ha basittir: kolaylıkla hesaplanabilir. Örneğin VI- DEORAM'ın başlangıç adresi $0400 (1024) ise (7,18) koordinatının renk byte'ı 1024 4 80— 1104 adresinde ola- caktır. Multicolor'da ise, demin de değin- diğimiz gibi her iki bit'in oluşturdu- Bu çift, o noktanın rengini belirleye- cektir: Yo 00—Renk 0— VİC'ın 33 numa- ralı yazmacı Yo01 — Renk 1 - VIDEORAM'Iın alt dört bit'i ol0 — Renk 2 - VİDEORAM'ın üst dört bit'i Yoll — Renk 3 — Renk RAM'ı Yı W B-7 © S-İSIL6-20! G1 A-7 aa at B ... 8-15 ga 41 92 !ls44 Gördüğünüz gibi her 8*8'lik grafik noktası grubuna karşılık gelen byte Renk RAM'ı 55296-56295 adresle- ri arasında yer alır ve yeri değiştirile- mez. Organizasyonu VIDEORAM ile aynıdır. VIC'in 33 numaralı yazmaçı ise normalde yazı ekranının rengini belir- ler. Şimdi ise 0 numaralı renk yerine geçiyor. Artık bu bilgileri değerlendirerek programlar yazmanın zamanı geldi. Nasıl grafik ekranı açılır / kapanır, renklendirilir, nokta çizilir / silinir, çizgi çizilir / silinir, elips çizilir / sili- nir? Tüm bu temel rutinleri birer alt- "program halinde yazarsak, artık gra- fik konusunda oldukça büyük bir adım atmış oluruz. Çünkü, tüm cisim- lerin temelinde yatan şekiller bunlar- dır ve bunları kullanarak diğer tüm geometrik çizimleri yapabilen altprog- ramlar yazabiliriz. Önce bir iki noktada anlaşalım. Kullanacağımız grafik sayfası, BANKO'ın ikinci yarısı, yani $2000'den (8192) başlıyor. Burayı seç- memizin nedeni, bilgisayarın açıldığı sırada BANK0'a ayarlı olması. Eğer CIA2'nin bit'leri ile oynayarak diğer BANK'lardan birini kullanırsak bir sürü kaydırma işlemi yapmamız gere- kecek. İsteyenler, daha önceki bölüm- lerde gördüğümüz POKE komutları- nı kullanarak başka bir grafik sayfa- sı kullanabilirler. Ancak dikkat etme- niz gereken bir nokta var. BANK2 ve BANK3'ü BASIC ile kullanamazsınız. Makina dili programlaması gerekir. BANKO'ı kullanmamıza bağlı ola- rak, VİDEORAM da $400'den (1024) başlıyor. Programlama dili olarak, herkesin anlayabilmesi için, BASIC kullanaca- ğız. Bunun yaratacağı en büyük sorun programların yavaşlığı olacak. Ancak makina dili kullanmak isteyenler ve programlamasını bilenler, bizim ver- diğimiz rutinleri kolayca makina di- line çevirebileceklerdir. Ayhan Kalay- hoğlu'nun makina dili dizisini okuma- ya devam edin. İlerde, grafik rutinle- ri de vermeye başlayabilir. Grafik rutinlerimizi geliştirdikçe onları birleştirip bir program haline getireceğiz. Vereceğimiz satır numa- raları 50000'den büyük olacak ve her bir parçası GOSUB ile çağrılabilecek. Gerekli olduğu zaman, bazı değişken- ler parametre gibi kullanılacak. Örne- ğin XN—100:YN—20 verip nokta koyma rutinini GOSUB ile çağırdığı- mızda, 320*200 ekranının (100,20) ko- ordinatına bir nokta konacak. Bir başka gereklilik de, grafik iş- lemlerine geçmeden önce POKE 56,32 vererek BASIC kullanım alanının ta- vanını $2000 olarak belirlemeniz. Yoksa, BASIC programınız ile değiş- kenleriniz grafik sayfasının bilgileri ile silinebilir. Artık başlayalım. İlk işimiz grafik sayfasını açmak. 320*200'lük ekrana geçmek için üç işlem yapmamız gerekiyor: 1) Yüksek çözünürlü grafiği aktif yapmak. 2) Multicolor'1ı kapatmak. 3) Grafik sayfasının $2000'den baş- ladığını belirtmek. İlk işlemi yapmak için, VIC'in 17 numaralı yazmaçının 5. bit'ini yak- mak gerekiyor. Multicolor'u kapat- mak içinse 22. yazmaçın 4. bit'ini sı- fırlamak lazım. Bir numaralı grafik sayfasını kullanmak için vereceğimiz POKE komutunu da evvelki sayımız- da görmüştük. 160*200'lük ekrana geçmek içinse, birinci ve üçüncü işlemlerin yanında ikinci işlemin tam tersini yapmak, ya- ni 22, yazmaçın 4. bit'ini yakmak ge- rekiyor. Programımızın 50000-50060 arası satırları, 320*200'e geçmek için kul- lanılan komutları kapsar. 52000-52060 arası ise multicolor'a geçer. Sadece 52 commodore F