Bu sayfadaki yazılar
Sayfanın metni
Sayfa 23
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 22
Şu kısacık programı yazıp çalıştırınca kulaklarınıza inanamayacaksınız!!! Sizlere dünyanın en kısa müzik programını sunuyoruz. Üstelik sizin çalmanıza gerek bile yok. Kendi bestesini kendisi yapıyor.
Size verdiğimiz minik programı yazıp çalıştırın. Bilgisayarınızın ilk bestesini duyacaksınız. Herhangi bir tuşa basın. İşte ikinci beste. Canınız sıkılana kadar devam edin. Sıkılınca da, RUN/STOP tuşu ile programı durdurun.
Önce BASIC programına bir göz atalım.
Onuncu satır, program için bir hazırlık. Otuzuncu satırda makine dilinde yazılmış kısa program, 832-890 ($0340-$037A) adresleri arasına yerleştiriliyor. Otuzbeşinci satırın ne yaptığı belli. Otuzaltıncı satır ise, müzik besteliyor! Programın geri kalanı, kullanılan makine dili programını DATA satırları halinde saklıyor.
832'den başlayıp SYS 832 ile çağırılan makine dili programı, 1022 ve 1023 adresleri içinde bulunan değerlere göre ses üretiyor. Kullanılan algoritma nedeniyle de, ortaya oldukça ilginç sonuçlar çıkıyor.
Esas önemli olan, bu iki sayı arasındaki fark. Bu nedenle birisine sıfır koyup diğerinde 0-255 arası sayıları denemek de mümkün. Bizim programımız her ikisini de RND fonksiyonu ile saptayıp, olayı tamamen tesadüfi hale getiriyor. İsterseniz kendi bestenizi yazabilirsiniz. Bu arada belirtelim, birazdan da göreceğiniz gibi, tuşa basmanızı bekleyen program, BASIC programı değil, makine dili programı. Kendi programınızı yazarken buna dikkat edin. Eğer makine dili biliyorsanız, verdiğimiz assembler kodu yardımıyla ve tabiî ki SUPER-ASS'ı kullanarak, istediğiniz değişiklikleri yapın.
Madem söz açıldı, şimdi de makine dilindeki esas programı, assembler kodu üzerinden açıklamaya girişelim... Bu işi bilenler okusunlar, bilmeyenlere şimdiden iyi besteler dileriz...
100-170 satırları arasında, programda kullanılan dış adresler label'lara yükleniyor. Programın başlangıç adresinin $0340 (832) olduğunu 190. satırda belirtiyoruz. Programın ilk yaptığı şey, ses şiddetini en yüksek seviyeye çıkarmak. Aynı zamanda sesin şiddetini kaybetme hızı en yavaş düzeye indirilirken, düşeceği seviye 7 olarak belirleniyor. Bu iki işlem, aynı anda sesin yükselme hızını maksimum yapıp, tınıyı olduğu gibi ortadan kaldırıyor. Eğer bu terimleri tam bilemiyorsanız, C-64 Kullanıcı El Kitabı'nda ve Programcının El Kitabı'nda bulabilirsiniz.
260-270 arasında, üçgen dalga biçimi seçiliyor. 280 numaralı satırdan itibaren esas besteleme kısmı başlıyor. 1023 adresinin içeriği bir artırılırken, 1022'nin içeriği bir azaltılıyor. 300-360 arası bir tür bekleme döngüsü. 370'de bir tuşa basılıp basılmadığı kontrol ediliyor. Eğer basılmamışsa, program 390'dan devam ediyor. 1022 ve 1023'ün içerikleri AND işlemine sokuluyor ve sonuç ses frekansının üst byte'ı olarak kullanılıyor. Ve program tekrar başa dönüyor.
Ancak, bir tuşa basıldığında program 430'dan devam ediyor. Ses şiddeti ve klavyede basılan tuşları sayan adres ($C6 = 198) sıfırlanıyor. Sonra da, BASIC programına geri dönülüyor.
İşte bu kadar. Güzel, değil mi?