Bu sayfadaki yazılar
Sayfanın metni
Sayfa 26
10 PEEK(653);: GOTO 10
Run edildiğinde, 0 sayısı tekrar tekrar görünecektir. Bu da demektir ki, bu kütüğün tanıdığı tuşlardan hiçbirisine o sırada basılmamaktadır. Ama shift tuşuna basarsanız çıkan sayı 1, logo tuşuna basarsanız 2 ve CONTROL tuşuna basarsanız 4 olacaktır. Bu tuşların değişik kombinasyonlarını deneyip ne olacağına bakabilirsiniz. Sağ taraftaki RESTORE tuşu bazen CONTROL tuşu ile birlikte bilgisayarı reset etmekten başka pek bir işe yaramaz. Ayrıca bunu yapmasını program içinden önlemenin de bir yolu vardır. POKE 808,225 bu işi halledecektir ama onu basit bir programın içinden yapıyorsanız, durumu düzeltmek için POKE 808,225 kullanmayı unutmayın. Programdan çıkış için bir yol hazırlamayı unutmuş olabilirsiniz ve o zaman da tek çareniz bilgisayarı açıp kapamak olacaktır. Programlara dalmak için genellikle RUN/STOP tuşu kullanılır ama başka kullanımları da vardır. Bantta gelen ve yüklemek için shift ve RUN/STOP'a basmanız gereken programları biliyorsunuzdur. Bu yol ne yazık ki disketler için geçerli değil. Kütük 197'den daha önce söz etmiştik. Basılan değişen tuşları saptamak için 653'e benzer bir şekilde kullanılabilir. Daha önce sözünü ettiğimiz program satırında, 653 yerini 197'ye bırakırsa, programı run ettiğinizde 64 sayısının sürekli olarak belirdiğini göreceksiniz. Değişik tuşlara bastıkça sayı da değişecektir ve artık klavyenin sağ tarafındaki fonksiyon tuşlarını kullanmaya başlayabiliriz. F1 tuşuna basınca 4 değeri elde edilecektir. Tüm fonksiyon tuşları bu şekilde saptanabilir, ama her zaman olduğu gibi program içinden yapmanın yolu da vardır. Bu amaçla GET komutunu kullanmamız gerekecektir. Örneğin:
10 GET AS: IF ASİ THEN 10
Diğer fonksiyon tuşları (diğer dört değeri bulmak için shift kullanın, logo tuşu hiçbir şeyi değiştirmez) kendi CHR$ sayılarına sahiptirler. Sayılar, yukarıda verilen program satırı biraz değiştirilerek ve basılan tuşun ASCII değerini bulmak için bir değişken kullanılarak bulunabilir. Bu sayı yazılabilir ve işleyen bir programda tüm fonksiyon tuşları kolayca saptanabilir. Şimdi yeniden klavye buffer'larına dönüyoruz. Bu buffer denilen şey de neyin nesi? Bilgisayara bir şey yazdığınızda, daha sonra kullanılmak üzere bir yerde depolanması gerekir. C-64 ekrana bizim baktığımız gibi bakamaz. Ekran bellek mapped olsa da (yani ekranda görünen her şey bilgisayarın belleğinde bir yere kaydedilse de) 64'ün işletim sistemi her RETURN'e bastığınızda ve bir komut ya da program satırı girdiğinizde ekranı taramaz. Onun yerine kendi klavye buffer'ına bakar. Önde bir sayı varsa, ona program satırı muamelesi yapar ve hata kontrolü yapmaya falan kalkışmaz. Hata kontrolü C-64'ün tasarımcıları tarafından düşünülseydi fena olmazdı gibi geliyor bana. Basic programcılarını bir sürü uğraştan kurtarırdı bu. Eğer başlangıçta bir sayı yoksa, bilgisayar yazdığınızın hemen uygulanacak bir emir (statement) olduğunu düşünür ve değişik ROM rutinlerini kullanarak yapmaya ve size bir hata yapıp yapmadığınızı söylemeye çalışır. Örneğin basit bir sentaks hatası gibi. Yoksa komutu yerine getirir. Bu iç buffer'a direkt olarak ulaşmak pek mümkün değil ve tasarımcılar Allah'tan oynayabileceğimiz bir diğerini koymuşlar. Çok büyük değil, ama bir şeyler depolanıp ilginç sonuçlar alınabilir. Bunu yapmak için, bellekte nerede olduğunu bilmemiz gerekir. 631 sayılı yerde başlar ve yukarıya doğru devam eder. Nerede sona erdiğini bulmayı size bırakıyoruz. Bulabilmek için, bilgisayara bu buffer'a hangi cinsten kaç karakter koyduğumuzu söylememiz gerekir ve bu amaçla da bellek yeri 198'i kullanırız. Daha önce onu hangi tuşun basıldığını anlamak için kullanmıştık. Bir programda uygulamasını görmek istiyorsanız, aşağıdaki rutin herhangi bir nedenle programı return etmek istediğinizde işinize yarayacaktır: 1000 PRINT 1010 POKE 631,13:POKE 198,1:END
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 27
Bu teknik için başka birçok uygulama alanı mevcut. Örneğin bir programı disketten yükleyebilir ve run edebilirsiniz. Bunun için klavye buffer'ında iki kartuş return'ü ve 198'e 2 ile POKE etmek gerekiyor. Başlangıçta POKE 631,13:POKE 632,13 kullanın. Doğallıkla, önceden ekrandaki her şeyin pozisyonunu da hesaplamanız gerekiyor! Görüldüğü gibi, C-64 yalnızca bir oyun makinesinin çok ötesinde potansiyele sahip. Değerlendirmek de biz kullanıcılara düşüyor!