Bu sayfadaki yazılar
Sayfanın metni
Sayfa 17
Vedat Hallaç, son zamanlarda yazılarımı anlayan insan popülasyonu iki elin parmaklarıyla bile gösterilebilecek hale gelmişti. Sayın yayın koordinatörümüz bu konuda bir şeyler yapmamı istediği zaman ben de bunun farkına vardım ve yeni bir yazı dizisine girişmeye karar verdim. Şu anda okumakta olduğunuz dizimizde kaynak yetersizliği yüzünden BASIC'te çakılıp kalmış arkadaşları kurtarmayı, BASIC'ten başka dil kullanmayan arkadaşların da aklını çelmeyi planlıyorum. Bu sayede program yapmaya kalktığınızda Commodore'un inanılmayacak kadar az komutu olan BASIC'inin sınırlarından kurtulup, hayal gücünüzün elverdiği her programı yaratabilecek bir güç kazanacaksınız. Şimdiye kadar makine diliyle ilgili olan her kursumuz en azından komutları kullanacak kadar makine dili bilmenizi gerektiriyordu. Oysa, bu yazı dizisinde makine diliyle ilgili hiçbir şey bilmediğinizi varsayarak yola çıkacağım ve ilk bir-iki sayıda sadece makine dilinin temelleriyle ilgili bilgiler vereceğim. Kısacası makine dili program yazmaya başlamak için bile en azından iki sayı beklemeniz gerekecek. Bu sırada makine dilini çatpat konuşan arkadaşlarımız sıkılacaklar ama daha sonra hep birlikte bu dilin inceliklerini öğrenmeye çalışacağız. Bu arada döküm ekinde de bize yarayacak programlar yayınlanacak. Mesela komutları öğrenmeye başladıktan hemen sonra, evinizde kullanabilmeniz için bir monitör programı yayınlayacağız. Tüm komutlarını dergide açıklayacağım bu monitör programı, makine dili programlarınızı yazmakta ve kaydetmekte, hatalarınızı ayıklamakta, kısaca her konuda size yardımcı olacak. İsterseniz sözü daha fazla uzatmadan konularımıza başlayalım. İşte geliyor...
Neden Makine Dili? Neden olmasın?
Tabii ki cevap bu kadar basit değil. Makine dilinin BASIC'e göre en büyük üstünlüğü hızından kaynaklanmaktadır. BASIC'in de makine diliyle yazılmış bir program olduğunu düşünürseniz, makine dilinden yavaş olması size de çok normal gelecek. Evet, yanlış okumadınız. Bilgisayarınızı açtığınız anda kullanıma hazır olarak sizi karşılayan BASIC, aslında makine diliyle yazılmış ve elektronik olarak bilgisayarınızın belleğine kazınmış bir programdır. Aslında bu programa doğrudan BASIC diye hitap etmek pek doğru değil. Programın asıl adı BASIC Yorumcusu'dur. Bilgisayarınızı açtığınız anda çalışmaya başlayan bu yorumcu, klavyeden girdiğiniz tüm satırları harf harf tarar ve bunlardan anlam çıkartmaya çalışır. Eğer kendisi için anlamsız bir şeyler girerseniz başka bir makine dili programı çağrılır ve ekrana (gene karakter karakter) “?SYNTAX ERROR” yazılır. Daha sonra da yeni satırın girilmesi beklenir. Eğer girdiğiniz satır PRINT “BEN MAKINA DILI OGRENİYORUM” gibi anlamlı bir komut-parametre dizisiyse, BASIC yorumlayıcısı bunu parçalarına ayırır. İlk olarak PRINT komutunu fark eder ve bu komutu çalıştıracak olan (gene) makine dili programa sıçrar. Buradaki program komutun arkasındaki yazıyı okur ve bu yazıyı doğrudan doğruya ekrana basar. Sonuç olarak BASIC yorumlayıcısının çok sıkıcı bir işi vardır. Her saniye, ağzınızdan çıkacak sözleri bekler ve anlayabildiği tüm işlemleri sadık bir köpek gibi yerine getirir. Her zaman sizin isteklerinizi yerine getirmeye çalışacağı için de BASIC oldukça yavaştır. Tablo 1'deki programı yazıp çalıştırdığınız zaman, ekranı A harfiyle dolduran BASIC ve makine dili programlarının hız karşılaştırmasını gözlerinizle görebilirsiniz. Aslında makine dili programları da temelde BASIC ile aynı prensibe göre çalışır. Ama makine dilinde yazılmış olan programlar hataları yakalamaya çalışmadığı için ve pek size bağlı olmadıkları için BASIC'e göre 10 ile 1000 kat arası değişen bir hız farkıyla karşılaşmanız çok olasıdır. Bunların yanında, makine dili kullanmaya başladığı andan itibaren BASIC yüzünden kullanamadığınız birçok özellik kullanıma açılacaktır.
53- / 110101 nıma açılacaktır. Mesela bir işin belli aralıklarla tekrarlanmasını isterseniz (bir saatin saniyesinin artırılması gibi), interrupt ya da kesme adı verilen özelliklerden yararlanıp, zamanlama işini bilgisayara yükleyebilirsiniz. Nedense BASIC tasarımcıları BASIC kullanıcılarını bu harika özellikten yoksun bırakmışlar. BASIC kullanıcılarının sahip olmadıkları bir şey daha var: Yeterince bellek. Makine dilinde program yazan bir programcı, bazı şeylerden ödün vererek (daha sonra bu konuların hepsine geleceğiz, acele etmeyin) bilgisayarın toplam hafızası olan 64 Kilobaytın tamamına erişebilir. BASIC programcısı ise 30K'dan az bir bellekle sınırlıdır.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 16
10 OPEN 8,8,8,“İSİM”:GET 8,A$,B$: CLO-SE 8 20 A-ASC(AŞ4-CHRS(0)):B- ASC(B$ 4 CHRS(0) 30 PRİNT “BAŞLANGIÇ ADRESİ-”A 4 256*B Birden çok programı silmek: Birden fazla programı tek bir defada silebilmek için, şöyle bir komut kullanabilirsiniz: PRINT 15,“SO:PROGRAMI, PROGRAM2, PROGRAM 3, PROGRAM4” Verileri eklemek: Verileri, daha önce çalışma belleğine yüklemeden, sıralı (seguentiel) bir dosya eklemek mümkündür. Bunun için gereken, OPEN komutuna “,A” eklemektir. Silmekten korumak: Program adının kaydedilmesi sırasında SHİFT ve Aralık çubuğuna basarak, programın ya da dosyanın yanlışlıkla silinmesini engelleyebilirsiniz. Bundaki numara, fihristin dökümü sırasında bu tuşlara basılmış olduğunun farkedilmemesidir. Kısaltılmış fihrist: LOAD“$:”,8 komutunun ardına LİST komutunu da eklerseniz, disket adını, ID numarasını ve boş blokların sayısını içeren bir kısa fihrist elde edersiniz. Özel fihrist: Yalnızca program dosyalarının isim dökümünü almak istiyorsanız, LO-AD“$:*P”,8 yazın. Sıralı dosyaların isim dökümü için komut satırındaki P'nin yerine S, relatif dosyaların ismi dökümü için ise, R koyun. Saklanmış fihrist: Bir basit numara ile, disketteki fihristin dökümünü engelleyebilirsiniz. Bunu sağlamak için disketin en son bölümüne özel bir program kaydedilmesi gerekir. İzlenecek yöntem şu: Tek satırlık bir programı belleğe yazın. Ardından Save” komutunu verin ve SHİFT ve RETURN tuşuna birlikte basın. Kursoru, soru işaretinin hemen ardına getirin. Son olarak sırayla CTRL-RVS ON, SHIFT-M, SHIFT-F, CTRL-RVS OFF elini çek!” tuşlarına basın. RETURN tuşuna bastıktan sonra programın kaydedilmesini bekleyin. Bu andan itibaren kimse disketin fihristini elde edemez.
Hızlı fihrist: Bellekteki programa hiç zarar vermeden disket fihristini okumanın bir yolu var. Bunun gerekli adımlar şunlar: İlk olarak ekranı tamamen silin ve kursoru alttan 15. satıra getirin. Ardından LO-AD“$”,8,1 yazın. RETURN'a bastıktan sonra aynı anda SHİFT ve COMMODORE tuşlarına basın. Ekranda, dosya adlarını, disketin adını ve ID numarasını içeren bir fihrist göreceksiniz. Disketi hızlandırma: Disket sürücüyle yapılan veri aktarımını aşağıdaki komut dizisiyle hızlandırabilirsiniz: POKE 53265, PEEK (53265) AND 249:0PEN 15,8,15, “UE-”':CLOSE 15 Normal duruma dönmek için kullanacağınız satır ise şöyle: POKE 53265, PEEK (53265) OR 16:0PEN 5,8,15,“UE 4 ”: CLOSE 15 PRINT sorunu: PRİNT komutunu kısaltmak için ? kullanılmaz. Çünkü bir neden olur. PRINT”ın doğru kısaltması P tuşu ve SHİFT-R tuşlarıdır. Düzgün printer dökümü: Sürekli form kağıdını printerdan koparırken çoğu zaman düzgün olmayan kopmalar meydana gelir. Bunu engellemeninsen güzel yolu, alüminyum folyo kutularındaki dişli kenarın koparılarak printerde uygun bir yere takılmasıdır. Yeni renkli şerif: 1525 yazıcıda ardarda fazla sayıda grafik karakter basıldığında, renkli şerit giderek soluklaşır. Aşağıdaki programın yardımıyla şeridin doldurulan mürekkebin içinden geçmesi ve eski rengini yeniden kazanması sağlanır: 1 OPEN 4,4 2 PRINT 4, CHR$/(15)“(38 aralık)”; PRINT 4, aralık)” CHR$(8):GOTO 2 Boş satırlar: Bir programın dökümünde. açıklayıcı notları daha rahat yerleştirebilmek için, her program satırından sonra bir boş satırın konması yerinde olur. Bunu sağlamanın en iyi yolu 127'den daha büyük bir dosya numarası kullanmaktadır. Örneğin, OPEN 128,4:CMD4:LIST yazarsanız, programın dökümü iki aralıklı olarak çıkacaktır. Ekranın basılması: Basit bir programın yardımıyla ekranın tüm içeriğinin printer çıkışını alabilirsiniz. (satır numarası kullanmadan) OPEN 3,3:0PEN 4,4:PRINT ““CUR-SOR HOME”: FOR I-İ TO 1000:GET 3,A$:NEXT: CLOSE 3: CLOSE 4. Değişken adları: BASIC'te belirli sayıda belirlenmiş kelimeyle, örneğin TO anlamı içeren değişken adlarını kullanmak mümkün değildir. Bunun tek yolu, program yazarken, tek tek T ve O harfleri arasında SHIİFT-J tuşlarına basmaktır.