Commodore sayı 46, sayfa 20

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 20

mize dönelim. Şimdi tüm bunlar ne demek oluyor? İnsanın aklına ilk önce şu soru gelebilir: Bilgisayar KOMUT sözcüklerini nasıl seçeceğini nereden biliyor? Yanıt son derece basit. Komutlar ya da (keywords) $7F ile $CB onaltılık sistem değerleri arasında değerlere sahiptirler. Return tuşuna bastığınızda, data yorum için klavye buffer'ına yollanılır. Sonra bir tarama tablosu kullanılır ve satırınızda komutlar aranır. Aranızdaki bazı dikkatli kişilerin “Ya PRINT “PRINT” yazarsam ne olacak” diye kendi kendinize sorduğunuzu duyar gibi oluyorum. Bu iki adet print ifadesi olarak yorumlanmaz mıydı? Yanıt hayırdır. Arama tablosunun görevlerinden biri de tırnak işaretlerini kontrol etmektir. Eğer bir komut tırnak işaretleri arasında ise, o zaman bir print ifadesi içinde olması gerekir. Yine örneğimize dönelim. Bellek adresi $0800 $00'ı içerir. BASIC programının doğru işlemesi için, BASIC belleğinin başlangıcından hemen önceki adres bir sıfır baytı içermelidir. Sonraki ilk bayt $17 ve $08'i içerir. Bu baytlar düşük/yüksek adres formatında link adresini temsil ederler ve bilgisayara sonraki BASIC satırının nereden başladığını söylerler. Sonraki iki bayt $0A ve $00'ı gösterir: Bu yüksek/düşük bayt formatında bir kere daha gösterilen satır numarasıdır. Sonraki bayt $97'dir. Komutların içinde bulunduğu spektrumu anımsarsanız bunun bir komut olduğunu anlarsınız. İşin aslında da bu POKE komutu için ikilik sistem karşılığıdır. Sonraki beş bayt 53200 sayısını temsil eder. Sonraki bayt ise, bir virgül olarak yorumlanan $2C'dir. Örneğin geri kalanına bakıp satır satır takip etmeye çalışın.

SATIRLARIN SONU

Bir bilgisayarın, bir BASIC programının sonuna vardığını nasıl anladığını merak ediyor olabilirsiniz. Sözünü önceden ettiğimiz link adresini anımsadınız mı? Eğer link adresinde çift sıfırlı bir bayt varsa programın sonuna geldiniz demektir. Bir BASIC programının başını ve sonunu bulabilmek için şu yerlere her zaman peek edebilirsiniz: $2D/2E ve $2B/2C. Bu sayfa sıfır yerleri VARTAB ve TXTTAB olarak bilinirler. Yeniden örneğimize dönecek olursak, $0862 sayılı yerin küçük demo programımızın sonunu gösterdiğini göreceksiniz. Baytları sayarsanız, bu küçük yedi satırlık programın 97 bayt aldığını göreceksiniz. Gördüğünüz gibi, BASIC belleği çok hızlı tüketiyor. O halde mevcut belleğin tümünü kullanabilmek için ne yapmalı? Birçok durumda bu ikinci harfi yalnızca shift edilmiş modda yazmak demektir. Bazen de ilk iki harfi yazıp, üçüncüyü shift edilmiş olarak yazmanız gerekir. Bu kuralın bir istisnası PRINT emiridir (statement). Bu ? tuşuyla kısaltılabilir. Örneğin, ?“MERHABA” yazmakla PRINT“MERHABA” yazmak arasında bir fark yoktur. P harfini izleyen bir shift edilmiş O da POKE yerine geçer. Peki tüm bunların yararı nedir? Programınızda ne kadar az satır olursa, o kadar az baytlık yer kaplarsınız. Shift edilmiş komutlar kullanmanın nedeni de, C-64 ekran editörünün bulunan en iyi editörlerden birisi olmasına karşın, bizi her program satırı (iki ekran satırı) başına 80 karakterle sınırlandırmasıdır. Yani shift edilmiş komutlar kullanarak, her program satırına daha fazla direktif sığdırabiliriz. Bellekten tasarruf etmenin diğer bir yolu da tek bir program satırına birden fazla direktif yerleştirmektir. Bunu en iyi örneklerle gösterebiliriz. Şekil 3'te yedi satırlık demomuzun yukarıdaki kolaylıklara başvurulduktan sonraki halini görüyorsunuz. Şekil 4'te de onu bellekte depolamanın yeni yöntemi var. Burada aslında tüm komutların kısaltılmış olduğunu, ama açıklık kaygısıyla normal gösterildiğini unutmayın. Şimdi baytları sayacak olursanız, 73'ü bulduğunu göreceksiniz. Kısa bir programda bile 24 baytlık tasarruf sağlayabildik. Uzun bir programda yapabileceğiniz tasarrufu düşünün bir de.

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