Commodore sayı 57, sayfa 46

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 46

rutinini kullanırsak elektron alt satırda, bu işlemi yaptığımız koordinatın hemen altında bulunacaktır. Tabii ki bu kadar kolayca bu işin içinden çıkamayız. Çünkü belli satırlarda (her karakter satırının başlangıcında) sizin programınızla olan bağlarını keser ve ekrana gidecek olan görüntüyü ayarlamak için yeni satırı almak, yüksek çözünürlük modunda iseniz bu satırdaki harfleri renklere çevirmek gibi işlemlerle uğraşır. Tabii ki bu işlem sizin ayarladığınız zamanlamayı da altüst eder. Bu olayları yapmak için program kullanılmadığı için (tamamen elektronik olarak başa çıkılır bu işlerle) çok gelişmiş sistemler kullanmak dışında bu satır yenileme olayını engellemek elimizde değildir. Bu yüzden, yazacağınız program bu satırlarla uğraşacağı zaman renk değiştirme işini elinden geldiğince çabuk halletmek zorundadır. Tabii ki bu ayarlamayı yapmak kolay olmadığından renk şeritleri yapmak çoğu programcının korkulu rüyası olmuştur. Bu programlar o kadar hassastır ki içlerinden çıkarılacak tek bir komut bile tüm zamanlamayı altüst edebilir. Daha da ilginci, $D011 adresinde bulunan Y pozisyonunu değiştirmenizin programın çalışmasını engellemesidir. Eğer $D011 kullanarak ekranı bir piksel aşağı alırsanız, bu özel satırlar da bir satır aşağı kayacak ve sizin programınızda belirlenen yerlere denk gelmeyecektir. Bunun sonucu olarak da programınız işe yaramayacaktır. Bu konuda sizi uyarmam gereken bir nokta daha var. Eğer bir satır üzerinde bir sprite bulunursa o C64'ünüz o sprite'ı gösterebilmek için o satırda sizin programınızdan biraz zaman çalmaktadır. Bu kadar uyarı ve açıklamadan sonra gelelim programın açıklamasına: $C000-$C032 arasında bildiğiniz sistemlerle interrupt'lar ayarlanır. Bu arada $C0F7 adresi sıfırlanır ve ekranın X pozisyonunu tutan adrese $C7 değeri verilir. Modu için bu değeri $D7 yapın rutininiz $31. rasterda başlar ve $C035 adresinde bulunur.

IRA Lda #$41D Sta $L018 Komutlarıyla karakter setinin yeri değiştirilir. adresine alınır.) Eğer 1D yerine $15 değerini kullanır- sanız normal karakter setine geçersiniz. Ldx #$1D Dex Bne Loop Rutinini kullanarak elektron ışınının istediğimiz yere

gelmesini sağlıyoruz.

Lda $COF8 Sta $DO16 ile x piksel-koordinatını ayarlıyoruz. Ldy # Jmp Başla komutuyla ilk satırın rengini ayarlanmasını sağlıyo- ruz. (ilk satırda bazı ayarlamalar yapılır unutmayın.)

Loop

Ldx # $00 Kısaltılır Ldy #$08 Başla Lda $COE2, X Renkver Sta $DO20 Sta $DO21

gördüğünüz gibi ilk olarak satırın rengini hiç vakit kaybetmeden veriyoruz. Inx Dey Bea Kısasatır Programın can alıcı noktası burası. Her sekiz satırda bir birazdan gireceğimiz bekleme rutinine uğramadan yeni renk verilir. Cpx #$11 Bes renkson tam $11-1 (= 16) satıra $C0E2 adresinden başlayan renkler verilecek. Eğer yeni datalar yazarsanız ve bu sayıyı bu datalara göre artırırsanız son sayının ekran rengini de ayarlayacağını unutmayın. Jsr Bekle sekiz tane NOP ve bir RTS'den oluşan zaman harcama rutinine gidiyoruz.

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