C64 için Püf Noktaları

e e Bu aydan itibaren yazımızın kapsamını ve uzunlu- | ın ğunu biraz arttırıyoruz. İlk değişiklik Oyunlar İçin Ko- Burak KİPER laylıklar köşemizde. Bu köşede sizlerden gelen kolaylıklar ve sorularınıza cevaplar dışında, bir oyun için

.. gerekli kontrol tuşlarını veya oyunda başarılı olabil- Pü (0) ta arl mek için yapılması gerekli şeyleri ve nasıl bir yol izlenmesi gerektiğini de sizlerin yardırplarıyla diğer

Commodore'cu arkadaşlarla paylaşacağız. Bu konuda bize ilk bilgileri Samurai Warrior adlı oyun için İstanbul'dan Ahmet Uzun ve Erdem Tüzün gönderdi. Kendilerine teşekkür ediyoruz. Eğer bir oyunun çözümünü bulursanız bunu da bize göndermeyi ihmal etmeyin. Bana çeşitli oyunların nasıl çözüleceği hakkında çeşitli sorular soruluyor. Bu oyunların tamamını ben de çözememiş olduğum için (C-64'e ait oyunların sayısını düşünürseniz bana hak verirsiniz), sadece bildiklerime cevap verebiliyorum. Ancak bundan sonra cevabını bilmediğim soruları da sizlere ileteceğim. Bu tür bir oyun hakkındaki bilginizi bana göndererek, so- Tuyu soran arkadaşımıza ve aynı soruna sahip diğer arkadaşlara yardımcı olabilirsiniz. Bu arada AMIGA'cı arkadaşlar da oyunlar hakkındaki sorunlarını veya bilgilerini bana gönderebilirler. Yazımızın uzunluğunun arttığından söz etmiştik. Bu yerde Amigacı arkadaşlara yardımcı olmaya çalışacağım. AMIGA köşesinde her konuda sorunlarınıza cevap vermenin yanında AMIGA BASIC, diğer diller ve CLI hakkında genel bilgiler vermeye çalışacağım. BASIC yardımıyla disket katoloğunu okuyup ekrana yazmak istiyoruz. Bu işlemi aşağıdaki program gerçekleştiriyor: 410 OPEN 2,8,0,“$” 2.A$ : GET 2.,.A$ 30GET 2.L$ STz64 THEN CLOSE 2 END 40 GET 2.LBS : GET 1 4 CHRS(0)) 4 256 * ASC(HBS) 4 CHRS(0)) 50 PRİNT LN; 60 GET 2.A$ : İF A$-“” THEN PRİNT CHRS(13):: GOTO30 70 PRİNT A$; : GOTO 60

Disketin $ isimli dosyada saklanıyor. Bu dosya da disketteki diğer dosyalar gibi okunabilir. Bu dosya bir program dosyası olduğu için O ikincil adresi ile açıyoruz (satır 10). Bir program dosyasının ilk iki byte'i programının başlangıç adresinin high ve low byte'larını verir. Ancak bu bilgiler bizim için gereksiz. Bu yüzden onları okuyup gözardı ediyoruz. Bir BASIC programının her satırı dört parçadan oluşur: Satır bağlantısı, satır numarası, satırın ana kısmı, satırın sona erdiğini belirten sıfır değeri. 30 umaralı satırda satır bağlantıları okunuyor ve ST değişkeni kontrol ediliyor. Bu değişken STATUS anlamındadır ve sistemin tanımlı değişkenlerindendir. Eğer dosyanın sonuna erişilmişse dosyayı kapatıp programı bitiriyo- Tuz. Eğer bu programı programlarınızda bir alt program olarak kullanmak istiyorsanız, 30 numaralı satırdaki END komutunu GOTO komutuyla (eğer alt program olarak kullanıyorsanız RETURN) ile değiştirin. 40 numaralı satırda, satır numaralarının low ve high byte'larını okuyoruz. Satır numarası hesaplandıktan sonra 50 numaralı satırda ekrana yazılıyor. Ancak aslında bu değerler satır numarası değil programların diskette kapladıkları yeri belirten değerlerdir. Ancak bu listedeki bloklar bir BASIC satır numarası gibi degerlendiirilirler. Satırın geri kalan kısmı harf harf sıfır değerine ......... kadar okunuyor. Satır sonuna erişildiğinde 60 numaralı satırda RETURN tuşunun karşılığı olan kontrol karakterini ekrana gönderiyoruz. Böylece satırlar birbirinden ayrılmış oluyor. Bundan sonra 30 numaralı satıra gidip işlemlere devam ediyoruz.

