Bu sayfadaki yazılar
Sayfanın metni
Sayfa 9
bir satırından sonra istediği bir işlemi yapmasına olanak tanımaktadır.
İşte bu iki teknik kullanılarak Hyperscreen gerçekleştirildi. VIC, alt ve üst ekran kenarını oluşturmak için iki tarama satırını gözönüne alır. Birincisinde ekran açılır, ikincisinde ise kapatılır. Aşağıdaki kapatılma satırı ile yukarıdaki açılma satırı arası alt ve üst boşlukları yaratır. Bu iki satır numarasını (ki, bunlar normal yazı satırlarından farklıdır), VIC'deki bir bit ile değiştirmek mümkündür. Bu bit'in değeri 1 ise, ekranda bilinen 25 yazı satırı görünür. Eğer bu bit 0 değerine sahipse, ekranda sadece 24 yazı satırı kalır ve ekran kenarları biraz uzar.
Şimdi... Eğer bu bit, ekranın kapatıldığı tarama satırından hemen önce satır sayısı 24 olacak şekilde değiştirilirse, VIC'in içindeki, ekranın nerede kapanacağını gösteren tarama satırının değeri de yukarıya doğru kayacaktır. Ancak bu sırada tarama işi o satırı çoktan geçtiği için ekran kapanmayacaktır. Böylece, ekranın alt ve üst satırları açık kalacaktır.
Tüm bunlar size çok karmaşık görünebilir. Ancak, Hyperscreen bu özelliğin kullanımını çok basite indirgemiştir.
Hyperscreen'in yanı sıra size bir de kullanım sunuyoruz. Bu program ne yazık ki çok uzun. Ancak kullanılan sprite'ların çokluğu, bunu zorunlu kılıyor. Bu program da MDE ile yazılmak zorunda. Programı yazmayı bitirip yüklediğinizde, kısa bir BASIC program göreceksiniz. Ancak bu sizi aldatmasın. Görünen BASIC satırlarının içbellekte bittiği yerden sonra, makine dilindeki bölümler başlıyor. Bu nedenle, programın üzerinde kesinlikle hiçbir değişiklik yapmayın. Program işleyişini yitirir.
Kısaca programın neler yaptığını açıklayalım. Öncelikle, Hyperscreen'in kendisi programın kendi içinde var. Bu nedenle önceden Hyperscreen'i yüklemeye gerek yok. RUN komutunu verdiğinizde, program sizden şu anki saati soracaktır. Sonra da alarmın çalmaya başlaması gerektiği saati. Bu sırada veriş formatı şu şekilde olacaktır: Eğer saat 16'yı 17 dakika 56 saniye geçiyorsa, vereceğiniz yazı 161756 olacaktır.
Daha sonra program sizin verdiğiniz sayıları, ana programın anlayacağı biçime çevirerek gerekli yerlere yerleştirecek ve programı başlatacaktır. Ekranın alt kısmında dijital bir saat ortaya çıktığını göreceksiniz. Bu saat yazı ekranını rahatsız etmeyecektir ve sizin yapacağınız işlemlerden bağımsız olarak çalışmaya devam edecektir. Alarm saati geldiğinde de bir dakika boyunca gong çalmaya devam edecek, sonra susacaktır.
Disket ve yazıcı işlemleri sırasında, bilgisayarın kilitlenmemesi için, bu işlemlerden önce (LOAD, SAVE, PRINT#, GET#, INPUT#, OPEN gibi) CTRL ve RESTORE tuşlarına birlikte basın. Kenarların kapatıldığını göreceksiniz. İşleminizi yaptıktan sonra C= tuşu ile RESTORE'a basıp kenarları yeniden ortaya çıkarın. Eğer RUN STOP/RESTORE ile durdurursanız, yeniden çalıştırmak için SYS 49756 vermeniz gerekir.
Bu programı işletirken kendi sprite'larınızı da kullanabilirsiniz. Bu durumdan saatin sprite'ları etkilenmeyeceklerdir. Tek dikkat etmeniz gereken şey $C000-$C207 (49152-49787) arasını kullanmanız gerektiğidir.
Programı RUN etmeden önce saatin arka plan rengini, basamakların rengini, hangi basamakların görüneceğini ve gong sesinin frekansını değiştirebilirsiniz. Aşağıda verilen kalıpları kullanmanız gerekir:
POKE 2974,renk: Arka plan rengi
POKE 2980,sayı : En soldaki basamağın rengi
POKE 2987,sayı : En sağdaki basamağın rengi
POKE 2962, PEEK (2962) AND (255-2↑1): 1 yerine 0-7 arasında bir sayı koyduğunuzda, o basamak görünmez.
POKE 3072,INT (F/256)
POKE 3067,F-256*PEEK (3072): F ile belirtilen frekans, gong sesi olarak kullanılır.
Okuyucularımızdan yeni kullanım alanları bekliyoruz...
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 8
İşte Commodore 64 için bulunan en yeni özellik. Bugüne kadar C64'ün yapamayacağı iddia edilen birçok şey, tüm bu iddialara karşılık yapıldı. Tıpkı bu programda olduğu gibi...
Bugüne kadar sprite'ların, ekranın sadece yazı yazılabilen kısımlarında görünebileceği öne sürülüyordu ve bunun aksini ispat etmek kimsenin aklına gelmiyordu. Ancak Holger Gehrmann isimli C64 meraklısı bir Alman çok kısa bir programla bunu yapmayı başardı ve bu özelliğin ilk kullanımları da kendini göstermeye başladı.
Hyperscreen çalışmaya başladığı zaman artık ekranın altında ve üstünde varolan boşlukları unutun! Bu yeni ekran kısımlarında yazı yazamamakla beraber, sprite'lar, bilinen eski kurallara uygun olarak buralarda gösterilebilmektedir. Şimdi isterseniz programımızın nasıl yazıldığını ve çalıştığını görelim.
Önce, hyperscreen adlı programı, bu sayımızda yayınladığımız Makine Dili Editörü (MDE) yardımı ile girin. Bu konu ile ilgili ayrıntılı bilgiyi MDE için verilen yazıda bulabilirsiniz. Programı diskete veya kasete kaydettikten sonra RUN STOP/RESTORE ile MDE'den çıkın. LOAD "HYPERSCREEN",8,1 veya LOAD "HYPERSCREEN" ile disketten veya kasetten programı hafızaya yükleyin. Yükleme bittikten sonra da NEW komutunu verin. Artık SYS 49152 komutunu verdiğinizde Hyperscreen çalışmaya başlayacaktır. Aniden alt ve üst boşlukların ortadan kalktığını göreceksiniz. (Ne yazık ki, sağ ve sol tarafların ortadan kaldırılmasının şu anda bilinen bir yöntemi yok). POKE 49209,27 verdiğinizde bu kısımlar yeniden ortaya çıkacak, POKE 49209,19 verdiğinizde ise yeniden kaybolacaklardır. LOAD ve SAVE işlemleri sırasında, kenarlar kısa bir süre için ortaya çıkarlar, ancak işlem bitince yok olurlar.
POKE 53281,sayı ile yazı ekranı ile birlikte yeni ekran kısımları da renk değiştirir. Eğer POKE 16383, sayı yaparsanız, yeni ekran kısımlarında verdiğiniz sayının ikilik sistemde oluşturduğu bit yapısına göre dikey çizgiler ortaya çıkacaktır. Bu çizgiler daima siyah olacaktır, bunu değiştirmek imkansızdır (kimbilir?).
Kimi okuyucularımızın, bu işlemin nasıl başarıldığını soracakları muhakkaktır. Bunu açıklamak için önce Interrupt tekniğini ve ekrandaki görüntünün nasıl oluştuğunu biraz açıklayalım. Bu konuları ve makine dilini bilen okurlarımız, Hyperscreen'in açıklamalı Assembler listesini okuyarak çalışma biçimini görebilirler.
Interrupt sözcüğü, İngilizce'de devam eden bir şeyi kesmek, rahatsız etmek anlamlarına gelir. Commodore 64 de çalışırken, saniyede 60 kere yaptığı işi bırakarak, belli bir programı işleme sokar. Daha sonra da eski işine kaldığı yerden devam eder. Ara-programın çalışması saniyenin 1/60'ından çok daha kısa sürdüğü için, normal işlemlerde hiç dikkati çekmez. Ancak bilinçli olarak bu ara-program değiştirilirse, programcının isteği doğrultusunda ve normal programdan bağımsız çalışan ikinci bir kısa program çalıştırılabilir. Normal ara-programı gösteren vektör $0314/$0315 (788/789) bulunur. Bu vektörü değiştirerek kendi ara-programımızı göstermesini sağlayabiliriz. Bu, ancak makine dilinde mümkündür.
Ekranın oluşması ise, bilgisayarın ekrana gönderdiği tarama ışınları ile olur. Tüm ekran saniyede 50 kere taranır. Herhangi bir zamanda ekranın hangi satırının tarandığı, C64'ün tüm grafik işlemlerini gerçekleştiren ünitesi VIC tarafından bilinir. Bu satırın numarası $D012'de (53266) bulunur ve kullanıma açıktır.
Ayrıca C64, istenirse belli bir satıra gelindiğinde bir Interrupt yaratabilmekte ve böylece programcının, ekranın belli