Commodore sayı 55, sayfa 49

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 49

Bu satırların ilk programdaki “AND #$7F” işleminden hiçbir farkı yoktur. Hatta ilk açılışta Commodore 64'ünüzde bu değer #$1B olduğu için vermeseniz de olur. Ancak daha önce grafik ekranı açılmış veya $D011 ile oynanmış ise programda sorun yaratabilir. 4013-401E CIA kesinti kontrol registerini ve CIA kontrol registerini ayarlar. Bahsettiğimiz bu teknik terimler sizi sıkmasın. Çünkü bu kısım her interrupt ayarlamasında aynıdır. Her programda bu değerleri vererek çalışabilirsiniz. Sadece ne işe yaradığını bilmeniz açısından anlattık. Gerekli olan değer VIC kesinti bayrağı registeri ve IRQ önleme registerine yazılır. $D019 değeri interrupt programında her zaman #$01 değerini almalıdır. Daha basit bir yolu “INC $D019” komutunu kullanmaktır. Böylece bilgisayarınız interrupt'ı çalışabilir hale sokar. Aksi takdirde raster interrupt'ında program hatasına yol açar. Bu da hiç hoşlanmadığınız bir olaya yani kilitlenmeye sebep olur. 4029-402E Raster registerinin alçak byte'ına raster satırının başlangıç noktası verilir. Yüksek byte ise $D011'in 7. bitidir. $D012'ye vereceğiniz herhangi bir değer interrupt'ın verdiğiniz çizgiden çalışmasını sağlar. Örneğin #$32 değeri verdiyseniz bu değer iç ekran ile dış ekranın birleştiği üst satırdır. Değer arttıkça raster başlangıcı aşağıya doğru kayar. $D012 ekranı çizgi çizgi tarar. 402E- Interrupt'ı başlatıp geriye dönüş. Şimdi interrupt olarak çalıştırmak istediğimiz programı yazabiliriz. Daha önce verdiğimiz programların hepsini yazabilirsiniz. Ancak $D019'a $01 değerini vermek şartıyla kullanabilirsiniz. Bu sayede interrupt'ınız gerçek hızında çalışacaktır. Örneğin bir müziği çaldırdığınızda ses ne çok hızlı ne de çok yavaş gelecektir (Tabii hız olarak). Bu konuyu da anlattıktan sonra interrupt bitmiş oldu. Artık basit programlar yazabilir. Hatta programlara müzik ve diğer efektleri katabilirsiniz. Yavaş yavaş assembler programcılığına doğru yola çıkmış olduk. Konular ilerledikçe daha iyi bir programcı olacaksınız. Şimdi de demoların ve introların vazgeçilmez efekti müzikten bahsedelim. Müzikten bahsedelim derken nasıl müzik yapıldığını anlatacak değiliz tabii ki. Sadece müziğin nasıl çaldırılacağını anlatacağız. Zaten en kolay ama en çok öğrenilmek istenen konu da budur. Müziği interrupt ile veya interrupt kullanmadan çalıştırabilirsiniz. Ancak size tavsiyem şu seviyede müziği interrupt ile kullanmanızdır. Aksi takdirde programınıza bir de zamanlama rutini eklemek zorunda kalabilirsiniz ki bu da usta programcıların bile nefret ettiği bir konudur. Müziklerin içinde player rutinleri zaten bulunduğu için size düşen sadece o rutini çalıştırmaktır. Bu işlem için bir yukarıda gösterdiğimiz gibi bir interrupt kurun. Müziği baştan başlatmak için gerekli bir adres vardır. Bu her müzik player rutini için farklıdır. Ancak genel olan bu adres "JSR” etmeden önce A'ya #$00 değeri vermektir. Yani LDA #$00 ve JSR adres. Bu rutini interrupt'ı çalıştırmadan yani CLI komutunu vermeden önce yazın. Böylece müzik hep en başta ve gerekli ayarlamaları yaparak başlayacaktır. Şimdi interrupt'da çalışacak programa gelelim. Aşağıdaki işlemleri yaparak herhangi bir müziği dinleyebilirsiniz. LDA #$04 $1102 STA $D019 JSR $MÜZİK $1108 JMP $EA31

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