Commodore sayı 11, sayfa 50

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 50

KE *1265,PEEK(53265) OR 64 33270.PEEK(53270) AND 239

Konu HI: ün içinde 64 K RAM olduğu-

Ayrıca, 8 K BASIC, |

- sistem, 4 K karakter seti ve 4 K Giriş/Çıkış bölgesi vardır. Pek? bu ka dar çok hafızayı nası! ke işlem ünit ı 62 ce: , topu topu ÜR de bir alana hükme 24 K ne olacak? İşte bu sorun, haf avnı bölgesinin aynı anda k işler için lanılması ile çözülmüştür. Bunu, bir rafa üstüste konmuş benzetebilirsiniz; amacınıza uygun olan kitabı aradarı çıkarır, ckür, tekrar yetine koyarsınız. Ancak bu, raftaki belli bir bölgeyi birkaç kitap için ortak olarak kullanmanıza olmaz. Tıpkı sizin kitap seçmeniz gibi, C64'ün içinde de bir şeyin hangi hafıza tabakasının kullanılacağını belirlemesi gerekir. İşte bu işi, | numaralı yazmaç yapar. Yani POKE 1,XXX yaptığınızda, hangi tabakayı kullanacağınızı belirlersiniz. Önce hangi adresler arasının hangi işlere yarayabildiğini görelim:

yaran

$0000-$7FFF : $8000-$9FFF :

RAM a) RAM b) Takılı duran bir kartuş a) RAM b) BASIC ROM'u RAM a) RAM b) Karakter seti ROM'u ©) Giriş/Çıkış bölgesi a) RAM b) İşletim sistemi ROM'u

SA000-$BFFF :

$C000-$CFFF : $D000-$DFFF :

$E000-$FFFF :

Gördüğünüz gibi, tüm hafıza RAM olabiliyor. Ayrıca, iki hatta üç değişik amaç için ayrı ayrı kullanılabilen bölgeler de var. Yalnız bir yanlış anlama olmasın! Diyelim ki, $D000-$DFFF arasını RAM olarak kullanıyorsunuz. Bu, hafızanın bu bölüme ayrılmış olan diğer görevleri engellemez veya önceden varolan (örneğin Giriş/Çıkış bilgileri) içeriğini silmez. Bilgisayarınızın içinde, her görev için ayrılmış ayrı ayrı chip'ler vardır. Biz, sadece bunların hangisinin o anda öncelikli olduğunu belirleyebiliyoruz. Şimdi de, demin bahsettiğimiz 1. yarayacak (0-2 numaralı bitlerini) tanıyalım: SİT A) İçerik: 11

Bu durum, bilgisayarı ilk açtığınızda normal çalışmaların yürütülmesini sağlar. Hafıza bölümleri şudur:

$0000-$7FFF : $8000-$8FFF :

RAM RAM veya bilgisayar kartuş takılı açılmışsa, kartuşun içeriği

: BASIC ROM'u

$C000-$CFFF : RAM $D000-$DFFF : Giriş/Çıkış bölgesi $E000-$FFFF : İşletim sistemi ROM'u b) İçerik: 10 Eğer BASIC kullanılmayacaksa (örneğin makina dili kullanımı için yer gerekiyorsa) veya BASIC çeviricisinde bazı düzenlemeler yapılacaksa, BASIC ROM'unun altındaki RAM kullanılabilir. Eğer BASIC'i düzeltmeyi düşünüyorsanız, önceden bütün BASIC çeviricisini altındaki RAM'a kopya etmeniz gerekir. Ancak bu konu, ayrı bir yazı dizisine konu olacak kadar geniş. Yalnız bir uyarı: BİT'leri bu hale POKE komutu ile getirmeyin, BASIC, işlemeyi durduracağı için, bilgisayar komutları anlayamayıp kilitlenecektir. * Hafızamız artık şu şekilde olacaktır:

: RAM $8000-$9FFF : RAM $A000-$BFFF : RAM $C000-$CFFF : RAM : Giriş/Çıkış bölgesi $E000-$FFFF : İşletim sistemi ROM'u

c) İçerik: 01 Bu durum, bilgisayarın Giriş/Çıkış bölgesi dışındaki tüm RAM hafızasının kullanılması demektir. Sadece makina dilinde kullanılabilir.

$0000-$7FFF : RAM $8000-$9FFF : RAM $A000-$BFFF : RAM $C000-$CFFF : RAM $D000-$DFFF : Giriş/Çıkış bölgesi $E000-$FFFF : RAM İçerik: 00

Usta programcılar için 64 Kbyte RAM var artık. Tabii ki, bu durumu kullanabilmek için, bilgisayar işletim sistemi yazabilecek kadar bilgiye ihtiyaç var.

$0000-$FFFF : RAM

D) BİT 2:

Bu bit ile de, $D000-$DFFF arasındaki karakter seti ile Giriş/Çıkış bölgesi arasında seçim yapmak sözkonusu. Bu bit, 1 olduğu zaman, Giriş/Çıkış bölgesi işbaşında demektir. Burada VIC (görüntü chip'i), SID (ses üreteci), renk RAM'ı ve diğer kontrol ve haberleşme chip'lerine ait yazmaçlar bulunur:

$D000-$D3FF : VIC yazmaçları $D400-$D7FF : SID yazmaçları $D800-$DBFF : Renk RAM'ı $DC00-$DCFF : CIA 1 yazmaçları $DD00-$DDFF : CIA 2 yazmaçları $DE00-$DEFF : G/Ç 0 numaralı bölge $DF00-$DFEF : G/Ç 1 numaralı bölge

Eğer bu bit 0 olursa, artık kullanıcı karakter setindeki 4 K'lık bilgiyi okuyabilir. Ancak bu bit'i 0 yapmadan önce, bilgisayarın saniyede 60 kere yarattığı kesintileri durdurmak gerekir. Bunun için BASIC'de bir POKE komutu, makina dilinde de SEI kullanılır. Bu bölgeyle işimiz bittiğinde ise, tekrar bu bit 1 yapılmalı sonra da kesintiler CLI komutu veya bir başka POKE ile serbest bırakılmalıdır. Eveeeet... Bu bölümün de sonuna geldik. Özellikle son konunun grafikle alakasını soranlara hemen belirtelim. Grafik bilgilerimizi saklayacağımız hafıza bölümlerini, yukarıda belirttiğimiz bit'leri kullanarak, ROM'ların altına saklanmış gizli RAM'lara depolayacağız. Böylece programlarımızın rahatça çalışabildiği serbest RAM bölgeleri bize kalacak. Şimdilik hoşçakalın...

Klavyeyle gezinmek için ← ve → tuşları.