ROMOL

OYUNLAR İÇİN KOLAYLIKLAR Burada sözü oyunlar için çeşitli kolaylıklar gönderen arkadaşlarımızı bırakıyoruz. Onur Yaltı arkadaşımız bize aşağıdaki ipuçlarını göndermiş. Kendisine teşekkür ediyoruz. Platoon O tuşuna basarak elinizdeki silahı makinalı tüfeğe dönüştürebilirsiniz. Rambo RETURN tuşuyla mayın bırakabilirsiniz.

Int. Karate * 4,2, 3, 4, 5 tuşlarıyla oyunun hızını değiştirebilirsiniz.

Colossus Chess 2.0

M tuşuyla mod seçeneğine girin. İkinci modu seçin. Artık bilgisayarın düşünme süresini değiştirerek oyunu zorlaştırıp, kolaylaştırmak mümkündür. Ankara'dan Özgür Özbay arkadaşımız bize aşağıdaki ipuçlarını göndermiş. Kendisine teşekkür ediyoruz.

1943 Oyunda düşman uçaklarının çarpmasından ve ateşlerinden kurtulmak için 'M' tuşuna basın. Robin To The Rescue (Robin Hood) Oyun başlayınca SHIFT-COMMODORE tuşlarına ays0 nı anda basarsanız boşluklardan düşmeden geçebi lirsiniz. Denizli'den Altuğ Taş arkadaşımız bize aşağıdaki ipuçlarını göndermiş. Kendisine teşekkür ediyoruz.

Platoon 5. aşamada (Orman), hain Çavuş Barnes'i bulabilirsiniz. İzlemeniz gereken yol: sol, sağ, sol, sağ, sol, sağ, Sol, sağ, sağ, sol, sağ, sol, sağ, sol: Barnes'i öldürebilmek için hep soldan sağa doğru hareket etmelisiniz.

Fiying Shark

Oyunu boşluk tuşuna basarak durdurup, sonra tektar başlatırsanız oyun devam edecek, ama Alman askerleri başka bir yerden ve ateşlemede başa dönerek ateş edecektir. Dan Dareli Oyunu TRAINER olanlar, iki defa RUN/STOP'a basarak zamanın ilerlemesini durdurabilirler. Bütün Treen'- leri öldürüp çıkış kapısına ulaştığınızda, yine iki defa RUN/STOP'a basarak zamanın ilerlemesini ve geminin havaya uçmasını sağlayabilirsiniz.

Ghost Goblins

Oyunda adamınız ölürken COMMODORE tuşuna basarsanız ölümsüz olursunuz.

Gothik ctrl tuşuna basarak çalıları yok edebilirsiniz. Çalıları yok etmek için, çalılara yaklaşmanız gerekiyor.

THRUST

F5 ve F7 tuşlarına aynı anda basın. İstanbul'dan Ahmet Uzun ve Erdem Tüzün arkadaşlarımız bize Samurai Warrior oyununun bitirilmesi için aşağıdaki ipuçlarını göndermişler. Kendilerine teşekkür ediyoruz. Samurai Warrior adlı oyunda, köye girdiğimizde yemek yeme şansımız var. Bunun için kapısı açık olan en büyük binanın önüne gelip ileri itmemiz gerekiyor. İçeri girdiğimizde, önlüklü garsonu izleyip yolun sonunda para verirsek, bize getirilen yiyeceği bir çırpıda bitirip, tekrar sağa giderek binanın dışına çıkıyoruz. Bundan başka oyunun son bölümünde kılıcımızı kınına sokmanın hiç gereği yok. Çünkü burada papaz veya ninja savaşçısı dahil herkes küçük dostumuzu kurtarmamızı engellemeye çalışıyor. Burada önemli olan, ufak yaratığın göründüğü son bölüme geldiğimizde bize hunharca saldıran papazlarla mümkün olduğu kadar ekranın sol tarafında çarpışmak. Çünkü savaş sıtasında küçük bir kılıç darbesi dostumuzun ölmesine sebep oluyor. Biz de bu utançtan dolayı ha- Takiri yapmak zorunda kalıyoruz. İstanbul'dan Çağatay Özgür arkadaşımız ilk olarak reset switch'in ne olduğunu soruyor. Verdiğimiz püf noktalarındaki birçok POKE komutunun işe yaraması için oyun yüklendikten sonra C-64'ün resetlenmesi gerekir. Bu işlem sonunda bilgisayar açılış haline döner. Resetleme işlemini iki şekilde yapabilirsiniz. Eğer yüklediğiniz oyun kendi kendine başlamaz RE-ADY mesajı yazıp RUN komutunu beklerse. SYS 64738 komutunu verin. Daha sonra POKE komutlarını işleme koyun. Ancak özellikle kasetten yüklenen oyunlar kendiliğinden başlarlar. Bunun için yapılacak tek şey reset switch adlı aleti kullanmak olacaktır. Bu alet bilgisayarımızı SYS64738 komutunda olduğu gibi açılış durumuna döndürecektir.

