Amiga Dünyası sayı 1, sayfa 60

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 60

Amiga; hepimizin hayatının akışını değiştiren bir alet. Zevk ile kullanıyoruz. Amiga ile ders çalışıyor, oynuyor, karmaşık problemlerimizi onun yardımı ile çözüyoruz ve hepimiz (oyun tiryakileri dışında) karınca kararınca kendi çapında, bildiğimiz dillerde, işlerimizi görecek programlar hazırlıyoruz. Yaptığımız araştırmalara göre Türkiye çapında Amiga kullanıcılarının % 95'i BASIC, PASCAL, FORTRAN, MODULA, COBOL gibi yüksek seviyeli dilleri biliyor ve bunlar ile programlarını hazırlıyorlar. Geriye kalan % 5 ise sadece Assembler biliyor. Yüksek seviyeli dillerin başını, hepimizin bildiği gibi BASIC çekiyor. Zaten Amiga ve diğer kişisel bilgisayarların ilk kullanım paketinden BASIC çıktığı için, hepimiz ilk dil olarak onu öğrendik. Ve hiçbirinizin BASIC'i öğrenirken zorlandığınızı tahmin etmiyorum. Basit İngilizce komutlar ile rahatça işimizi görecek muhasebe programları, telefon rehberleri, stok programları yaptık. Amiga'da bu tür ihtiyaçları böylece halletmiş olduk. Fakat Amiga sıradan bir bilgisayar değil. 4096 renkli, 4 kanaldan stereo ses çıkışlı, 880 Kbyte disket formatlı yaklaşık 8 Mhz hızında bir makina. Bütün bu özellikleri profesyonel oyun ve demo programlarından gözleyebilirsiniz. Dört kanaldan muhteşem bir müzik çalarken, aynı anda 32 renkli bir ekran üzerinde hızla hareket eden uçaklar, gemiler, birbirinden güzel efektler, rengarenk yazılar görüntüleniyor. Bütün bunları bir arada düşünüp insan rahat olur mu? Böylesine büyük bir güç, parmaklarımızın ucunda iken neden kontrolümüz dışında kalsın. Gerçi bu özellikleri bir ölçüde Deluxe Paint'in efektleri veya SoundTracker ile karşılıyoruz. Fakat iş Amiga'nın muhteşem grafikleri ve seslerini aynı anda ve en hızlı şekilde kontrol etmeye gelince, en kullanışlı dil olarak Assembler ortaya çıkıyor. Aslında bu tür işler BASIC, PASCAL, MODULA gibi yüksek seviyeli diller ile de yapılır. Fakat yüksek seviyeli diller bazı sorunlar yaratıyor.

Birincisi çok yavaş çalışıyorlar. Daha doğrusu grafik ve müzik gibi işler için hızları uygun değil. 32 renkli bir ekranda basit bir scroll (grafiklerin akıcı bir şekilde kayması) hareketi bile makinaya çok büyük bir zaman kaybettiriyor. Bir de olaya müzik girince, makina C-64'ten bile yavaş hale geliyor.

Bu yavaşlığın sebebi ise; BASIC ve bunun gibi derleyicilerin yapısının bu gibi işlere uygun olmaması. Biz BASIC çalışırken, aslında bilgisayar BASIC komutlarını anlayan ve makine dili komutları dizisine dönüştüren bir derleyiciyi çalıştırıyor. Oysa makine dilinde yazdığımız program hiçbir derleyiciden geçmeyeceği için, sanki makinenin bir parçası gibi tam hızla çalışacaktır. Yazdığımız bir BASIC programı RUN ile çalıştırdığımızda, program listesindeki her komut sırası ile okunur, derleyicide kendileri için yazılmış makine dili rutinlerine gider ve görevleri ne ise onu yaparlar. Yani bilgisayarın içinde işleri gören aslında BASIC'te yazdığımız program değil, derleyicideki her komutun karşılığı olan makine dili rutinleridir. Derleyicideki bu rutinler ise tek bir iş için yapılmayıp genel programlama için oluşturulduklarından, Assembler'daki programlar BASIC'tekinden en az 48 kat hızlı çalışıyor.

