Commodore sayı 35, sayfa 54

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 54

Waveform: Dalga biçimi. Bu, üretilen ses tipinin bir tanımıdır. Bilgisayarın dört ayrı waveform'u vardır: Üçgen, testerediş, kare ve gürültü. Herbiri aynı tip seslerdir. Vector: Bu başka bir tür pointer'dır. Bir rutinin başlangıç adresi anlamına gelir. Bilgisayar, rutini nerede arayacağını bilmek zorundadır.

PEEK VE POKE NASIL YAPILIR?

Bu bölüm, bellek haritasının nasıl kullanıldığını henüz öğrenmekte olanlar içindir. Temel olarak, bellek haritası, çeşitli amaçlar için doğrudan doğruya kullanılabileceğiniz, bilgisayarın içindeki değerli bellek yerleşim alanlarının dökümüdür. Bu yerleşim alanları belirli bir yerdeki belleğin byte'ları olarak adlandırılır. Belleğin 64 K olması, çalışabileceğiniz 64*1024 adet bellek alanının varlığıösterir. Bu baytların bazıları bilgisayarın işletim sisteminin kullanımına ayrılmıştır, ama büyük kısmı sizin programlarınızda kullanabilmeniz için boş bırakılmış durumdadır. Bu dizimizde size ayrılmış olan kısımla ilgili bilgiler verilecektir. Örneğin, boşluk çubuğu gibi belirli tuşların ardarda basılmasını kontrol eden 650 adresli bellek alanını bulmak içni bellek haritasını taramanız gerekir. Herhangi bir tuşu basılı tutğunuz sürece o tuş yaptığı rarlayacağından, dizide verilen ipuçlarını izleyerek, bu bellek yerleşim alanındaki değeri değiştirebilirsiniz. Yapacağınız bu tür değişiklikler geçicidir ve bilgisayarı kapattığınızda kaybolur.

Şimdi de BASIC'teki değişiklikleri nasıl yapacağınızı açıklayalım. Diyelim ki, harita listesini taradınız ve 650 sayılı bellek yerleşim alanını değgiştirmeye karar verdiniz. (HEXadesimal rakamını gösteren $ sembolüyle ya da “hex”' şeklinde tamınlanmadıkça, tüm rakamlar desimaldir). Commodore, 650'yi RPTFLG olarak çağırır. 650'nin görevi klavyede hangi tuşların tekrarlanacağına karar vermektir. Böylece, klavyedeki tüm karakterlerin tuşu basılı tuttuğunuz sürece tekrarlanmasını istiyorsanız, 650 sayılı bellek yerleşim alanına hangi doğru değerin POKE edilmesi gerektiğini bulmanız gerekir. Bu örnekte bellek haritası tüm tuşların tekrarlanması için 255 değerinin kullanılması gerektiğini belirtir. Bir sayının belleğe yerleştirilmesini sağlayan BASIC komutu “POKE” olarak adlandırılır. Bu denli uzun açıklamalardan sonra, bu değişikliği yapmanın ne denli basit olduğunu görelim:

POKE 650, 255

İPUCU POKE ifadesi ile birlikte daima bir desimal (ondalık) sayı kullanım. Bunun anlamı, arada sırada binary (ikili), hexadesimal (onaltılı) ve desimal sayılar arasında dönüştürme işlemi yapmak zorunda kalacağınızdır. Herhangi bir bellek alanı yalnızca 255'e kadar olan bir sayıyı alabilir. Niçin?.. Commodore'un her bir kelime (bellek alanı) için sekiz bit kullandığını hatırlayın ve ikili sistemde sekiz bitin O'dan 255'e kadar sayı alabileceğini gözönünde bulundurun (makine, kendi içinde yalnızca ikili sistemi kullanır). İkili sistem hakkında daha fazla bilgi edinmek için dizinin bundan sonraki bölümü olan “Bitler ve Baytlar”ı inceleyebilirsiniz. Bu kısıtlamadan dolayı, bazen tek bir sırada iki bellek alanına sayi POKE'lamak zorunda kalabilirsiniz. Örneğin MEMSIZ olarak adlandırılan 643&644 sayılı bellek alanına bakalım. Bu alanlar kullanabileceğiniz belleğin (RAM — Random Access Memory — Rasgele Ereşimli Bellek) en uç noktasına karşılık gelen bir sayı alırlar. Belleğin en üst tabanı 40960'a kadar gelebileceğinden, bir bellek yerhleşim alanı için 256 limitinin üzerindeki birsayı değerini saklamak için bilgisayar iki alana ihtiyaç duyacaktır. Evet, birinci alan için 256 artı ikinci alan için başka bir 256 saklamak, 64 K'lık bir makine için pek pratik bir yol değil. Bunun yerine bilgisayar ikinci alandaki her sayıyı alıp 256'ya böler.

Örnekler:

DI alıbyt'ta saklanır. 411/267 üst bayt'ta saklanır

Bilgisayar 267'yi 11 şeklinde görür. Bir başka örnek:

121 alı bayı'ta üst bayta'ta 7*2564 121 -1913'tür. Bazen Commodore 64'ü üst belleği olduğundan daha aşağıdaymış gibi düşündürerek şaşırtmak yararlı olabilir. Bundan kazancımız son bin byt'lık bir bellek olacaktır ve bu belleği yaratıklar (sprites) için saklayabiliriz. Burada da birinci örnekte olduğu gibi bir POKE işlemi uygularsınız, ancak bunu iki kere yapmanız gerekir; bir kere sayının alt kısmı için, bir kere de üst kısmı için. Bir sayının alt kısmının ilk bellek alanında ve üst kısmının ise onu izleyen alanına yerleştiğini söylemiştim. Bu biraz ilkel gözüküyorsa da, bunu anlamak hiç de zor değil. COMMODORE (ve diğer pek çok mikrobilgisayar) çok parçalı sayıları bu şekilde saklayabiliyor. Bazen bu kural bozulabiliyor ve eğer böyle bir istisna bulursanız, bizi arayıp düzeltmeye çalışmayın. Bu durumda ne yapacaksınız. MEMSIZ'in değerini olduğundan |

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