Defender of the Crown'nun C-64 versiyonunda da birtakım tuşlara basılarak kolaylık sağlanabiliyor mu? Şu anada kadar hiçbir arkadaşımız bana böyle bir kolaylık sağlayacak püf noktası göndermedi. Bu arada C-64'te Defender of the Crown AMISA'ya göre çok Pirates oyununda rütbemizi arttırmak ve oyunda yüksek bir derece elde etmek için ne yapmalıyız? Oyun tamamlandığında yüksek bir derece elde etmek başlıca iki kritere dayanıyor. Oyun boyunca toplayabildiğiniz kadar altın toplayın. Altın toplamak için şehirlere baskın düzenleyebilir, gemileri ele geçirebilirsiniz. İkinci olarak mümkün olduğu.kadar çok ülkenin (en fazla üç olabilir) dostu olun. Düşman ülke olarak İspanya en uygunu. Bu ülkelerde elde edeceğiniz Kont ve dük'lük gibi yüksek ünvanlar emekli olduğunuzda elde edeceğiniz dereceyi etkileyecektir. Kaptanlığınız sırasında son derece atak olup Notorious derecesinden aşağı inmemeye çalışın. March into town seçeneğinde nerede olursa olsun ateş ediliyor. Bu seçeneği 'letter of margue' rütbesini veya daha yüksek rütbeleri elde ettiğiniz ülkelerin şehirlerinde kullanın. Aksi takdirde düşman olarak kabul edilirsiniz. Sail into Harbour seçeneği ne işe yarıyor? Bu seçeneği ne zaman kullanmalıyım? Bu seçenek de limana gemiyle girmenizi sağlıyor. Ancak seçeneği sadece rütbe sahibi olduğunuz ülkelerin şehirlerinde kullanın. Herhangi bir derde sokmadan girmek isterseniz Sneak into town seçeneğini kullanın. Bu oyun hakkında daha detaylı bilgiyi 27. sayıda bulabilirsiniz. Şimdi sıra cevabını bilmediğim sorulara geldi: Ankara'dan Özgür Özbay arkadaşımız aşağıdaki soruları sormuş: Vamplre's Empire: Oyun başlayınca merdiven ve direk arasından bir türlü çıkamıyorum. Acaba ne yapmam gerekir?

12) Knightmare: İlk zindandan nasıl çıkabilirim? (3) Bride of Frankenstein: Oyunu ilk yüklediğimde oyun çıktı, ama sonraki yüklemelerimde bilgisayar READY diyor ve oyun çıkmıyor. Ne yapmalıyım? Eğer oyun ilk kademenin bitiminde bunu yapıyorsa, oyunun diğer bölümü yüklenemiyor demektir. Eğer oyun artık hiç yüklenmiyorsa, büyük bir ihtimalle kasetinizde veya disketinizde bir bozulma olmuş demektir. Adana'dan M.Deniz Göksedef arkadaşımız aşağıdaki soruyu sormuş: Popeye II: İple tırmandıktan sonra karşımıza çıkan kapıları neyin yardımıyla ve nasıl açacağız? Bulduğunuz oyun kolaylıklarını diğer Commodore'cu arkadaşlarla paylaşmak isterseniz bize göndermeyi unutmayın. Adresimiz: Commodore Dergisi Oyunlar İçin Kolaylıklar Köşesi Silahhane Cad. Ralli Apt. 59/3 80200 Teşvikiye - İstanbul

MAKİNE DİLİ

