Commodore sayı 54, sayfa 49

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 49

LDX > X'i sıfırla $4002 LDA $0400,X > $0400'den X uzaklıktaki de- ğeri A'ya yükle $1005 STA $1000,X > A'yı $4000'den X uzaklıktaki adrese koy INX > X'i bir $4009 BNE $4002 > X—0 olana kadar 1002'ye git $1400B RTS > Programı bitir ve geri dön

Bu açıklamayı da yaptıktan sonra şimdide asıl konumuza geçelim. Önce interrupt'ın ne olduğuna ve nerelerde işimize yarayabileceğine değinelim. Interrupt kesinti vektörüdür. Her 1/60 saniyede, işletim sistemi kontrolü, bu vektör tarafından belirlenen rutine devredilir. Inter-

” bulunduğu adres $EA31'de başlamaktadır.

Vektörün adresleri $0314-$0315'dir. Bu adresler yazdığınız programın başlangıç adresinin alt ve üst byte'larıdır. Interrupt vektörünün gösterdiği adresteki program “JMP $EA31” ile bitirilir. Program interrupt tarafından kesildiği anda tüm X, Y ve A registerları saklanır. Böylece interrupt normal çalışan programa hiçbir şekilde karışmamış olur. Interrupt'ı kullandığımız yerler oldukça fazladır. Örneğin; basic programımızda müzik çaldırmak için bu vektörü kullanırız. Demo ve introlarda kullanılan programlama tekniği de her zaman interrupt'tır. Kısacası interrupt C-64'ün en önemli özelliğidir. Şimdi gelelim bu özelliğin nasıl kullanıldığı meselesine. Interrupt'ı kurarken önce tüm kesintileri önlemek gerekir. Bunu komutu halletmektedir. Yani programdaki ilk komut “SEI” olmalıdır. Sonra interrupt ile çalıştıracağınız programın başlangıcının alt ve üst byte'larını $0314-$0315 adreslerine yerleştirmeniz gerekir. Alt ve üst byte hesabı şu şekilde yapılır. Programınız örneğin $C050 adresinden başlıyor olsun. Bu durumda siz $0314 adresine #$50, $0315 adresine de #$C0 koymalısınız (Vektörlerde daima ilk adrese alt byte, ikinci adrese de üst byte yerleştirilir.). Burada #$50, $C050'nin alt byte'ı, #$C0 ise $C050'nin üst byte'ı olmaktadır. Bu işlemlerde bittikten sonra “CLI” komutu ile kesinti önleme sıfırlanır. Yani interrupt'ta bulunan program çalışmaya başlar. Artık normal işletim sistemine dönmek için “RTS” veya “JMP” gibi komutlar kullanılmalıdır. Böylece interrupt çalışırken siz bir basic program çalıştırabilir veya ekrana yazılar yazabilirsiniz. Gelelim interrupt vektörünün gösterdiği programın nasıl olması gerektiğine; Öncelikle programınızda kesinlikle SEI ve CLI komutu kullanmayın. Programınızın işlemi bittiğinde “JMP $EA31” ile kontrolü sistem rutinine devretmelisiniz. Ayrıca interrupt saniyede 60 kez devreye girdiğinden yaptığınız programın fazla uzun olmaması ve fazla zaman harcamaması gerekir. Eğer çok zaman harcayan bir program yazdıysanız alet yavaş çalışmaya başlar ve ekranda istenmeyen saçmalamalar oluşur. Bunu önlemek için yani “ANAHTAR” sistemini kullanmak gerekir. Bu sistemi daha sonra göstereceğiz. Şimdi bu konuda kısa bir program yazalım

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