C-64 İçin Grafik Donanımı - 3

BELLEK KULLANIMI grafiklerini tam kapasitede kullanabilmek için, özellikle bilgisayarın belleğine nasıl ulaşılacağını linmesi gereklidir. En değerli ve önemli fonksiyonlara ancak makina dilinde ulaşmanız mümkündür. Bu nedenle makina dili bilgisi bu konuda çok gereklidir. Eğer makina dili bilmeden grafiklerle uğraşmak istiyorsanız, kendinze bir grafik ekleme pakedi almanız gerekmektedir. Bu paketlerde grafik programcılığını çok kolaylaştıran basit komutlar bulunmaktadır. Böyle bir pakedi alırken, en önemli unsurun hız olduğunu unutmayın. Ekrandaki metin ve grafikleri depolamak için belli bir miktar bellek kullanılır. Örneğin bitmapped grafikler renk belleği için 8K artı IK gerektirir ve çok renge gelince 2x1K olur gereksinme. Bu bellek alanı grafiğe ayrıldıktan sonra başka amaçlarla kullanılamaz. Aynı zamanda bu amaçla kullanılanılamayacak ya da kullanılması çok zor olan bellek alanları da vardır. (Özellikle BA-SIC'te) Daha sonraki konuların izlenebilmesi için, öncelikle bilgisayarınızın bellek düzeni hakkında birkaç şey söylemek gerekiyor. 64'de her tür. işlem için gerekli olan ana işlemci 6510 tipidir. Daha önce gelen model 6502'den tek farkı bellek için kullanabilecek ekstra satırlara sahip olmasıdır. 1. ve 0. adreslerde sırf onda bulunan iki register (kütük) vardır. Bizi burada | ilgilendiriyor. C-64 bilgisayarının 64K'lık bir RAM kapasitesi vardır. RAM bilgisayar kapatıldığı zaman kaybolur. Bu nedenle yalnızca çalışma sırasındaki bellek olarak hizmet eder. Buna karo) O:

şılık ROM bilgisayar kapatıldığı zaman bile muhafaza edilir. C-64 ROM'unda kernal, BASIC yorumcusu ve karakter jeneratörü bulunur. RAM'e ek olarak çeşitli ROM alanları ve perifer araçların kütükleri (VIC, CIA gibi) bulunur ki bunlar toplam 24 K alırlar. Peki tüm işler sadece 64K'lık bir adres alanıyla nasıl gerçekleştirilebiliyor? Bunun yanıtı üst üste gelme (overlapping) tekniğidir. Örneğin RAM ve ROM gibi değişik bellek alanları aynı adreslere sahip olabilirler, yani bellekte aynı yeri paylaşıyor olabilirler.

Bir bellek haritası şöyle görünebilir: $7000 $8000 kartuş $9000 SA000 A BASIC ROM $BO00 $CO00O $DOOO karakter seti VO M Kernal ROM $F000

Bilgisayar açıldıktan sonra aşağıdaki tüm bellek alanları okunabilir:

$9FFF: RAM SA000 - $BFFF: ROM $CO0OO - $ÇEFF: RAM - $DFFF: 1/O $E000 - $FFFF :

Bilgisayarın verili bir zamanda neye ulaşacağı belirli etkenlere bağlıdır. Üstelik VIC ve 6510 aynı zamanda başka başka bellek alanlarına ulaşabilirler. (Hatta aynı adreslere, ama biri ROM okurken diğeri RAM'i okur.) Önce 6510'da belleğe ulaşmayı inceledikten sonra VIC'e bakacağız. Grafikle uğraşırken ikisi de önemlidir.

BİR BAYTI OKUMAK

Eğer belli bir adresten bir baytı okuyorsanız, üst üste gelen bölgelerden hangisine ulaşılacağı kararı 6510 data kütüğünün içeriklerine bakılarak verilir. İlk üç bit (0-2) belli bellek alanlarını seçme fonksiyonuna sahiptir. Fonksiyonları şöyledir: A. Bitler 0/1- LORAM/HIRAM: a) Bitler 0/1 - 11: Bu iki bitte 1 iseler, $A000-$BFFF arasındaki okumalar BASIC ROM'a ulaşmayı sağlar. $E000-$FFFF arasında okuma ile kernal ROM'a ulaşılır. Bu normal durum. Eğer bir kartui $8000 spektrumuna yerleştirilirse RAM yerine o çalışır duruma gelir. Bellek konfigürasyonu o zaman şöyle görünür:

$0000 R
$7000 M
$8000 | kartuş
| (ROM)
$A000 | BASIC ROOM!
$BO0O
ŞC000
$C000
$DO0OO | I/O arası
$E000 | Kernal ROM
$F000

b) Bitler 0/1 — 10 Eğer yalnızca bit | açılırsa, Kartuş ve BASIC ROM kapatılarak onların altında yatan RAM okunacaktır. O zaman ortaya şöyle bir tablo çıkacak-

$0000 R $7000 $8000 A $9000 $A000 $BO00 M $C000 | I/O arası $E000 | Kernal ROM $FO00

Bu konfigürasyon yorumcuyu RAM'e kopyalayarak BASIC'te değişiklik yapmak ve ROM'u kapatıp RAM'i açmak için kullanılabilir. Eğer bir kartuş yerleştirilirse, $8000-$9FFF arasının açma kapamadan önce kaydedilmesi gerektiğini unutmayın, çünkü kartuş ROM'u BASIC ile aynı zamanda kapatılır. Merkezi işlemci 1. kütüğüyle çalışırken dikkatli olun, çünkü onda yapılacak değişiklikler belleğe ulaşım yollarında önemli sonuçlara yol açabilir ve bir hata durumunda bilgisayarınızı yeniden hayata döndürmenin tek yolu onu kapatıp yeniden açmak olabilir. ©) Bitler 0/1 -01: Yalnızca bit O açılırsa, tüm ROM alanı kapanır. $DO00-$DFFF arasındaki 1/O alanı bundan etkilenmez ve değişiklik olmaksızın kontrol edilebilir. Bu şekilde 60K kullanılabilir RAM elde ederiz:

$0000 R $7000 $8000 A $9000 $A000 $BO00 M $C0O00 $DO0OO | 1/O arası $E000 | RAM d) Bitler 0/1 - 00: Eğer iki bit de O ise, tüm RAM açılır. ROM ve 1/O fonksiyonları kullanılamaz. (Buna karşılık VIC ve benzeri çipler kütüklerini hala okuyabilir ve ekran değişmeden kalabilir). Konfigürasyon oldukça basittir:

$0000 $8000 $9000 $A000 A $BO0O $C0O00O $DOOO $E000 M $FO00

R

Bu I/O arasından ve karakter setinden daha düşük değerdeki RAM'i kullanmanın tek yoludur. B. Bit 2-CHAREN: Bu bit karakter jeneratörünü 6510 tarafından ulaşılabilir hale getirmeye yarar. Böylelikle programcı da ulaşıp değiştirebilir ya da kopyalayabilir.

a) Bit 2-1: Bu bilgisayar belleğinin ($DO00- $DFFF) arasını kontrol eder.. Diğer adresler bundan etkilenmezler. Bu bit normal olarak alır. Açıldığı zaman, $D0O00-$DFFF'deki 4K'lık karakter jeneratörü Yalnızca VIC tarafından okunabilir 1/O adresleri, VIC, SID

(Ses arabirim k'itükleri), CLA kütükleri ve renkli RAM tümüyle 6510'a açıktır. Bu bellek düzenlemesi şu şekildedir (Aşağıda)

b) 2-0 Eğer bu bit temizlenirse, programcı (esasında 6510) karakter seti deposunda bulunanları okuyabilir. Eğer bunu BASIC ile denerseniz, bilgisayarınız bir salise içinde programı uçuracaktır çünkü artık ulaşılır durumda bulunmayan CIA 1'deki zaman mekanizmasını çalıştıran bir interrupt rutini saniyede 60 kere çalışacaktır. Makina dilinde bu rutinin çağırılmasını önlemek için interrupt flag açılmalıdır. daha sonradan CLI ile çalıştırılabilir. Aynı şey kernal ROM'u bit 1'i boşaltarak kapatıldığı zaman da yapılmalıdır. Gelecek ay VIC bellek fonksiyonlarıyla devam edeceğiz.

VIC küt. | SID küt.

Renkli RAM |

$DİB00 | $DFOO

$DCOO | $DDOO

CIA2