C64 için Püf Noktaları
Geçen sayıya ait program2, 3 ve 4'ü bu sayıda yazımıza ait diğer programlarla beraber Program Döküm Eki'- nde bulabilirsiniz. Hesaplanmış GOTO, GOSUB ve RESTORE komutları Programın herhangi bir satıra gitmesini veya herhangi bir alt programın çağrılmasını istersek kesin satır nu- Marasını bilmemiz gerekir. Ancak bazı durumlarda program akışının devam edeceği satır numarasının hesaplanması programlamayı daha kolay hale getirir. Eğer örneğimizi yazıp çalıştırırsanız 110 numaralı satırda hata mesajı alırsınız:
100 PRINT “SATIR NUMARASI”;SN
100 GOTO SN
Normal olarak ON... GOTO veya ON... GOSUB komutları ile amacımıza ulaşabiliriz. Ancak 110 numaralı satırdaki hesaplanmış GOTO komutu veya GOSUB komutu işleri çok kolaylaştırır. Buna benzer olarak RESTORE komutundan sonra satır numarası vererek programın istediğimiz bölümünden başlayarak DATA satırlarını kullanmak da programlamayı kolaylaştırır. Ancak hesaplanmış GOTO/GOSUB ve RESTORE komutları BASIC 2.0'da bulunmuyor. Program Döküm Eki'ndeki Program3 bize hesaplanmış GOTO/GOSUB ve RESTORE komutlarını kazandırıyor. RESTORE komutunu hesaplanmış hale getirecek programın makine dilindeki karşılığını açıklamalı olarak görelim:
02C6 DO 03 BNE $2C8; başka karakter var mı?
02C8 4C 1D A8 JMP eski RESTORE komutuna
02CB 20 CO 02 JSR $02CO; satır numarasını al
02CE 20 13 A6 JSR ; satır numarasının adresini
hesapla
02D1I 38 SEC
02DZA5SSF LDA$SF ; alcak adres
02D4 E901 SBC #$01; bir çıkar
02D6A460 LDY$60
02D8 4C 24 A8.JMP $A824
; yüksek adres
Program3 çalıştıktan sonra RESTORE komutunu üç şekilde kullanabilirsiniz. (1) Eskisi gib READ komutu programdaki ilk DATA satırından veri okur. 121 READ komutu verilen satır numarasındaki DATA komutundan veri okur. Eğer bu satır yoksa bundan sonra ilk gelen DATA satırından veri okunur. (31 RESTORE komutundan sonra gelen bir matematiksel işlemin sonucu olan satırdaki DATA komutundan veri okunur.
Bu üç şekle örnek verelim: 100 GOTO 200 200 RESTORE 10 500 RESTORE 800 GOSUB A*2-- 100 900 RESTORE X*100-4 500 Oyunlar için Kolaylıklar HYSTERİA
Puan tablosuna bazı kelimeler giçerek ekstra silahlara sahip olabilirsiniz. Bu kelimeleri girdikten sonra ekrana farklı bir mesaj çıkacak.
EKSTRA SİLAH lazer ok, nöbetçi nöbetçi kuvveti, lazer ok jettaşıtı, lazer ok jettaşıtı, lazer göz lazer göz (düzey sonunda enerji kaybı azalır)
KELİME cannıngs sound n vision tony barstool please crash joffa smiff slartbartfarst lazer göz stevey big nose — lazer ok, jettaşıtı joe kıss a gram — lazer göz
FREDDY HARDEST Oyunun ikinci bölümünü oynamak için gerekli kod:
25425
SABOTEUR II
Bazı görevlerde kullanılacak kodlar: Görev od gerekmiyor Görev Görev 3: KIME Görev 4: KUJI KIRI
MAKİNE DİLİ
Bir program hazırlarken kullanıcıdan kontrol altında veri alışı yapmak çok faydalıdır. Böylece kullanıcının veri girişi sırasında istenmeyen sonuçlara yol açacak veri girişi önlenmiş olur. Program Döküm Eki'ndeki PROGRAMI INPUT komutunu geliştiren bir program. Program çalıştıktan sonra ekranın istediğiniz bir yerinde, istediğiniz büyüklükte bir pencere açıp veri girişi yapmanız mümkün. Veri giriş alanının büyüklüğü tanımlandıktan sonra, CRSR sağ ve sol tuşlar, INST ve DEL tuşları sadece bu alanda çalışırlar. RETURN tuşuna basıldığında girilen veri, türüne göre T$ veya TI değişkenlerine yerleştiler. yazın ve SAVE edin. Programın yazılması sırasında DATA satırlarının doğru olarak girilmesi çok önemli. Programımız DATA komutlarında girilen değerleri kontrol ediyor. Eğer bir yanlışlık olursa çalıştırıldığında diskete programı makine dili olarak yazmayacak. Program doğru olarak çalıştırıldıktan sonra kendisini makine dilinde diskete SAVE edecek. Bundan sonra bu programı kendi programlarınızda kullanabilirsiniz. kullanmak istediğiniz programa şu satırı ekleyin:
5 IF A-0 THEN A-1:LOAD “İNPUT
» 81
Eğer teyp kullanıcısı iseniz programınıza ekleyeceğiniz satır şu şekilde olmalı:
5 IF A-0 THEN A- İ:LOAD “İNPUT Bu komuttan sonra programınıza aşağıdaki rutini ekleyin:
10000 POKE 142, LNG:POKE 143, TYP
10010 SYS49152: IF (1 AND ST) THEN T$-“ ”:
10020 RETURN
Bu rutini çağırmadan evvel LNG değişkenine veri girişi alan uzunluğunu yükleyip, TYP değişkeni girilecek verinin türünü belirliyor. TYP —-0 karakter türünde, TYP — 1 ise numerik veri girişi yapılacak. Veri giriş penceresinin sol ucu o anki kursorun bulunduğu yerde olacak. Açılacak pençerenin yerini PRINT komutu ile belirleriz. Mesela pencere beşinci satır onuncu kolondan başlasın. Bunun için 100 numaralı satırı programınıza ekleyin:
100 PRİNT (5 ASAGI) (10
Bu satırı yazarken tırnak açtıktan sonra HOME için klavyeden HOME tuşuna basın. 5 ASAGI için 5 kere kursoru aşağı indiren tuşa, 10 SAGA için 10 kere kursoru sağa götüren tuşa basın ve tırnağı kapayın. komutuna “;” noktalı virgül eklemeyi unutmayın. Aksi takdirde pencere istediğimizin bir alt satırına açılır. İstersek pencerenin bir mesajdarı sonra açılmasını sağlayabiliriz. Pencerenin açıldığı yer, kursorun o anda bulunduğu yere göre belirlendiğinden PRİNT komutunu kullanıp pencereyi bir mesajdan sonra yerleştirelim:
PRINT “İSMİNİZİ YAZIN:”;
Burada da noktalı virgül unutulmamalı. Tırnağı kapamadan evvel bıraktığımız boşluk yazdığımız mesajla pencereyi ayırıyor. LNG ve TYP parametrelerini veri girişini kontrolde kullanacağız. LNG değişkeni veri alanının maksimum uzunluğunu belirler. Mesela 10 karakter genişliğinde bir veri girişi istiyorsanız, LNG değişkenine rutini çağırmadan evvel 10 değerini verin. Bundan sonra girilecek veri en fazla 10 karakter genişliğinde olabilir. Ancak girilen veri 10 karakterden az olabilir. Rutini çağırmadan evvel girilecek verinin türünü TYP değişkenini kullanarak belirlemek gerekir. Örneğimizde karakter türünü seçtiğimizden TYP —0 komutunu vermemiz gerekir. 20 karakter uzunluğunda veri giriş alanını tanımlayacak program kısmı şöyie olabilir:
100 PRİNT “İSMİNİZİ YAZIN”;
110 LNG —20:TYP -0:GOSUB 10000
Program 10000 numaralı satırdaki rutinden döndüğünde T$ değişkeninde kullanıcı tarafından girilmiş ver: r. Bu rutini tekrar kullanmadan evvel T$ değişki nindeki veriyi başka bir değişkene aktarmanız gerekir. en veri kaybolur. Numerik veri girişiörnek olarak 0.00 TL. ile 99.99 TL. arasında değer labilecek program şöyle olabilir:
alabi
100 PRINT “FİYATI GİRİN-TL.”;
110 5:TYP - 1:GOSUB 10000
Bu sefer TYP değişkeninin değeri 1 oldu. LNG değişkenine 5 değeri verdik. Veri alanımızda dört rakam olmasına rağmen veri alanının uzunluğuna beş vermemizin nedeni noktanın veri alanında bir karakter sayılmasıdır. Eğer desimal nokta kullanılmazsa maksimum 99999 TL. miktarında veri girebilir. Bundan dolayı rutinden dönüldükten sonra alınan verinin geçerli olup olmadığının kontrol edilmesi gerekir. Etkisini görmek için PROGRAM1'i yazıp çalıştırın. Ancak çalıştırmadan evvel diskete veya kasete bir kopya saklamayı unutmayın. Kaset kullanıcısı iseniz 100 numaralı satırdaki 8'i 1 yapın. Bir numaralı programın diskette olmasına veya kasette ikinci programdan sonra kaydedilmiş olmasına dikkat edin. İkinci programı çalıştırdığınızda ilk program otomatik olarak yüklenecek.
BASIC PROGRAMLAR
Birçok programda bir grup karakter dizisini sıralamak gerekir. Program Döküm Eki'ndeki program4 basit bir sıralama programı. Kullanılan yöntem BUBBLE SORT. Program US$(n) dizisindeki verileri sıralıyor. Programda kullanılan ikinci önemli değişken NU. Bu değişkende sıralanacak veri miktarı bulunuyor. Aslında bu program başka bir programa alt program olacak şekilde hazırlandı. Bu rutini çağırmadan evvel sıralanacak verileri US$(n) dizisine yerleştirin. NU değişkenine veri miktarını verin. Bundan sonra alt programı çağırabilirsiniz: BUBBLE SORT sıralama yönteminde dizideki her eleman kendinden daha küçük bir elemanla karşılaşana kadar yükselir. Bu sıralama yöntemi 30 veya 40 elemana kadar tatmin edici olabilir. Bundan daha fazla elemanlı dizilerde bekleme süresi artar. Programın satır satır açıklaması:
140: Dizinin uzunluğu programınızda NU değişkenine verdiğiniz değere göre DIM komutu ile belirlenir. 210: Döngü birinci elemandan başlatılır. 220: Birinci elemandan başlamak üzere sıralanacak eleman sayısının bir eksiğine kadar döngüye girilir. 230: A$ değişkeni dizinin N1'inci elemanının değerini alır. 240: B$ değişkeni A$ değişkenindeki elemandan bir sonraki elemanın değerini alır. 250: A$'daki büyük eleman B$'daki elemandan ufaksa B$ olduğu gibi kalır. İç döngü N1 değişkeninin bir sonraki değeri ile devam eder. 260: Eğer B$ değişkeni A$ değişkeninden 270: ufaksa iki değişkenin içerikleri değiştirilir. 280: 290: İç ve dış döngüler arttırılır. 300: 310: 320: Sıralanan dizi ekrana basılır.
RAM DISK
AMIGA gibi bilgisayarlarda RAM DISK isimli çok kullanışlı bir özellik vardır. Bu uygulama ile bilgisayar belleğinin bir kısmı disket sürücü olarak kullanılır. Program döküm ekindeki Program5 çalıştırıldığında bilgisayarımız 8Kb'lik bir RAM DISK'e kavuşacak. RAM DISK bir disket sürücü gibi çalışmakla birlikte kalıcı değil, İçinde saklanan bilgiler bilgisayarın kapatılması ile yok olur. Buna karşın RAM DISK normal bir disket sürücüye göre son derece hızlı. Bu avantaj sayesinde program yazarken RAM DISK işleri son derece kolaylaştırır. RAM DISK'imizin kapasitesi maksimum 8Kb ve bir kerede sadece bir tek program saklayabilir. RAM DISK'in kullanımına bir örnek verelim. Mesela bir program üzerinde çalışırken disketten directory almanız gerekti. İlk olarak programınızı RAM DISK'e SAVE eder ondan sonra LOAD"$", 8 komutunu verirsiniz. İşiniz bittikten sonra RAM DISK'ten programınızı yüklersiniz. RAM DISK'in kolay kullanımı için BASIC'e üç yeni komut eklendi. Ancak komutların üçü de direkt modda kullanılabilir. Komutlarımız ve işlevleri:
<-- (sola bakan ok tuşu) : Hafızadaki programı RAM DISK'e kaydeder. 1 : RAM DISK'e kaydedilmiş programı hafızaya yükler. <: RAM DISK'teki programı siler.
RAM DISK'i sadece BASIC programlarla çalışırken kullanabilirsiniz. RAM DISK'e program SAVE etmeden evvel programınızın 8KB'dan ufak olup olmadığını kontrol edin. Eğer 8Kb'dan büyükse RAM DISK'e kaydedilmeyecek ve ekranda bir mesaj çıkacak. Programı yazarken DATA komutlarında dikkatli olun. Programı çalıştırmadan evvel diskete SAVE edin. Programı çalıştırmak için SYS 49152, durdurmak için SYS 64738 yazmanız gerektiğini belirten bir mesaj çıkacak. İkinci SYS komutu bilgisayarı yeni açılmış gibi yapar.
Programın kullandığı adresler:
2-3 ve 251-254 : Geçici kullanım için 40960-49151 RAM DISK 49152-49416 : Programınızın kendisinin bulunduğu bölge.
Şimdilik hoşçakalın...
& Ye