Plazma sayı 2, sayfa 164

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 164

"Sinüs Hareketi" Örneği

Merhaba dünya örneğinden sonra biraz büyük bir atlayış gibi gözükse de aslında yazacağımız program çok kısa ve basit bir program. Programın en büyük özelliği sinüs fonksiyonuna ihtiyaç duyması. Commodore 64'ün makine dilinde sinüs için özel bir operatör mevcut değil. Bunun için ya Basic ROM'undan sinüs fonksiyonunu kullanmamız gerekmekte ya da kendi sinüs rutinimizi yazmamız. Bu iki metodun da sonucu çok hızlı olmayacaktır. En pratik yol sinüs değerlerini tablolamak ve tablodan okutmaktır. Pekala, öncelikli işimiz sinüs hesaplatmak. Bunun için geçen sayıda da yaptığımız gibi çeşitli metotlar kullanabiliriz.

Amacımız Commodore 64'ün karakter ekranının en üst satırında bir karakteri sinüs hareketiyle sağa sola sallamak. Bir satır 40 karakter olduğuna göre bizim 0-39 arasında değişen değerlerde bir sinüs tablosuna ihtiyacımız var. Şimdi JavaScript kullanarak bu aralıkta değerler hesaplatan bir formül bulalım.

sinus.htm

<script> for(i = 0; i < 256; i++) { a = 20 + Math.floor(19.9 * Math.sin(i / 64 * Math.PI)); if(i != 0) document.write(","); document.write(a); } </script>

Bu örnek tarayıcımızın ekranına;

20,20,21,22,23,24,25,26,27,28,29,.......................,7,8,8,9,10,11,12,13,14,15,16,17,18,19 şeklinde tam 256 adet sayı basar. Şimdi sinüs hareketini oluşturacak minik programımızı yazalım ve internet tarayıcısının ekranındaki bölümü programımızın sonuna kopyala&yapıştır yapalım.

sinus.a

!to "sinus.prg"

* = $0801 !byte $0c, $08, $00, $00, $9e, $32, $30, $36, $31, $00, $00, $00

* = $080d loop jsr $e544 sinpos ldx sinus lda #$51 sta $0400,x inc sinpos+1 jmp loop

* = $0900 sinus !byte @Sinus değerlerini buraya kopyala & yapıştır

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