Bu sayfadaki yazılar
Sayfanın metni
Sayfa 23
6049 INC $DO20 Renk kodu bir arttırılır.
Eğer çerçeve renginin kodu 15'den büyük olursa tekrar 0'dan başlanır, zira 5.-7. bit'ler kullanılmaktadır. Bundan sonra tekrar normal IRQ rutinlerine dönülür. 604C JMP $EA31 Bu şekilde yazı ekranının kenarlarındaki çerçeveler ele alınmış oluyor. Bundan sonra üst ve alt tarafta kalan bölümler ile uğraşacağız:
604F LDA # $00 6051 STA $DO20
Siyah rengin kodu çerçeve rengi registerine yazılır. Yazı ekranının yukarıdan başladığı Raster satırı Raster registerine yazılır. Tekrar normal IRQ rutinlerine dönülür
6054 LDA # $32
6056 STA $DO12 6059 JMP
Bu son bölümde üst ve alt kısmındaki bölümleri siyah olması gerektiğini belirttik. Kendi yazdığımız Interrupt rutini bu satırlarla sona ermiş oluyor. Yalnız istenildiği zaman bilgisayarın normal ekranına dönülmesi için birkaç satır daha eklememiz gerekmektedir. SYS 24668 ile C-64 ilk konumuna gelecektir.
605C 605D LDA # $00 605F STA $DOJA 6062 LDA # $31 6064 STA $0314
Interrupt kesilir. Raster-IRQ durdurulur.
IRQ vektörünün eski haline dönüştürülmesi Raster registerine yazılır. Tekrar normal IRQ rutinlerine dönülür.
6056 STA $DO12 6059 JMP $EASI
6067 LD # $EA 6069 STA $0315 606C LDA # $0E 606E ST $DO20 6071 CLI 6072 RTS
Açık mavinin renk kodu çerçeve registerine yazılır. IRQ'dan çıkılır.
Programımız artık tamamlanmış durumdadır. Çalıştırmadan önce diskete ve kaset'e kaydetmenizi tavsiye ederim. SYS 24576 ile programı başlattığınızda ekranın dış çerçevesinde renkli şeritler gözükecek ve aynı zamanda Cursor yanıp sönerek sizden emir bekleyecektir. Programımız bazı değişikliklere de olanak sağlamaktadır. POKE komutu ile 2 No.'lu adresteki değer değiştirerek çerçevedeki bantların kalınlığını istediğiniz gibi belirleyebilirsiniz. Yine POKE komudunu kullanarak 24645 adresindeki döngünün başlangıç değeri değiştirilebilir. Deneyerek göreceğiniz gibi bu tüm Interrupt programlarında süre oldukça önemli bir rol oynamaktadır. Eğer bu süreyi doğru olarak belirleyemezseniz ekranda istemediğiniz şeyler olacaktır. Örneğin yukarıdaki örneğimizde şeritler hareket etmeye başlar.
Program üzerinde değişiklik yapmaya olanak sağlayan diğer bir nokta da şeritlerin başlangıç ve bitiş değerleridir. Bu değerler program içinde yazı alanının yüksekliği ile aynı olacak şekilde ayarlanmıştır. POKE 24661, sayı ile şeritlerin başlangıç ve POKE
24635, X: POKE 24588, X ile de şeritlerin bitiş değerlerini değiştirebilirsiniz. Daha önce de belirttiğimiz gibi yazdığımız programda şeritlerin başlangıcı 50. Raster ve bitişi 248. Raster olarak belirtilmiştir.
Bu yazıdan edindiğiniz bilgilerle değişik Interrupt programları yazabilirsiniz. Yalnız hemen şunu belirtelim: Ekranı tarayan ve belli bir Raster'de VIC-Interrupt'ı başlatan elektron ışınının hızı çok yüksektir. Bu nedenle yazacağınız alt program fazla uzun olmamalıdır, zira daha işlem tamamlanmadan bir sonraki Interrupt başlayabilir.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 22
6034 JMP CIA-IRO normal rutinlerine atlar. için programımız: 6037 LDA $DO12 Hangi satırda IRO'nun baş- latıldığını belirlemek için
Raster Register'ine bakılır.
$603A CMP # $F8 Text ekranının sonu olup olmadığına bakılır. Eğer text ekranının sonu ise
$604F'ye atlanır.
Bundan sonraki program bölümü bir sonraki şerit için kullanılır.
603E CLC 603F ADC $02
603C BCS $604F
Toplama işlemi için hazırlık. Şeridin genişliği $02 adresinden alınır. Yeni değer Raster registerine yazılır.
6041 STA $DO12
Böylelikle bir öncekinden bir bant kalınlığı kadar aşağıda yer alan Raster satırı Interrupt başlangıcı olarak belirtilmiş olur. Bundan sonra ise deneme yoluyla ayarlanmış bir geciktirme döngüsü yer almaktadır.
6044 LDY # $03 6046 DEY Geri sayım 6047 BNE $DO20 Next Y (Y-0 olana dek)
Bir sonraki Raster Interrupt'ına kadar çerçeve rengi-
Döngü başlangıç değeri
VIC Interrupt'ına bakılır.
kesilir belirlenmesi
Yazı ekranının alt tarafındaki Raster satırı belirlenir
Karşılaştırma: Raster satırı — Yazı ekranının altı
Raster IRQ açılır.
Yazı ekranının
-Çerçeve rengi siyah, “Şerit kalınlığı 4 olarak
Şerit genişliği Raster Registeri'ne eklenir
Normal IRQ'ya dönüş, rutin değiştirilmesi, rutininin kapatılması
Raster-Interrupt'ı kesilir.
Normal vektörleri
Registeri silinir, başlatılır
Normal IRQ'ya dönüş
Çerçeve rengi siyah
Yazı ekranının üstündeki Raster satırı verilir.
Çerçeve rengi: Açık mavi
IRQ başlatılır.
Normal IRQ'ya dönüş
Resim 2; VIC-IRQ programının akış diyagramı