Commodore sayı 55, sayfa 50

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 50

İşte bu kısa ve basit program sizin işinizi görecektir interrupt'ın içinde müziğin player rutinine dallanmanız yani “JSR” etmeniz yeterlidir. Piyasada en çok kullanılan player rutini $1800 ile ayarlamaları yapılan $1806 ile çaldırılan müziklerdir. Bunun yanısıra $1000 ve $1003 ikilisi de yaygındır. Biraz önce bir zamanlama rutini yazmanız gerektiğinden bahsettik. Hazır sırası gelmişken bu konuyu da anlatalım da daha sonra dergiye zamanlama nedir? diye binlerce mektup gelmesin. Bazen yazdığınız program çok hızlı bir şekilde çalışır. Yapmanız gereken rutinin yavaş çalışmasını sağlamaktır. İşte zamanlama dediğimiz olay bu noktada karşımıza çıkıyor. Esasen bilgisayarı hızlandırıp yavaşlattığımız falan yok. Sadece biraz fazla işlem yaptırarak hızını azaltıyoruz. Bunu da programa en az zarar vermesi bakımından hallediyoruz. Böylece bilgisayar belli bir yere geldiğinde (döngünün bulunduğu yere) kendi kendine saymaya başlıyor. Bu sayma işlemi sizin belirttiğiniz zamana kadar yaklaşık 1.5 MHz'lik bir hızla sürüyor. Yine pratikte olayı kavramak açısından küçük bir program örneği ile bu konuyu anlatacağız. İlk önce basit ve kısa süreli döngülere değinelim

$3000 LDX # değeri ver

$3002 1NX X'i bir arttır. $3003 CPX # X'in SFD değerine ulaşıp ulaşmadığ- nı kontrol et,

$3005 BNE Ulaşana kadar $3002 $3007 LDA # $00 A'yı sıfırla $3009 STA $DO20 border rengini $300C STA $DO21 Paper rengini s300F RTS Geri dön Bu rutin X'i birer birer arattırıp # SFD aeğerine ka- dar ulaşmasını sağladı. Buradaki # $FD değerini is- tediğiniz gibi değiştirerek farklı zamanlar elde ede- bilirsiniz. Bu işlemleri yapması bilgisayarın oldukça az

$00 yap $00 yap zamanını aldı. X = $FD olunca ekran renklerini siyah yaptık. Bu da bu zaman hakkında az da olsa bir bilgi sahibi olmanızı sağlar. Gelelim aletimizi daha uzun süreli meşgul edecek rutinlere yani döngülere, $3000 LDX #$00 $3003 LDY #$00 INY $3006 CPY #$FE BNE $3003 $300A INX $300B CPX #$F0 $300D BNE $3003 $300F LDA #$00 $3011 STA $D020 $3014 STA $D021 $3017 RTS Bu rutinin mantığı da şu şekilde işlemektedir. Bilgisayar önce X ve Y'yi #$00 değerleri ile tanımlıyor. Sonra Y'yi $FE olana kadar arttırıyor. Y = $FE olduğunda X bir arttırılıyor ve X = $F0 olana kadar Y'nin #$FE'ye kadar olan artması tekrar tekrar işleniyor. Yani X her arttığında Y tekrar 0'dan $FE'ye kadar artıyor. Bu tekrarlama X'in $F0 değerini alması ile sonuçlanıyor. Tabii renkler siyah olarak uyarılıyorsunuz. Yine X ve Y'nin kontrol değerleri CPX ve CPY'nin sayısı değerleri ile oynayarak farklı zamanlar elde etmeniz mümkün. Şu ana kadar registerleri kullanarak zamanlamayı gördük. Gelecek sayıda registerlara bağlı kalmadan vakit geçirmeyi anlatacağız. Umarım kendi kendinize basit programlar yapmaya başlamışsınızdır. Ya da bazı programlara eskiden olduğu gibi hiçbir şey anlamadan bakmıyorsunuzdur. Az da olsa birtakım şeyleri anlamaya başladığınızı sanıyorum. Zaten tek bir kaynağa bağlı kalmaksızın program incelemenizi tavsiye ederim. Geleceğin assembler programcılarına bol klavyeli bir ay diliyorum Gelecek sayıda buluşmak üzere hoşçakalın

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