Commodore sayı 16, sayfa 58

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 58

10: Bu programımızda, bilgisayarın 3 numaralı BANK'ını kullanmak istiyoruz. Eğer dizimizin dördüncü bölümünü hatırlarsanız, videoram'ı bu 16K içinde 16 değişik yere koyabiliyor ve bunları 0-15 arası numaralandırabiliyorduk. Biz, üçüncü BANK için de 3 numaralı bölgeyi ekran (videoram) olarak seçiyoruz. Aynı şekilde grafik sayfası olarak da, 16K'nın ikinci yarısını seçiyoruz. Ancak bunu programın içinde kullanmadık. Çünkü, bunun kullanılması, karakter setinin gösteriminde zorluklara yol açardı. Biliyorsunuz, VIC'in 24. yazmaçının üçüncü bit'i, hem grafik, hem de karakter üreteci için önem taşıyor. Biz bu programda karakter setinin kaymasını göstermenin daha önemli olduğunu düşünüyoruz. Karakter setini de, 2K'lık adımlarla kaydırabildiğimizi göz önüne alarak, 2 numaralı bölgeyi karakter üretecinin başlangıç adresi olarak saptıyoruz. Tüm bu değerleri hesaplarsak, başlangıç adresleri şu şekilde olacaktır:

BANK: 3 ($C000) EKRAN: BANK * 3*1024 = 52224 KARAKTER: ($CC00)

3*16*1024 = 49152

BANK 2*2048 = 53248 ($D000) 20: Önce, CIA2'nin (56576 $DD00) alt iki bit'i ile oynayarak, belirtilen BANK'ı seçiyoruz. Asıl BANK SWITCHING işlemi budur. Bundan sonra yaptıklarımız, Commodore 64'ü kendisine getirmek için yapılmaktadır.

30: Şimdi de, VIC'in 24 numaralı yazmaçının üst dört bit'ini değiştirerek ekran adresini saptıyoruz.

40: Ve en son olarak da, gene 24. yazmaçın bu sefer 1-3 arası bit'lerini değiştirerek, karakter setinin yerini VIC'e bildiriyoruz. Son üç satır boyunca yaptığımız işlemler, daha önce 12. sayımızda formül olarak verdiğimiz işlemlerdi.

50: Ancak, bu işlemi ilk kez görüyorsunuz. Gerçi daha önce de ekran editörünün öneminden bahsetmiştik, ama sadece bir iki kelimeyle. Bu editör, bizim tüm ekranı bir çalışma sahası olarak kullanmamızı sağlayan (full screen editor), COMMODORE 64'ü diğer bilgisayarlardan (çoğunda line editor var) ayıran en önemli özelliklerden biridir. Ancak, çalışmalarını sürdürebilmek için, ekran hafızasının (videoram) nerede olduğunu bilmesi gerekir. Bu nedenle, videoram'ın yeni adresini 256'ya bölerek elde ettiğimiz sonucu, editörümüzün bu bilgiyi almak için kullandığı 648 adresine yerleştiriyoruz. Normalde burada 4 vardır (1024/256=4). Eğer BANK SWITCH programını çalıştırdıktan sonra RUN-STOP/RESTORE yaparsanız, ekrana yazı yazamaz duruma gelirsiniz. Ancak, ekranda görmeden de olsa, POKE 648,4 yaparsanız, çalışmanıza devam edebilirsiniz. Bunun nedeni, bu tuş kombinasyonu ile VIC'in açılış durumuna gelmesi ve BANK 0'ı kullanmaya başlaması, ama editörün olduğu gibi kalması. 55: Ekran hafızasını değiştirdiğimize göre, 1024-2047 arasındaki ekranda kalan bilgileri yeni ekrana taşımakta fayda var. Bu satırdaki döngü, tamamen bu işlemi yapıyor. VİDEO içinde, yeni videoram başlangıç adresi hesaplanıyor. Ancak bu sırada ekranda saçma sapan karakterler göreceksiniz. Çünkü daha karakter setini tanımlamadık. Gerçi başlangıç adresini VIC'e bildirdik ama, bu adresten sonra gelen 4K boyunca tamamen tesadüfi değerlere sahip byte'lar duruyor. Zavallı VIC de bunları karakter tanımlaması olarak görüp, bize bu byte'ları seyrettiriyor. Öyleyse, hemen ROM'daki tanımlamaların bir kopyasını da 53248'den sonraya çıkartmalıyız! Sakın karakter ROM'unun da 53248'den başlaması sizi şaşırtmasın. BANK değiştirdiğimiz için COMMODORE 64, karakter tanımlamalarını bizim belirttiğimiz adresteki RAM'dan okumak isteyecektir. Yani aynı adreslerdeki ROM'un bilgilerini RAM'a aktarmalıyız. 60: Ancak bildiğiniz gibi, $D000-$DFFF arası, bir ROM ve iki RAM taşımaktadır. Normal koşullarda yapılan PEEK ve POKE'lar, giriş/çıkış (Input/Output) adını verdiğimiz

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