(2) Knightmare: İlk zindandan nasıl çıkabilirim? BI Bride of Frankestein: Oyunu ilk yüklediğimde oyun çıktı, ama sonraki yüklemelerimde bilgisayar RE- ADY diyor ve oyun çıkmıyor. Ne yapmalıyım? Eğer oyun ilk kademenin bitiminde bunu yapıyor- sa, oyunun diğer bölümü yüklenemiyor demektir. Eğer oyun artık hiç yüklenmiyorsa, büyük bir ihtimalle ka- setinizde veya disketinizde bir bozulma olmuş demek- tir. Adana'dan M.Deniz Göksedef arkadaşımız aşağı- daki soruyu sormuş: Popeve Il: İ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 Comrmodore'- cu arkadaşlarla paylaşmak isterseniz bize gönderme- yi 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ş İse BRK komutuyla prog- ramın nasıl durdurülabileceğini görelim: 300 JSR SFFE4: klavyede basılan tuşu okuyan ruüti- 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 S300A: Eğer aradığımız tuşa basılmamış- sa RTS kornutuna geç. 3009 BRK: Eğer istenen tuşa basılmışsa dur. 3O0A RTS: Bu rütini çağıran rutine geri dön. Kullanıcı bir tuşa basana kadar program 3000. ad- rese gitmeye devam edeceklir. 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 SD4'tür. LDASDA:CMP 10 :BEO 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Çİİ 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 ko- mutu için kullanılırlar. Ancak burada yer alan veriler BASIC diline ait değildir. Makine dilinde böyle bölgelere tablo adını veriyo- ruz. Program hiçbir zaman bu bölgedeki değerleri ko- mut 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 ve- ya JSR komutları program akışını bu adreslere geçi- rirse bilgisayarımız kesinlikle kilitlenir. Çünkü bu böl- 52 gede 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 bun- ların programın sonuna konmasıdır. Tablolarda, ekrana göndereceğiniz mesajları, de- gişken değerlerini, belirteçleri ve benzeri bilgileri sak- layabilirsiniz. Bir Pprogramı disassembler yardımı ile in- celediğinizde sık olarak ?7? 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 ya- zabiliriz: 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 İçin ge- rekli hafıza ayrımını bilgisayar bizim için yapmaz. Me- sela $6000 ile $6500 arasındaki hafıza bölgesini de- giş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şkenle- rin, belirteçlerin ve benzeri bilgilerin bu bölgenin ne- relerinde saklandığını bilmenize yardımı olur. Hafıza- nın verileri içeren bölgeleri mantıklı makine dili komut- ları taşımayacağı için bu bölgeleri genellikle prog- ramın sonuna Koyarız. Bu şekilde hafızanın belirli bir kısmını veriler için ayır- dıktan sonra gerektiğinde ana programa zarar ver- meden bu bölgeyi rahatlıkla genişletebilirsiniz. AMIĞGA BASIC ile yazdığınız bir programın belirli bir nokta- da kullanıcının uyarısını beklemesini isterseniz: BEKLE: İF MOUSE(0) -0 THEN GÖTO BEKLE o o o o o O