Bu sayfadaki yazılar
Sayfanın metni
Sayfa 10
Mahmut GENCERİ
SID'ın Yapısı ve Programlanması
Samet Kumaş size SID'in 29 sicilden oluştuğunu söyledi, ama onu nerede bulabileceğinizi, ona nasıl erişebileceğinizi anlatmadı. İsterseniz biz de bunlardan başlayalım. SID'imiz (SID - 54272)'de ikamet ettiğine göre, bu adreslere
POKE 54272 4 REGİSTER, İlk başta tek osilatörden başlayalım, diğerleri yedişer adres daha ileri- DEĞER de olacaktır. Şimdi SID'in görünüşükomutuyla ya da makine dilinde ne tablodan bakalım. Dikkat eder- LDA # DEĞER seniz ilk 20 adres, daha doğrusu Re- STA $ D4004 REGİSTER gister, yedili aralıklarla birbirlerini » tekrar ediyor. 0'ıncı ve 1'inci adres» komutlarıyla erişebiliriz. Burada RE- ler çıkacak sesin frekansı ile ilgilidir. GIİSTER, SID içerisindeki 29 sicilden Buralara koyacağınız değerler çıkacak bizim ilgilendiğimiz sicilin numarası, sesin frekansını belirler. Unutmaya- DEĞER ise bu sicile vermek istediği- lım, buradaki Register'lar sadece yamiz değerdir. Şimdi SID'i oluşturan zılabilir türden olduğundan, buraya bu sicilleri teker teker inceleyelim: konan değerleri tekrar okuyamayız. commodore
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 11
Dolayısıyla istediğimizde bu değerlerin tekrar okunabilmesini sağlamak, biz programcılara düşer. Buraya koyduğumuz değerlerin sonuç olarak üreteceği sesin frekansını, yani çıkış frekansını, aşağıdaki Formül I ile bulabiliriz. FORMÜL I Fçıkış = (Fn * Fclk / 16777216) Hz. Formül I'de Fn değeri 0 ve 1 no.lu Registerlara yazılacak değerler toplamıdır. (0 byte, 1 - high byte). FORMÜL II Fn = Register 0 + Register 1 * 256 Fn değerini yukarıda verdiğimiz Formül II'den elde edebiliriz. Fakat elimizdeki formül (I) çıkış frekansını veriyor. Bize şu anda gereken ise bu değil; Fn, yani bizim kendi vermiş olduğumuz ve artık okuyamadığımız değerlerin toplamı. Bunu göz önünde bulundurarak formülü tekrar yazarsak, III. formülümüzü elde ederiz: FORMÜL III Fn = 16777216 * Fçıkış / Fclk Fclk, 64'ün sistem darbe üreticisinin frekansıdır. Bu yaklaşık 1 megahertz (MHz) olarak kabul edilebilir. Şimdi formül Fn = 16777216 * Fçıkış / 1000000 halinde yazılabilir. Sabitleri hesaplatırsak (Commodore'a tabii) 16.777216 gibi bir sayı çıkar (hiç de güzel görünmüyor). Bunu biraz kırparak 16.78 ya da kulağınız böylesi bir farktan rahatsız olmayacak kadar duyarsızsa, 17 olarak da kabul edebiliriz. Böylelikle şöyle bir formül elde ederiz: Fn = 17 * Fçıkış
Fizikten Müziğe
Notaların değerleri ile oynamak ya da bu sayıda röportajını yayınladığımız Osman İşmen'in yaptıklarını siz de denemek isterseniz formülde başka sayılar da kullanabilirsiniz. Ancak, biz standart notalarla yetinelim: Piyanonun tam orta yerinde bulunan LA notasının standart frekansı (saniyede titreşim sayısı) 440 Hz.'dir. Bu notayı SID'den elde etmek istersek, Fn = 17 * 440 = 7480 sayısını elde ederiz. Bunu HI byte LO byte'lara ayırırsak; (7480/256): HI = 29; LO = 7480 AND 255 (Formülle savaşmak istemeyenler nota değerlerini kullanım kitaplarının
Ek (APPENDIX) kısmında bulabilirler. Bu sayıları POKE SID + 0, INT (Fn/256) POKE SID + 1, Fn - INT (Fn/256)*256 ya da POKE SID + 1, Fn AND 255 şeklinde yerleştirilerek frekans değerini tespit etmiş oluyoruz. Bunlardan sonra gelen iki Register darbe tipinde dalga üretilirken gerekli olan oranlama işine yardımcı olurlar. Darbe tipi dalgalar diğerlerinden daha karmaşık olduğundan bu tip dalgalardan ilerde bahsedilecektir. Sıra 4'üncü Register'e geldi ama bunu öğrenmeden önce isterseniz bir sesin nasıl oluştuğunu inceleyelim. Bir nota üretildiği enstrümanın karakterlerini taşır. Böyle bir sesi SID ile sentezleyebiliriz. Bu karakterler yükselme, iniş, istikrar, sönme (ATTACK, DECAY, SUSTAIN, RELEASE) evrelerinden geçer. SID'i programlayarak bu evrelerin benzetimlerini yapabiliriz. ATTACK evresi 5'inci