Commodore sayı 33, sayfa 52

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 52

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ölgede 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

Klavyeyle gezinmek için ← ve → tuşları.