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ı.
Sayfa 55
K azaltın.
1) O andaki değeri bulun...
10 A-PEEK (643 4 PEEK (643)*256 ALT kısım ÜST kısım
MEMSİZ'in değeri olan bu sayı 64'ünüzü ilk açtığınızda 40960'ı verecektir.
2) Bu değerden 1K eksiltelim. 20 A-A-(1*1024) Bir K'nin 1024 bayt olduğunu hatırlayın (Daima 1'i kullanmak zorunda değilsiniz, bu başka bir sayı da olabilir.)
3) Yeni değeri ALT ve ÜST kısımlara ayırın 30 — A-(B*256) ve olur Böylece C'yi alt kısım B'yi de üst kısım yapmış olduk. ÖR: 40960-1K — 39936 30. satır RUN edildiğinde size üst kısım için 156 alk kısım için se O verecektir. 4) Bu sayıları belleğe POKE edin. 40 POKE 643,C: POKE 644,R (sayılar ondalik verilmeli!) ÖR: POKE 643,0: POKE 644,146
Son Öğütler
1) Ana Bellek Haritasında bahsedilen konuları denemek ve sonuçlarını görmek için istediğiniz gibi PO-KE ve PEEK yapmaktan çekinmeyin. Anlatımlar, COMMODORE'de mümkün olan çeşitli işlemleri nasıl yapacağınızı sadece en temel yönleriyle vermektedir. Daha fazla bilgi, geniş uygulama ve örnekler için Programcının El Kitabı ve dergide yeralan Püf Noktaları köşesini takip etmenizi öneririz.
2) Bazı bellek alanlarının değerini bilgisayara anlatmak için iki sayı gerektiğini unutmayın. Bu sayılardan birincisi ALT kısım, ikincisi ise ÜST kısım olarak saklanır.
3) Bütün bellek alanlarına erişmeniz mümkün, ancak çoğu sadece ileri düzeyde kullanıcılar içindir. Eğer ne işe yaradıkları yakında bir fikrinız yoksa üzülmeyin. Yapacağınız şey denemek ve öğrenmektir. 4) Eğer bir sorun çıkarsa Run/stop ve Restore ile pek çok bölgenin değgerlerini orijinal değerlerine döndürebilirsiniz.
5) Ana Bellek Haritasının bazı alanları sadece okunmak içindir. Yani, burada ne olduğunu görmek için PEEK yapabilir, ama kendi sayınızı buraya POKE yapamazsanız. Bunun nedeni, belleğin bazı kısımlarının ROM yani Salt okunabilir Bellek olmasıdır. Bu tür hafıza sürekli kalıcıdır ve POKE yaparak değiştirilemez, ama COMMODORE düşünceli olarak bu ROM bölgelerini belleğin diğer kısımlarını kopyalayıp, orada POKE edehilme imkanını sağlamıştır.
Şimdi gı dönün ve son bölümü en az bir kaç yüz kere daha okuyun. MEMSIZ'in eski değerini okuyup yeni değer saklayan program sadece dört satırdan oluşur. Bu asatırları, program olarak yapız RUN etmenin yanında doğrudan da girebilirsiniz.
Baytlar ve Bitler
PEEK ve POKE yapabilmek için, önce bir baytın ne olduğunu ve nasıl bir yapıya sahip olduğunu anlamalısınız. Bunu anlamak o kadar zor de- Ve bunlar hakkında çok fazla şey bilmeden de bellek haritasını kullanabilirsiniz. Ama baytlar ve bitler haktıysa bitin ne olduğunu daha başka bir şekilde açıklayalım. Bir bit, bilgisayarın kullanabileceği en küçükbilgi parçasıdır. Esasında bilgisayar temelde sadece bitlerle uğraşır, Bir mikroişlemciyi bir otobüs durağına benzetebi Bu otobüs durağına sadece tek şeritli bir yol gelir. Bu da, iki otobüsün birbirlerini geçebilmesi için yeterli boşluk olmadığından, bir otobüsün bir defata yalnızca bir yönde seyahat edebileceğini gösterir. Bu yüzden bir otobüs ya durağa varıyor ya da duraktan ayrıliyor olabilir. Mikroişlemci ya da otobüs durağı otobüsüne “varan otobüsü kabul ediyorum” ya da “kalkan otobüsü gönderiyorum” anlamına gelen bir sinyalle bunları tarifeye bağlayabilir. Aslında gerçek bilgisayarın donanım yapısında mikroişlemciye ve mikroişlemciden bilgi taşıyan hatlara “data busses” (bilgi taşıtları) adı verilir. Sekiz ayrı giriş (INPUT) ve sekiz ayrı çıkış (OUTPUT) hattına ihtiyacımız yoktur. Çünkü otobüs durağına gelen tek şeritli yol gibi, hatlar da çift yönlüdür. Yani bilgi ya varıyor (INPUT) ya da ayrılıyor (OUTPT) olabilir. Mikroişlemcinin ayrıca bilgi alacağını (INPUT) veya göndereceğini (OUTPUT) belirleyen kendine özgü bir sinyali vardır
Otobüste kimler var?
Bu otobüse biraz daha yakından bakalım. BYTE EXPRESS olarak adlandırılabilen bu otobüsün sekiz koltuğu vardır ve daima sekiz yolcu 1, kapalı olduklarında ise 0 değerine sahip olurlar. Bildikleri ve size anlatmak istedikleri tek şey değerleridir. Şimdi, karşımızda duran ve herbiri “AÇIK” ve “KAPALI” diye bağıran sekiz küçük canavardan nasıl anlamlı bir bilgi elde edebiliriz? İşlemciye vardığında bütün bir kında ne kadar çok şey bilirseniz, Commodore'unuzun kontrolü hakkında o kadar çok şey öğrenebilirsiniz. Bir bayt gerçekte hiç de karmaşık değildir. Sekiz adet bit bir bayt oluşturduğunda, bu bitlerin herbirinin özel bir önemi vardır. Kafanız karışmasın. Bu yolcular bit olarak bildiğimiz küçük habercilerdir ve grup halinde bayt (byte) adını alırlar. Bu haberciler ya da bitler, oldukça uyuşukturlar. Ya açılırlar (ON) ya da kapatılırlar (OFF). Buna, iki ayrı durumları olabildiğinden, ikili sistem (binary) denir. Bitler açık olduklarında baytı otobüsten indirerek önünüzde sıraya dizebilir ve açık olanları sayabiliriz. Böylece en fazla sekize kadar sayma imkanımız olur. Yani en fazla sekiz açık bit olabilir. Çok sınırlı bir sayı, değil mi? Hımmm! Bu gruba bir lider gerekiyor. Bu lider sol baştaki ilk bit olsun. Bundan sonra bu “en önemli bit” veya EÖB diye çağıracağız. En sağdaki bit ise “çömez” veya ÇB olacak. Harika. Şimdi artık bir grup liderimiz ve onun herbiri sıralı rütbeler taşıyan takipçileri oldu.