Commodore sayı 24, sayfa 68

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 68

Tak 04-08-59 yazın. Artık hiçbir yaratık size dokunamayacak,

Marble Madness Birinci düzeyde GOAL.'a gelmeden sol tarafa atlayın. Başarılı atlayışımızdan ötürü puan alacaksınız. Bulunduğunuz yerde gizli bekleme yerini bulursanız gizli düzeye aktarılırsınız.

Exelon F tuşuna basarak tuş tanımlamaya geçin, tuşların karşıtlıklarına sıra ile Z,O,R,B,A yazın. Şimdi sonsuz hakkınız var.

MAKİNE DİLİ

Biraz da makine dili uğraşalım. Amacımız “Garbage Collection” işlemini hızlandıracak bir program yapmak. Büyük bir program yazarken veya büyük karakter dizileri ile uğraşırken bilgisayarın ağırlaştığını fark etmişsinizdir. Hafızanın tamamı kullanıldığında, BASIC artık kullanılmayan karakter dizileri ile ilgilenmeye karar verir. Böylece kimi zaman oldukça vakit alan bir iş başlamış olur. Bu işleme daha evvel de söylediğimiz gibi “GARBAGE COLLECTION” (çöplük toplama) adı veriliyor. Garbage Collection işleminin hafıza bitmeden evvel başlamasını istersek FRE() fonksiyonunu kullanmamız yeterli olur. BASIC bu işlemi gerçekleştirebilmek için ilk önce yüksek hafıza bölgesinde aktif durumda karakter dizisi arar. Bulunan karakter dizisi mevcut olan en yüksek hafıza bölümüne kopya edilir. Eğer bu kısımda aktif olmayan karakter dizisi varsa aktif durumdaki karakter dizisi bunun üzerine yazılmış olur. Bu işlem bütün aktif karakter dizileri kopyalanana kadar devam eder. Karakter dizisi miktarının karesi kadar süre Garbage işlemi sırasında gidiyor. Ne kadar süre kaybedeceğiniz hakkında fikir sahibi olmak isterseniz aşağıdaki programı deneyin:

10D-500 20 DIM X$(D) 30 FOR J-0TO D 40 S0 NEXT J 60 PRİNT “ISLEM BASLIYOR...” 90 T- TI:3 - FRE(0) 80 PRİNT (TI-T)/60;“SANIYE”

10 numaralı satırda D değişkeninin değerini değiştirerek artan sayıdaki karakter dizilerinin zamanı nasıl etkilediğini görebilirsiniz. Garbage Collection sırasında zaman kaybını önlemek istiyorsanız Program Döküm Eki'ndeki PROGRAM2'yi deneyin. Programımız $CA20 ile $CBFF (51744-52223) arasında yer alıyor. Programı yazmayı bitirdikten sonra çalıştırmadan evvel muhakkak kasete veya diskete saklayın.

Programımızı disketten, LOAD“program-ısmı",8,1 kasetten, LOAD“program-ısmı”,1,1

şeklinde yükleyin. Program-ismi yerine programı hangi isim altında sakladıysanız o ismi yazın.

Programı aktif hale getirmek için, SYS 51744

komutunu vermeniz yeterli olur. Programımız ilk olarak BASIC'i ROM'dan RAM'e geçiriyor ve BASIC üzerinde bazı değişiklikler yapıyor. Değişiklik yapıldığını READY! yazısının değişik yazılışından anlayabilirsiniz. RUN STOP/RESTORE tuşu programı etkisiz hale getirir. Tekrar çalışmasını sağlamak için SYS 51744 vermek yeterli olur.

BASIC PROGRAMLAR

Biraz da BASIC programlarıyla ilgilenelim. Konumuz verileri ekrana formatlı olarak çıkarmak veya sayıların noktadan sonra gelen kısımlarını iki rakama indirmek,

Eğer ufak bir muhasebe programı yazmak isterseniz başınız noktadan sonra gelen sayılarla derde girer. Noktadan sonra belirli miktarda sayı gelmesini istiyorsanız ne yapacaksınız?

Ne yazık ki, BASIC 2.0'da sayıları düzenleyerek yazmayı sağlayan bir komut yok. C128'de bu sorun PRINT USING komutu kullanılarak halledilmiş. C64'de böyle bir komut olmadığı için 4.231246 gibi sayıları okumak zorundasınız. Ancak PRINT USING komutunun görevini yerine getirecek bazı programlama yöntemleri sayesinde sayıları istediğimiz formata sokabiliriz. Standart yöntemlerden birisini görelim:

S-1NT(V*100-4 0.5)/100

V değişkeninde sayımız bulunuyor. Ancak, bu yöntemin zayıf noktası, eğer noktadan sonra sıfır varsa kayboluyor. Mesela 44.90001 sayısı 44.9'a dönüşüyor. Ama bizim istediğimiz değer 44.90'dı. Buna benzer sorunları çözmek için başka bir çözüm yolumuz var:

- (.001*SGN(5))) S$ -

Bu yöntem hemen hemen her zaman çalışıyor ama 837.149 sayısında hata yapıyor. Bu sayıda sonuç olarak 837.15100 sonucunu alıyoruz. Program Döküm Eki'nde PROGRAM3 ve bahsettiğimiz yöntemlerin biraz daha gelişmişini kullanarak sayıları formatlıyor. PROGRAM3 -1000 ile 1000 arasında tesadüfi sayılar üretip bu sayıları formatlıyor. Bu programda kullanılan yöntem -9999999.99 ile 9999999.99 arasındaki sayıları formatlayabilir. 5000 ile 5090 satırları arasındaki kısmı kendi programlarınızda kullanarak sayıları istediğiniz şekilde formatlayabilirsiniz. Programlarınıza C1= .5:C2= 1:C3= 100 satırını da eklemeyi unutmayın. V değişkenine formatlanmasını istediğiniz sayıyı yerleştirin ve GOSUB 5000 komutu ile rutinimizi çalıştırın. Formatlanma işlemi sona erdiğinde sayınızı yeni şekli ile N$ değişkeninde bulabilirsiniz. PROGRAM 40 tane tesadüfi sayıyı ekrana veya yazıcıya basar. Sayılar 580 numaralı satır sayesinde sağa ayarlı olarak basılır.

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