Bu sayfadaki yazılar
Sayfanın metni
Sayfa 54
POKE 30475,173 POKE 31266,173 POKE 24729,3 POKE 22753.,96 SYS 30210
Pitfall POKE 5393,255
BMX Simulator POKE 4503,X SYS 4096 X yerine O ile 6 arasında bir sayı yazın
Orpehus and underworld POKE 10118,X SYS 9728 X yerine 1 ile 255 arasında bir sayı yazın
Ghostbusters İsim yazdıktan sonra Banka Nosuna 0, 12, PITY yazın ESRO.4 turbosu ile kilitlenmiş programları açan POKE komutları Programı yüklemeden evvel POKE 2048, 173 yazın. Program yüklendikten sonra POKE 2048, 0 yazın. Program artık açık. Bu bilgileri gönderen arkadaşlarımıza teşekkür ediyoruz. Şimdi bazı arkadaşlarımızın oyunlar hakkında sordukları sorulara cevap verelim. İstanbul'dan Nurettin Ali Berkol bazı oyunlarda yapılmasını söylediğimiz RESET işlemini soruyor. SYS 64738 komutuyla reset edebilirsiniz. Bir başka yol da reset switch kullanmak olabilir. Bu parçayı taktığınızda istediğiniz bir oyunun herhangi bir yerinde bilgisayarı reset edip oyunun içine girmeniz mümkün olur. Ancak List komutuyla oyunu göremezsiniz. Programı incelemek için bir monitör programı kullanmanız gerekir. Bursa'dan Savaş Akyavaş The Last Ninja oyununda bir sonraki düzeye canavarı öldürdükten sonra nasıl geçeceğini soruyor. Kendisi kaset veya disket kullanıcısı olduğunu belirtmemiş. İlk bölümün sonunda canavar uyutulduktan sonra normal olarak bir sonraki bölümün yüklenmesi gerekiyor. Eğer kaset kullanıcısı iseniz büyük ihtimalle sadece oyunun ilk bölümüne sahipsiniz. Program bir sonraki bölümü yüklemeye çalışıp başaramayınca ekran kararıyor.
MAKİNE DİLİ
C64'te işimize yarayabilecek önemli adresleri incelemeye devam ediyoruz. $0014-$0015: ON GOTO, ON GOSUB, LIST ve RUN komutları için hedef satırların numaraları tutulur. Bu bilgi için iki byte gerektiğinden iki adres kullanıyoruz. İstenilen satır numarası LOW/HI formatında bu iki adreste saklanıyor. Ayrıca PEEK, POKE, WAIT ve SYS komutlarındaki adreslerin belirtilmesinde de burası kullanılıyor. LIST komutu listelenmesi istenen en büyük satır numarasını burada saklar. Eğer bütün programın saklanması istenirse bu iki adreste $FFFF değeri saklanır. $002B-$002C: Bu iki adresteki değer BASIC programın başlangıç adresini taşır. Bu değerleri değiştirerek BASIC programların hafızada yer aldığı bölgeyi değiştirebiliriz. Bu tür uygulama bize ne kazandırabilir? (1) Normalde BASIC programa ayrılmamış bir hafıza bölgesini BASIC programlara aitmiş gibi göstererek bu kısmı diskete veya kasete çekebiliriz. $0045 adresindeki değerin saklanacak bölgenin en son adresinden bir fazlaya ayarlanması gerekir. (2) BASIC programın başlangıç adresi normalde $0801'dir. Bu adresi daha yukarı alarak aşağı RAM bölgesinde korunmuş bir alan elde edebiliriz. Bu alanı sprite için veya HİRES için kullanabiliriz. (3) Hafızaya aynı anda birden fazla BASIC program yükleyebiliriz. Başlangıç ve bitiş belirteçleri ayarlanarak istenilen program çalıştırılabilir. Programların nerede başlayıp nerede bittiğini $002B-2C ve adreslerindeki değerleri değiştirerek ayarlayacağız. Bu teknikle iki BASIC programını birleştirmek de mümkün olur. Bu işlemler sırasında yeni program başlangıç adresinden bir evvelki adresin değerini sıfır yapmak gerekir. Mesela normalde $0800 adresinin değerine bakarsanız 0 olduğunu görürsünüz. $002D-$002E: Bu adreslerde yer alan değer BASIC programın bittiği adresten (BASIC programın bittiği yer) itibaren saklanır. Diziler kendileri için ayrılmış başka bir bölgede tutulurlar. Her değişken yedi byte uzunluğundadır. Bunun iki byte'ı değişkenin ismi için geri kalan kısmı da değişkenin değeri için kullanılır. Değişkenler ilk kullanıldıkları sıra ile saklanırlar. Daha evvel de söylediğimiz gibi sık kullanılması gereken değişkenleri programın başında kullanarak programın hızını arttırabilirsiniz. Bir değişken bir kere açıldıktan sonra silinemez. Diziler değişkenlerden sonra saklandıkları için her yeni değişken kullanıldığında dizilerin yedi byte kaydırılması gerekir.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 55
CLR, NEW, RUN ve LOAD komutları çalıştığında $2D-$2E adreslerinde yer alan belirteç BASIC programın bittiği adresin bir sonrasını gösterecek şekilde ayarlanır. Bir programda yapılan değişiklik bu belirtecin değişmesine sebep olur. Bir program içinde LOAD komutu çalıştığında bu belirteç değiştirilmez. Böylece yeni yüklenen program ilk programdan daha kısa olmak şartı ile ilk programın değişkenlerini ve değerlerini kullanabilir. $0037-$0038: Bu adreslerde BASIC yorumlayıcısına açık RAM bölgesinin en son adresi yer alır. Normalde bu değer $9FFF'dir. Ancak bilgisayara bir kartuş takılı ise bu değer çevrilir. BASIC programa açık RAM bölgesini bu adresi değiştirerek azaltıp hafızada güvenli bir bölge açabilirsiniz. BASIC'in kullandığı hafızanın küçültülmesinden sonra CLR komutunu kullanmak gerekir. Böylece açmış olduğumuz hafıza alanı karakter dizilerinden korunmuş olur. RS-232 kullanıldığında BASIC için ayrılmış olan hafıza bilgisayar tarafından otomatik olarak 512 byte azaltılır. Bu kısımda yer alan değişken varsa kaybolur. $0039-$003A: Bu iki adreste en son işlenen BASIC komutun satır numarası saklanır. Eğer program çalışmıyorsa adresinin değeri $FFFF olur. BASIC program çalışırken bu adreslerin değeri o an işlenen satırın numarasını içerir. Satır numaraları 0 ile 63999 arasında olabilir. $003B-$003C: STOP, END komutları çalıştırıldığında veya BREAK tuşu ile program durdurulduğunda $39-$3A adreslerinin içeriği bu adreslere kopyalanır. Ve $3A adresinin değeri $FF olur. Eğer CONT komutu çalıştırılırsa $3B-$3C adreslerinin değeri tekrar $39-$3A adreslerine kopyalanır. Böylece program kaldığı yerde çalışmasına devam edebilir. $00BA: Bu adreste kullanılmakta olan alet numarası saklanır. Alet numaraları $00'dan $1F'e kadar olabilir. Ancak bu numaraların hepsi aletler için kullanılmaz. 3 numaradan büyük alet numaraları seri kabul edilir. Standart durumda mevcut olan alet numaraları şöyledir:
0 — Klavye 1 — Teyp 2 — RS-232 3 — Ekran 4 — Yazıcı 5 — Yazıcı
6 — Yazıcı/Plotter 8 — Disket sürücü 9 — Disket sürücü
Bu adresin içeriği $00 olursa ekranda karakterler normal olarak basılır. Eğer adresin değeri $12 olursa karakterler ekrana yazılırken fon rengi karaktere, karakterin rengi ise fona kullanılır. Bunun için karakter kodlarına $80 eklenir. Ekranda karakterlerin bu şekilde yazılmasını sağlamak için CTRL-RVS tuşlarına birlikte basmak gerekir. Tekrar normale dönmek için CTRL-OFF tuşlarına birlikte basılır.
$00CC: Adreslerin değeri $00 iken kürsor yanıp söner. Eğer adresin değeri sıfırdan farklı bir değerse kürsor blok halde gösterilir. $00FB-$00FE: Bu adresler BASIC tarafından kesinlikle değiştirilmediklerinden makine dili programlarında kullanabilirsiniz. $0286: Bu adresin değeri, karakterlerin ekrana hangi renkte yazılacaklarını belirler. Yazılım işlemi sırasında karakterler ekran RAM'inde saklanır. Aynı zamanda renk RAM'ında bunların karşılığı saklanır. Ekrana yazılan karakterlerin renklerini üç şekilde değiştirebilirsiniz. (1) CTRL veya CBM tuşlarından birini basılı tutup 1 ile 8 arasındaki tuşlara basarak 16 renkten birini seçebilirsiniz. (2) Ekrana istenen renk kodu basılır. (3) Bu adrese istenen renk kodu POKE edilir. Her renk için POKE, CHR$ ve klavyedeki karşılığını bir tablo halinde görelim:
Renk POKE CHR$ KLAVYE Siyah 0 144 CTRL 1 Beyaz 1 5 CTRL 2 Kırmızı 2 28 CTRL 3 Cyan 3 159 CTRL 4 Mor 4 156 CTRL 5 Yeşil 5 30 CTRL 6 Mavi 6 31 CTRL 7 Sarı 7 158 CTRL 8 Oranj 8 129 CBM 1 Kahverengi 9 149 CBM 2 Pembe 10 150 CBM 3 Koyu gri 14 151 CBM 4 Normal gri 12 152 CBM 5 Açık yeşil 13 153 CBM 6 Açık mavi 14 154 CBM 7 Açık gri 15 155 CBM 8