Geçen ay CONT komutunda kalmıştık. Eğer basılan
tuş herhangi bir İstediğimiz tuş ise BRK prog-
ramın nasıl durdurulabileceğini görelim:
300' JSR SFFE4: klavyede basılan tuşu okuyan Truti-
ne git.
3003 BE© 3000: Eğer hiçbir tuşa basılmamışsa 3000
numaralı adrese atla.
3005CMP 13: Basılan tuş RETURN tuşu mu? Eğer
başka bir tuş, mesela A harfine basıldığında durul-
masını istiyorsanız CMP $41 değerini kullanın.
3007 BNE $300A: Eğer aradığımız tuşa basılmamış-
sa RT$ komutuna geç.
3009 BRK: Eğer istenen tuşa basılmışsa dur.
3O0A RTS: Bu rutini çağıran rutine geri dön.
Kullanıcı bir tuşa basana kadar program 3000. ad-
rese gitmeye devam Bu tür veri alışını ek-
randa bir menünüz varsa uygulayabilirsiniz.
Sıfırıncı sayfadaki bir adres basılan tuşları bekler. Bu
adres C-64'te SCB, C-128'de $D4'tür.
LDA $SDA:CMP 10 :BE©O BULUNDU
programını kullanabilirsiniz. Burada BULUNDU, A tuşu-
na basıldığında bir şeylerin yapıldığı rutin başlangı-
cını belirten semboldür.
Burada A tuşunun değeri 10 olarak alındı. Çünkü
bu adreste tuşların değeri normal ASÇII kodu olarak
tutulmamakta. Mesela RETURN tuşu 13 yerine | koduyla
gösterilmektedir. Eğer hiçbir tuşa basılmamışsa bu ad-
resin değeri C-128'de 88, C-64'te 64 olur.

DATA

DATA komutundan sonra yer alan bilgiler READ komutu için kullanılırlar. Ancak burada yer alan veriler BASIC diline ait değildir. Makine dilinde böyle bölgelere tablo adını veriyoruz. Program hiçbir zaman bu bölgedeki değerleri komut olarak alamaz. Bunun için program sayacı değeri hiçbir zaman bu bölgeyi göstermez. Daha doğrusu göstermemesi gerekir. Mesela yanlışlıkla JMP veya JSR komutları program akışını bu adreslere geçirirse bilgisayarımız kesinlikle kilitlenir. Çünkü bu böl-

AMIGA'da yer alan değerler bir makine dili komutunu değil program için kullanılması gereken verileri içerir. İşleri kolaylaştırmak için bu tür tablolar programın başına veya sonuna konur. Ancak en iyi yöntem bunların programın sonuna konmasıdır. Tablolarda, ekrana göndereceğiniz mesajları, değişken değerlerini, belirteçleri ve benzeri bilgileri saklayabilirsiniz. Bir programı disassembler yardımı ile incelediğinizde sık olarak ??? işareti ile karşılaşırsanız büyük ihtimalle bir tabloyu inceliyorsunuz demektir. Bir makine dili programı aşağıdaki yapıya göre yazabiliriz: Veriler Programa Başlangıç Ana Döngü Alt Programlar Veriler

DIM

BASIC, otomatik karakter işlemleri, dizi uygulaması ve hata mesajları ile programcının işini son derece kolaylaştırır. Ancak bu kolaylığın bedeli programın yavaş çalışmasıdır. Makine dilinde çalışırken değişkenler için gerekli hafıza ayrımını bilgisayar bizim için yapmaz. Mesela $6000 ile $6500 arasındaki hafıza bölgesini değişken saklamak için ayırdığınızı bilmeniz gerekir. Bu alanın bir haritasını çıkarmak, kalıcı karakter dizisinin, sabitlerin, değişken karakter dizilerinin, değişkenlerin, belirteçlerin ve benzeri bilgilerin bu bölgenin nerelerinde saklandığını bilmenize yardım olur. Hafızanın verileri içeren bölgeleri mantıklı makine dili komutları taşımayacağı için bu bölgeleri genellikle programın sonuna koyarız. Bu şekilde hafızanın belirli bir kısmını veriler için ayırdıktan sonra gerektiğinde ana programa zarar vermeden bu bölgeyi rahatlıkla genişletebilirsiniz.

AMIGA

BASIC ile yazdığınız bir programın belirli bir nokta-
da kullanıcının uyarısını beklemesini isterseniz:
BEKLE:
IF MOUSE(0) <0 THEN GOTO BEKLE

Program bu satırda kullanıcının mouse yardımı ile yapacağı veri girişini bekler. Bu işlemi daha basit olarak

IF MOUSE(0) -O THEN SLEEP

