Commodore sayı 36, sayfa 52

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 52

karakter-ROM'un temel adresi olan 53248 yüklenir. 30. satırda daha önce görüldüğü gibi klavye sorulur ve elde edilen A$ değişkeni ASCII koduna çevrilir. 40. ve 50. satırlarda küçük bir program hilesi kullanılmıştır. ASCII kodlarının ekran gösterim kodlarına çevrilmesinde öncelikle 40. satırda ekran silinir ve A$ yazısal dizisi ekranın sol üst köşesine yazılır. Bilindiği gibi ekran belleğinde A$'ın içeriği ekran gösterim kodu şeklinde bulunur. Böylelikle uygun adres okunduğunda istenen değer kolaylıkla elde edilebilir. Bu okuma işlemi 50. satırdaki PEEK (1024) komutu ile gerçekleştirilir. Ayrıca 50. satırın başka bir görevi daha vardır: A$'daki işaretle karakter ROM'undaki başlangıç adresi hesaplanır. (Ekran gösterim kodu sekiz ile çarpılır ve karakter ROM'unun temel adresine eklenir.) Daha sonra 60 ile 170. satırlar arasında tam 8 defa tekrarlanan bir döngü bulunur. Bu döngünün görevi karakterin her bir satırını okumak ve ekrana vermektir. AD değişkeni her seferinde o anda okunan satırın değerini almaktadır. 70. satırda hesaplanan bu değeri 80. ve 90. satırlar makine dili programa bildirmek için hazırlık yaparlar. 100. satırda SYS komutu ile program işleme sokulur. 110. satırda 253 no'lu adresde bulunan karakter satır değeri BY değişkenine yüklenir. Bundan sonra 120 ve 160. satırlar arasında yeni bir döngüye girilir. 130. ve 140. satırlar BY değişkeninde bulunan sayıyı yorumlama görevine sahiptirler. İşaretin üzerinde bulunan her nokta bir yıldıza (*) karşılık gelmektedir. Buna karşılık işaretteki her boşluk için ekranda bir nokta gösterilmektedir. Her bir karakter satırda sekiz adet nokta bulunduğunu biliyoruz. Şimdi her bir noktaya bir sayı verelim. Soldan itibaren ilk nokta 128, ikinci 64,

“LÜTFEN BİR TUŞA BASIN” 128, 64, 32, 16, 8, 4, 2, 1'dir. Eğer bir satırda birden fazla nokta varsa bunlara karşı gelen değerler teker teker toplanır. Örnek olarak bir satırda en soldaki ve en sağdaki noktalar varsa bu satır 129 değerini alır (soldaki için 128 + sağdaki için 1). 130. ve 140. satırlarda yer alan (BY AND 2^J) komutu BY sayısına karşılık gelen noktaları belirler. Eğer BY değişkeninde kayıtlı olan sayı ikinin herhangi bir üssü olduğu belirlenirse ekranda bir (*) işareti belirir. Aksi taktirde 140. satırda boş yerlere bir nokta konulur. 170. satır cursoru bir sonraki satırın başlangıcına getirir ve son satır oluşana dek sekiz defa kullanılır.

Böylelikle program tamamlanmış olur. Aslında Videocontroller'de olup bitenler tamamen aynıdır. Eğer programı BASIC ile yazıp çalıştırırsanız C-64'ün her bir karakterinin nasıl yapıldığını görebilirsiniz. Yalnız BASIC-Demo'nun Videocontroller'dan defalarca yavaş çalıştığını unutmayın. Son olarak işaretlerin monitör üzerinde nasıl oluştuğuna kısaca değineceğiz. Videocontroller'ın ürettiği sinyal monitörde üçe ayrılır: Resim bilgilerini taşıyan sinyal (monokromlarda BAS, renklilerde FBAS) ve yatay ile dikey yönlerde katod ışığını etkileyen sinyaller. Bu bilgi pek fazla değildir ama konumuz için daha fazlası gereksizdir.

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