Bu sayfadaki yazılar
Sayfanın metni
Sayfa 49
VAL(AS$) komutu yardımı ile sayısal değeri elde edeceğiz. Kullanıcının verisi: 123R56 Bunu değerlendiren program komutu: A=VAL(AS$) Komutun işlenmesinden sonra A değişkeninin değeri 123 olur. Bu değer bizim elde etmek istediğimiz sonuç olmadığı için programımız hatalı olarak çalıştı demektir. Eğer programı kendi kullanımınız için yazdınızsa bu tür bir hatadan programın çalışma şeklini bildiğiniz için kaçınabilirsiniz. Ancak programınızı başkalarının da kullanabileceğini göz önüne alırsak tamamen hatasız programlar yazmanız gerekir. Program döküm ekindeki PROGRAM-1 kendi programlarınıza ekleyebileceğiniz bir alt program niteliğinde. Alt program olarak kullanılacağı için program satırları 35000'den başlıyor. Eğer satır numaralarını değiştirmek isterseniz gerekli GOTO ve GOSUB satır numaralarını da değiştirmeyi unutmayın. Aşağıdaki değişkenlere, alt programı çağırmadan evvel programınızda değer vermelisiniz. Gelelim bu değişkenlerin ne işe yarayacağına: MN=0 Sadece sayısal veri istenirse, MN=1 Veri içinde karakter de bulunabilir. DL değişkeninde belirtilen veri uzunluğundan daha kısa uzunlukta veri girişi yapılamaz. IL= Verilmesi istenen verinin maksimum veya kesin uzunluğu, Bundan başka alt programda şu değişkenler de kullanılıyor: CC IN$ değişkenindeki geçerli karakter sayısı. CS = Kursorun o anki bulunduğu kolon.
CZ = Kursorun o anki bulunduğu satır. CP = Veri alanı açarak elde edilen uzunluk. MS Veri girişi sırasında en büyük kursor kolonu. G$ = En son GET komutu ile alınan karakteri taşır. IN$ = Kullanıcıdan alınan verinin tamamı bu değişkenin içinde ana programa iletilir. Kullanılan hafıza adresleri: 204 Kursoru aktif hale getirir.
204 Kursoru görünmez yapar. 205= Kursorun yanıp sönme hızını belirleyen adres.
207 = 0 Kursor kapalı durumda. 1 Kursor açık durumda.
214 Kursorun bulunduğu kolon. 215 Kursorun bulunduğu satır.
Alt programı çağırmadan önce programınızda OPEN 1,3 komutunu kullanmanız gerekir. Çünkü elde edilen veri ekrandan 35680 numaralı satırda GET#1 komutu ile alınıyor. Şimdi alt programın bazı satırlarının açıklamasını yapalım: 35020 Değişkenler hazırlanıyor ve GET için kursorun yeri saklanıyor. 35060 Klavyeden bir karakter okunuyor. 35080 Eğer klavyeden okunan karakter RETURN tuşu ise ML değişkenindeki değere ve verinin uzunluğuna göre veri alışı bitiriliyor. 35100-35130 Eğer DELETE ve İNSERT tuşları kullanıldıysa, veri alanının sadece geçerli değerleri (CP=0) aldığı durumda uzunluk ve pozisyon sayaçları ayarlanıyor. 35140 İNSERT eğer IL değişkeni ile verilen uzunluk aşılıyorsa işleme konuyor. 35160-35180 CRSR SAG ve CRSR SOL tuşlarına basıldığında kursorun veri giriş alanından ayrılıp ayrılmadığını kontrol eder. 35200 MN değişkenine göre veri giriş noktası belirlenir. 35220-35240 Eğer kursor veri alanı içinde ise ve sadece sayısal veri girilecekse, girilen karakterler kabul edilir. Program 47-58 arasındakileri kabul ediyor. Ancak isteğinize göre kabul edilebilecek değer aralığını değiştirebilirsiniz. Bu değer aralığı 0-9 arasındaki sayıları içeriyor. 47 değeri 0 rakamını, 58 değeri 9 rakamını temsil ediyor. 35300-35380 Programın bu kısmında da aynı şeyler yapılıyor, ancak kabul edilen karakter aralığı harfleri de içerecek şekilde genişletiliyor. 35400 Eğer veri gereğinden kısaysa ve ML=0 olarak verilmişse veri girişi bitirilmiyor. 35600-35690 Veri giriş alanı ekrandan alınıp IL değişkenindeki değere ulaşılana kadar veya ekranda başka veri kalmayıncaya kadar değişkenine konuyor. Bu işleme başlamadan önce kursor veri giriş alanının başına götürülüyor. Bu şekilde GET#1 komutu veri alanının başından başlıyor. 36000-36060 Kursor kapatılıp G$ değişkeninin içeriği ekranda gösteriliyor. Bu alt programı programlarınızda nasıl kullanabilirsiniz? Mesela veri olarak bir mamül kodu gireceksiniz. Bu kod altı rakam uzunluğunda ve tamamen sayısal olmalı. Bu şartları içeren ana program şu şekilde olabilir: 10 OPEN 4,3 100 MN=0 110 IL=6 : GOSUB 35000 120 IN$=IN$
İstediğiniz kod IN$ değişkeninde. Elde edilen sonucun sadece sayısal ve altı rakamdan oluştuğuna emin olabilirsiniz.
1 Komutu
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 48
Bu POKE'u gönderen, Bandırma'dan Sinan BUĞDAYCI ve Manyas'tan Serdar AK'a teşekkür ediyoruz. Eğer bir oyunda kolaylık sağlayan bir ipucunu başkaları ile paylaşmak isterseniz bize gönderin:
Commodore Dergisi, Oyunlar İçin Kolaylıklar Köşesi Silahhane Cad. Ralli Apt. 59/3 80200 Teşvikiye-İstanbul Ouedex: Başlangıç menüsünden PLANE DESIGNER ekranını seçin ve 07356 77261 sayısını yazıp ateş tuşuna basın, Thundercats: Tüm düzeylerde sonsuz hakka sahip olmak isterseniz bilgisayarınızı RESET edin ve
POKE 35088, 173
komutunu girin. Oyunu başlatmak için SYS2064 komutunu verin.
MAKİNE DİLİ
Makine dili ile çalışırken kullanabileceğimiz adreslerden bazılarını görelim:
Adres Kullanım Şekli 0000-0001 Bu adreslerden birinde veya her ikisinde birden değişiklik yaparak zamanın belirli bir bölümü seçilir. 0043-0044 Bu adreslerde BASIC programın yerleştiği hafıza bölümünün başlangıç adresi saklanır. PEEK(43) + 256 * PEEK(44) komutu bu adresi verir. Bu adresleri POKE ederek BASIC programın hafızaya yerleşeceği adresi daha yukarı alabilirsiniz. Normalde BASIC programlar $0801 adresinden başlarlar. POKE komutları ile BASIC programı hafızanın üst bölümlerine alıp bu kısmı SPRITE'lar için kullanabilirsiniz. Bu adreslerde nümerik değişkenler tablosunun başlangıç adresi saklanır. Bu tablo genellikle BASIC programın arkasından başlar. Dizilerin saklandığı bölgenin başlangıç adresini içerirler. Tüm diziler bu bölümde saklanır. Dizilerin saklandığı bölgenin bitiş adresini içerirler. Alfanümerik değişkenlerin saklandığı bölümün başlangıç adresini içerirler. BASIC RAM'in sonu olan adresi taşırlar. Bu adresi değiştirerek makine dili için bellek ayırabilirsiniz. Ayırmış olduğunuz bellek BASIC programlarından korunur. Mesela BASIC RAM'in $4000'de bitmesini sağlamak için: POKE 55,0:POKE 56,64 komutunu vermeniz yeterli olur. Son basılan tuşun kodu bu adreste saklanır. Eğer bu adresin içeriği 64'se, hiçbir tuşa basılmamış demektir.
Program Döküm Eki'ndeki PROGRAM-3, PRINT komutuna yeni bir özellik ekleyecek. Bu program çalıştığında PRINT komutu ile yazılması istenenler ses çıkararak ve çizgi şeklindeki bir kursor yardımı ile yazılacak. Bu programı diskete veya kasete SAVE etmeden evvel kesinlikle çalıştırmayın, çünkü program çalışması sırasında NEW komutu ile kendisini siliyor. Programda yapılabilecek bazı değişiklikler: Eğer programı RUN STOP/RESTORE tuşu ile durdurursanız, Yeniden aktif hale getirmek için: SYS 679 Programı durdurmak için: POKE 806,202:POKE 807,241 Kursoru değiştirmek için: POKE 728,X Kursorun yanıp sönme hızı: POKE 733,Y INPUT A şeklindeki veri giriş komutu: Program akışı bu komuta geldiğinde kullanıcıdan sayısal veri girmesini ister. Eğer bu sırada sayısal değerden başka değer girilirse programın çalışması durur. INPUT A$ şeklindeki veri giriş komutu: Eğer gerekli veri girişi yapılmadan RETURN tuşuna basılırsa program çalışması durabilir. GET A$ komutunu kullanarak ilk sorunu halledebiliriz. İkinci sorun da GET A$ komutunun kullanılması ile giderilebilir. Ancak, GET komutu kullanımı sırasında kursoru göstermediği için ve bir kerede kullanıcıdan sadece bir tek karakter aldığı için çok kişi bu komutu kullanmaktan kaçınır. Veri girişi sırasında hataları önlesek bile, alınan veriler hatalı neticeler verebilir. Mesela, karşılaşabileceğimiz hatalara INPUT A$ komutunun kullanılışı ile bir örnek verelim. Örneğimizde kullanıcıdan sayısal bir değer almak istiyoruz. Veri girişi sırasında herhangi bir hata ile karşılaşmamak için veriyi A$ değişkenine alacağız ve
0045-0046
0047-0048
0049-0050 0051-0052
0055-0056
0203