şeklinde yapabiliriz. Bir disketin kataloğunu almak için DIR komutunu kullanıyoruz. Ancak eğer disketin kataloğundaki program sayısı çok fazlaysa bu işlem oldukça uzun sürecektir. Böyle bir diskete, eğer başka dosya eklenmeyecekse şu işlemi uygulayın:

DIR. dosyaismi dosyaismi yerine istediğiniz bir ismi verebilirsiniz. Artık bu disketin kataloğunu almak istediğinizde bütün yapmanız gereken:

TYPE dosyaismi yazmak olacaktır. Eğer printer'ınız grafik ekranlarını basarken uyumsuzluk gösteriyorsa, daha doğrusu printer'ınız için gerekli printer driver'ı bulamadıysanız (Workbench 1.2'deki Preferences programında) aşağıdaki altı satırlık programı printer'ı kullanmadan önce çalıştırın. Büyük ihtimalle bu ufak program sorununuza çare bulacak.

OPEN “PAR:BIN” FOR OUTPUT AS |
esc$ - CHRS(27)
PRİNT 4, esc$;"
PRİNT 1,
PRİNT 1,
CLOSE 1

İlk satırdaki PAR:BIN isimli dosya paralel portun kullanılacağını belirtiyor. Eğer printer'ınız serial portu kullanıyorsa SER:BIN ismini kullanın. Programda satır numarası kullanmadım. Çünkü AMIGA BASIC satır numarası kullanmayı zorunlu kılmıyor. Programı bu haliyle olduğu gibi yazabilirsiniz. Programın üçüncü satırında printer'ı reset ediyoruz. Böylece açılış durumuna dönüyor. Dördüncü satırdaki

CHR$(8) komutu printer'a satır aralarında 8 nokta takması gerektiğini söylüyor. CLI altında çalışırken uzun komutları kısa olarak yazmak ister misiniz? Mesela EXECUTE komutu yerine X:

ASSIGN X: C/EXECUTE Bu komutu çalıştırmak istediğinizde X: yazmanız yeterli olur.

CLI (Command Line Interface)

Komut satır ara birimi. AMIGA ile haberleşmenin ikinci şekli. AMIGA ile haberleşmenin en kolay yolu Workbench'i kullanmaktır. Ancak bu yolla yapabilecekleriniz son derece kısıtlıdır. CLI kullanmanın en büyük yararlarından birisi AMIGA'ya her türlü komutu girebilmenizdir. Workbench'ten herhangi bir komutu veya programı çalıştırmak için iki dosya bulunması gerekir, mesela programın ismi DOSYA olsun.

DOSYA DOSYA.info

Eğer DOSYA.info olmazsa, bu programa ait ikonu Workbench'te bulamazsınız. Programların çoğunun bu tür .info dosyaları yoktur. Bu durumda diskette bulunmasına rağmen birçok programı çalıştıramazsınız. Bu aydan itibaren harf sırasına göre CLI komutlarını tanıtacağım. Bu komutların çoğunluğu C adlı directory (katalog)'de bulunur.

ASSIGN

Bu komutun mantıksal aletlerle directory'ler arasındaki ilişkileri verir, bunları oluşturur veya siler. Komutun formatı:

ASSIGN aletismi directory-ismi (LIST)

Aletismi: Bir directory, fiziksel alete veya disket ismi yerine geçecek istediğiniz bir isim. Bu işlemden sonra yeni verdiğiniz ismi kullanarak, tanımladığınız aleti, directory veya disket ismini yazmak zorunda kalmadan çalışabilirsiniz. AMIGA ilk açıldığında sistem bu komutu otomatik olarak bazı işlemler için uygular. Tanımlanmış olan mantıksal aletler şunlardır: S:, L:, C:, FONTS:, DEVS:, SYS:. Eğer bu tanımlamalara karşılık gelen directory'ler yoksa tanımla gerçekleşmez. Eğer herhangi bir tanımlamayı iptal etmek istiyorsanız, ASSIGN aletismi yeterli olur. Directory-ismi: Tanımlanmasını istediğiniz directory'nin ismi. Mesela: Burak/Kelimeişlem/Yazılar'daki Yazılar programını çalıştırmak için uzun uzun bu satırı yazmak yerine ASSIGN yazı: df0:Burak/Kelimeişlem/Yazılar yazabilirsiniz. LIST: Eğer şimdiye kadar tanımlanmış mantıksal aletleri görmek isterseniz bu kelimeyi kullanın veya sadece ASSIGN komutunu verin.

Şimdilik hoşçakalın. 53