C-128 İçin Püf Noktaları (3)
Bilindiği gibi C-128'in 64 karşısında bir üstünlüğü ekranında 80 kolonu birden gösterebilmesidir. Ancak ne yazık ki C-128'de Türkçe karakterlere yer verilmemiştir, üstelik gerek duyabileceğimiz şekillerin hepsi C-128'in tanımlı grafik şekillerinin arasında bulunmayabilir. Büyük bir şans eseri olarak bilgisayarın karakterlerini istediğimiz şekilde yeniden tanımlamamız mümkündür, böylece normalde bulunmayan bir harfi veya özel bir grafik işaretini kendimiz tanımlayabiliriz. Aşağıda bunu yapacak bir program bulacaksınız. Verdiğimiz program her ne kadar ilk bakışta göze çok uzun gözükse de bu işi yapabilecek bir program için aslında çok kısa sayılabilir. Programımızı çalıştırdığınızda sizden değiştirmek istediğiniz ilk karakter sorulacak, bu soruyu cevaplandırmak için istediğiniz karakterin tuşuna basın. Karşınıza 8*8'lik matrisler çıkacak; soldaki matriste orijinal karakter sağda ise istediğiniz karakteri yapmanız için verilen matris bulunacaktır. Bu matrislerde, işareti o bitin yanık olduğunu yani karakterin o kısmında bir nokta bulunduğunu, işareti de o bitin sönük olduğunu, yani karakterin o kısmında bir şey olmadığını ifade edecektir.
Doğal olarak karşımıza çıkan matris, her satırında sekiz sütun olan sekiz satırdan meydana gelmiştir. Siz karakterinizi tanımlarken her satırı tanımlamayı bitirdiğinizde RETURN tuşuna basın. Karakterinizin tanımlanması bittiğinde düzeltme yapabilmenizi sağlayacak bir seçenek de vardır. Düzeltme yapmak istiyorsanız tuşuna basın ve gerekli düzeltmeleri yapın, eğer her hangi bir düzeltme yapmak istemiyorsanız sadece RETURN tuşuna basın.
Tanımlamayı bitirdiğiniz karakteri istediğinizi varsayarak programımız sizin için gerekli DATA satırlarını programa ekleyecektir. Değiştirmek istediğiniz bütün karakterlerin tanımlamalarını bitirdiğinizde programı RUN/STOP tuşu ile durdurup DELETE-5000 yazın. Bu komutla programımızı silmiş olacaksınız, geriye kalan kısım ise bu DATA satırlarını yükleyecek bir BASIC program ve DATA satırları olacaktır. İsterseniz bu kısmın satır numaralarını RENUMBER komutu ile değiştirebilirsiniz.
Bu yükleyici kısım programınızda yer alacak ve çalıştığında sadece sizin istemiş olduğunuz karakterleri yeniden tanımlayacak, diğer karakterler ise oldukları gibi kalacaklar.
Aşağıda programın kendisi yer almakta, programdan sonradan belli satır gruplarının genel açıklamasını bulabilirsiniz.
(Program Döküm Ekindedir)
Programımızın açıklamasına başlamadan evvel programda kullanılan bazı değişkenlerin işlevini açıklayalım.
ZN: DATA satırlarının ilk satır numarası MA: Matris8 "MA * 4 DU) 1 Karakteri hesaplamak için kullanılan veri
Verilen karakter satırı Cs: Değiştirilecek karakter AC: C$ değişkenindeki karakterin ASCII kodu CO: 1 karakterin ekran kodu CZ: OM'dan veri okuma cs: BASIC yükleyicide bulunan data satırlarındaki değerlerin toplamı Sıra programın bazı kısımlarının açıklanmasına geldi. Satır numarası 490-270 özel ekran kodu C$ içinde saklandı (ASCII kodundan çok farklıdır). maskelemesi düzenlendi. Bellek düzenlenmesi BANK 14'e çevrildi, böylece $D000'daki ROM karakter seti okunabildi. Son olarak buradan bir karakter bit bit okundu, ROM'dan okuma yapıldıktan sonra hafıza düzenlenmesi tekrar BANK 15'e çevrildi. : Yeni karakterin düzenlenmesi: Veri girişi için ekran açıldı (veri girişi için soru işareti olmaksızın INPUT komutunu kullandık). Kullanıcının matrisinin her satırı için bir WİNDOW tanımladık. : Kullanıcıya sorular: Düzeltme var mı? Eğer var ise MF değişkeni sıfıra eşitlenecek, WİNDOW tanımlanmamış kalacak, D(Y) temizlenecek. : Son karakterin DATA satırları basıla-
290-410
430-565
570-600
1000-1070 cak. Bu gösterimde ilk sayı karakterin kodudur. Sonra sırasıyla karakterin sekiz satırı için sekiz sayı ve son olarak -1 değeri girilir. Hazırlanmış olan DATA satırlar ekranda gösterildikten sonra bu satırların üstünden RETURN ile geçerek bu satırların programda yer almasını sağlayın. BASIC yükleyicinin başlangıcının üretilmesi, bu kısımda ayrıca tanımladığımız karakterin verilerini okuyacak bir döngü bulunmakta.
Satır arttırmak
Şimdi sıra 80-kolon gösterimi ile ilgili ilginç bir uygulamaya geldi. Bildiğimiz gibi 80-kolon gösterimde bir satırda en çok 80 karakter gösterilmesini sağlayabiliriz, fakat bu satırda gösterilecek olan karakter sayısını azaltarak satır sayısını çoğaltmamız mümkün olabilir. Bu değiştirmeyi yapmak bizim için çok kolay bir iş olacaktır. VDC'nin yazmaçlarından 01 ve 06 numaralı yazmaçlar ekrandaki sütun ve satır sayılarını belirlemekteler:
5000-5085
04: 1 Bir satırdaki karakter sayısı (Açılış: 80) 06: Bir ekran sayfasındaki satır sayısı (Açılış: 25)
Tekrar hatırlatalım ki bir satırda 80'den fazla karakter elde edebilmeniz mümkün değildir. Bizim amacımız ekrandaki satır sayısını artırmak. Bunu yaparken şu formüle dikkat etmeliyiz:
Yeni kolon sayısı * yeni satır sayısı = 2000
Eğer bu işlemin sonucu 2000'den fazla ya da az olursa bazı sorunlarla karşılaşabiliriz. Aşağıda 33 satır x 60 karakterlik ekranı elde etmemizi sağlayacak bir program bulunmakta.
40 REM 60*33
20 1
30 POKE A,1:POKE
40 POKE A,6:POKE B.,33
50 END
Program çalıştıktan sonra bir satırdaki karakter sayısı 60'a inecek, satır sayısı da 33'e çıkacak. Böylece tam sekiz fazladan satır elde ettik, fakat bu fazladan elde ettiğimiz satırları eğer çok iyi bir monitöre sahipsek görebiliriz. Monitörümüz çok iyi değilse elde ettiğimiz satırların ancak üç veya dördünü görebiliriz. ile yaptığımız denemede ekranda en fazla 33 satır görebildik.
8*16 karakter
Bildiğimiz gibi karakterler 8*8'lik matrislerde yer alırlar. Fakat aşağıda göreceğimiz metodla karakter matrislerini 8*16 şekline getirmemiz mümkündür. İlk önce matrislerin boyutlarını kontrol eden yazmaçlara bakalım. 22: Matris gösterim (yatay) 23: Matris gösterim (dikey) Her yazmaçta bir karakter matrisinde kaç piksel (ekran noktası) olması gerektiği belirtilir. Her iki yazmacın da açılış değeri sekizdir. Biz bu yazmaçlardan, 22 numaralı yazmacın ilk dört bitiyle, 23 numaralı yazmacın ilk beş biti üzerinde duracağız. Aşağıda verilen programı yazın
(Program Döküm Ekindedir)
Aşağıdaki programı bir oyun programında kullanabilirsiniz: (Program Döküm Ekindedir)
Şimdilik 80-kolon gösterimle ilgili konuları bitiriyoruz, yazımızın daha sonraki bölümlerinde tekrar 80-kolon ile ilgili bilgiler vermeye çalışacağız. 40-kolonda grafik çizimlerine başlamadan evvel C-128'de C-64 moduna geçtiğinizde yapabileceğiniz bazı enteresan işleri görelim. Bildiğimiz gibi C-128'in en büyük avantajlarından birisi C-64 ile tam uyumluluğudur. C-64 moduna geçtiğinizde C-64 için yapılmış tüm yazılımları kullanabilirsiniz.
C-64 modunda yüksek hız
C-128, 40-kolon gösterimde VIC-8564 işlemcisini kullanıyor. Normal C-64'lerde bu işi gören işlemci ise VIC-6567'dir. C-128'deki bu yeni işlemci normal C-64'ün VIC'i ile uyumludur. Yani yeni VIC eski VIC'in yaptığı işlerin aynısını yapabilir. Yeni VIC'te iki yeni yazmaç bulunuyor ve bu yeni yazmaçlar C-128'in C-64 modunda iken kullanılabiliyorlar. 48 numaralı yazmacın özel bir görevi var.
48: İşlemci-saat C-64'te olduğu gibi, C-128 saati de bütün bilgisayarı kontrol eder, 48 numaralı yazmaçla C-128'in hızını 1 MHz'den 2 MHz'e çıkarabilirsiniz. Burada ilginç olan bu yazmacı kullanarak C-64 modunda da hızı 2 MHz'e çıkarabilmenizdir. Bunun anlamı elinizdeki C-64 programlarınızı normalin iki katı hızla çalıştırabilmenizdir. Bundan başka hız değişimi zaman kaybına neden olan yordamlarda hızlanacaktır. Fakat ufak bir sorunumuz yok değil: Bilgisayarımızın hızını iki katına çıkardığımızda VIC ekrandaki görüntüyü tazelemede geç kalıyor, başka bir deyişle bu hıza yetişmiyor. Bu yüzden bilgisayarınızı, ekrandaki görüntüye ihtiyacınız yoksa 2 MHz hıza çıkarın, mesela programınızın ağır çalışmasına neden olan ve ekrana ihtiyaç göstermeyen bir kısmında bilgisayarı hızlandırıp, ekran lazım olduğunda bilgisayarı tekrar eski hızına döndürebilirsiniz. Bilgisayar 2 MHz hızında iken ekranda saçma sapan bir görüntü yer alacak-bu gayet normaldir. Bilgisayarı hızlandıran veya yavaşlatan POKE'lar şunlar:
POKE 53296,1 (2 MHZ, hızlı)
POKE 52296,0 (4 MHz, normal)
Bu POKE'ların etkisini görmek için şu küçük programı yazın. 10 TI$="000000": 20 : 30 FOR X=1 TO 10000 40 NEXT X 50 : 60 PRINT TI$ Bu programın döngüyü tamamlamak için 14 saniyeye ihtiyacı var. Şimdi programa şu satırları ekleyelim, 20 POKE 53296, 1:REM HIZLI 50 POKE 53296, 0:REM NORMAL Şimdi aynı döngünün sona ermesi için yedi saniye gerekmekte.
C-64 modunda sayısal tuş takımı
C-64 modunda iken klavyenin sağında yer alan sayısal tuş takımını kullanamıyoruz, fakat POKE 53295, 248 komutu ile sayısal tuş takımını da çalışır hale getirebiliriz, fakat tekrar bir problemle karşı karşıyayız. Ne yazık ki bu sayısal tuş takımındaki tuşlar üstlerinde gösterilen karakterlerle uyuşmuyorlar. 53295 numaralı hafıza adresi VIC-8564'ün 47 numaralı yazmacına karşı gelmekte. Biz üstteki POKE komutu ile bu adrese C-128 modundaki değeri veriyoruz. Bir sonraki sayıda görüşmek üzere hoşçakalın. C1
000000“
İZ Zar