Yüksek seviyeli dillerin ikinci dezavantajı ise bilgisayarda çalışırken çok yer kaplamaları ve kullanıcıya fazla çalışma alanı bırakmamalarıdır.

Assembler dili ise bu dezavantajları avantaja çevirmek için en uygun dildir. Özellikle hız bakımından Assembler ile diğer hiçbir dil başa çıkamamaktadır.

Artık neyi anlatmak istediğimi aşağı yukarı anladınız sanıyorum. Amiga'yı tam performans kullanmak için makina dili şart!!! Fakat makina dilini öğrenip diğer dilleri bir köşeye atın demiyorum. Arzu ettiğiniz zaman makina dili programlarınızı BASIC veya diğer dillerde yazılmış programlarınızın arasına sokabilirsiniz. Örneğin BASIC'de geniş kapsamlı bir dosyalama programı hazırladınız ve binlerce isim veya benzeri yazıyı sıralamanız gerekiyor. BASIC sıralama rutininiz yavaş kalıyorsa ve derleyicide sıralama komutu yok ise, buraya Assembler'da yazabileceğiniz basit bir rutin ile programınıza yüksek bir hız sağlayabilirsiniz.

Hep Assembler'ın iyi yönlerinden bahsettik, fakat Assembler'da da bazı sorunlar ile karşılaşacağız. İlk olarak bilgisayarımızın iç mimarisini çok iyi tanımanız gerekiyor. Yani grafik, müzik ve çevresel birimlerin yerleştirildikleri ve kumanda edildikleri hafıza adreslerini çok iyi bilmeniz lazım. Bu da yetmiyormuş gibi Assembler'da yazdığınız programlarda hata yaparsanız, bilgisayar hata yapılan satıra gelip hata mesajı vermiyor. Kilitlenip kalıyor veya GURU MEDITATION'dan bir hata mesajı veriyor. Sonuç olarak bilgisayarı açıp kapamak ya da resetlemek zorunda kalıyoruz.

Assembler dilinin avantaj ve dezavantajlarını da öğrendikten sonra, artık yavaş yavaş 68000'e doğru yaklaşalım. MOTOROLA 68000 adındaki mikroişlemci, 16-32 bit veri kanallarına sahiptir. 68000 işlemcinin 16 MegaByte'lık adresleme kabiliyeti ve MULTITASKING (birden fazla işlemi aynı anda yapmak) diye adlandırdığımız bir özelliği var. 68000 hepimizin bildiği gibi Amiga'da 7.16 Mhz ile çalışıyor. Diğer bir deyişle, saniyede yaklaşık 1 Milyon aritmetik işlem yapıyor.

MOTOROLA 68000 makina dilinde, sadece 56 komut ve bunların bir dizi parametreleri var. Bu komutlardan bazıları 8, 16, 32 bit olarak üç ayrı parametreli olarak kullanılabiliyor. 8 bit olarak kullanıldığında BYTE, 16 bit olarak kullanıldığında WORD, 32 bit olarak kullanıldığında LONG WORD diye isimlendiriliyorlar.

Örneğin BASIC'deki POKE komutunun makina dilindeki karşılığı olan MOVE komutunun 8, 16 ve 32 bitlik üç şekli aşağıdaki gibidir.

MOVE.B 01, DO; Byte olarak kullanım MOVE.W 0001, DO; Word olarak kulla- nım

MOVE.L 00000001; Long Word olarak kullanım.

Bu arada yukarıda bahsettiğimiz Bit, Byte, Word ve LongWord gibi deyimlerin ne demek olduğuna kısaca değinelim.

Bit deyimi, bilgisayarın anladığı en küçük sayı birimidir. Her bit'in değeri 0 ve 1'den oluşan ikili sayı sistemine göre bir sayıdır.

Byte deyimi de 8 bit'in yanyana gelerek bir sayı dizisi oluşturmalarıdır. Yani "01101001" olarak 8 bit'i yanyana getirerek bir BYTE oluştururuz, ikili sayı sistemini yakından tanıyanlar bilirler. Yukarıda örnek olarak verdiğimiz "01101001" Byte'ının değeri: 01101001 = 0(128) + 1(64) + 1(32) + 0(16) + 1(8) + 0(4) + 0(2) + 1(1)

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