Commodore sayı 52, sayfa 20

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 20

Geçen sayıda Interrupt'lara bir giriş yapmış ve makine dilindeki ilgili komutları incelemiştik. Şimdi bu sayıda bir programla Interrupt'ların kullanımını göreceğiz. C-64'ün video chip'inin Interrupt'lar ile kumanda edilmesiyle oldukça güzel efektler elde edilebilir. Bu nedenle IRQ'lar demo ve introlar için vazgeçilmez bir unsurdur. Şimdi yazacağımız program ekranın dış çerçevesinde C-64'ün tüm renklerini şeritler halinde gösterecektir. Yalnız programa geçmeden önce ekranda resmin nasıl oluştuğunu bilmemiz gerekmektedir. Ekranı sürekli tarayarak gördüğümüz resmi oluşturan katot ışınının konumu iki bayttan takip edilebilir. Bu iki bayt Raster Register'i olarak adlandırılır. Burada fazla detaya inmeden ekrandaki satırların 0'dan 280'e kadar numaralanmış olduğunu belirtmemiz yeterlidir. Ekranın 280 satır olmasının nedeni çerçevelerin ve görünmeyen kenarların da bu sayıya dahil edilmiş olmasıdır. Yazı alanının başladığı satır monitör-

7 ,Baza FB vr GEBE A9 28 ağ, .6003 80 14 STA | “sesi da vE AS #66 | bisi BD 13 63 STA B315 | AS Fa LDA #F8 | Fo BD 12 Da STA Dai?

20 be

NO 11 DE LDA Dali

28 7F AND HZE (8015 BD di DE STA AS Bİ LDA | En 2m De STA Dere SD ADE STA DOİA | (sase Aa 32 AS BALDA | En iz na STA ©n DR STA | dc Gi EA as v4 LDA | — STA Be | za ser se LT AS Be — Lna Heba Ba S0 JA DE STA DOLA Ra Ri LDA Bn 14 B3 STA Aa LA LDA ,8869 80 15 ex STA Balm KA LDA 28 ve STA

Se

83266 (Bit 0-0)

83285 (Bit?)

Resim 1: Raster registerinin 9 Bit'i

ANIL GÜL'den monitöre değişmektedir, fakat genelde 50 civarındadır. Yukarıda sözünü ettiğimiz Raster registerini oluşturan baytlar şunlardır:

$D012 (53266) $D011 (53265)

baytındaki sadece 7. Bit'i Raster satırının yüksek baytı olarak bizi ilgilendirmektedir. Raster registerinin 9 Bit'i Resim 1'de gösterilmiştir. Bu registerin en ilginç özelliği değerinin değiştirilebilmesidir. Bu şekilde istenen Raster satırında $D01A'daki Interrupt-enable-registeri (geçen sayıda görmüştük) ile serbest bırakılmış bir IRQ devreye sokulabilir. VIC-II-Chip'inin programlanmasına geçmeden önce atılması gereken adımları belirtelim: 1.) $D012 ve $D011 adresinin 7. Bit'inden IRQ'nun devreye sokulacağı raster satırı belirlenir. 2.) $D01A'daki Interrupt-enable-registerine 1000 0001 verilerek Raster satırı Interrupt'ı serbest bırakılır. Bundan sonraki adım IRQ'nun mikro işlemci tarafından yorumlanmasıdır. Geçen sayıda belirttiğimiz gibi IRQ $0314/5 ($314/5) vektörünün gösterdiği adrese dolaylı olarak atlamaktadır. Bu vektör değiştirildikten sonra kendi rutinimizi göstermelidir. 3.) $314/5 rutini yardımcı IRQ rutinine yönlendirilir. Bu şekilde gerekli tüm hazırlıklar oluyor. Gerisi tamamen yapacağımız programa bağlıdır. Resim 2'de programımızın akış diyagramı yer almaktadır. Şimdi satırları teker teker inceleyebiliriz. Önce $6000 adresinde başlayan (SYS 24576 ile çalıştırabilirsiniz) hazırlık aşaması:

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