64'ler sayı 21, sayfa 45

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 45

SEI yetkisini set eder. Bu; IRQ flag = 1 iken interruptlar kaale alınmaz (kompüterin kendi interruptları). CLI, IRQ flag'ı clear eder. Interruptları kabul eder.

İşte IRQ rutini kullanılarak çalışacak bir program: C010 INC $D020 C013 JMP $EA31 Yukarıdaki rutini yazdıktan sonra assembly dilini C000 bölgesinde run et. Ekran kırpışmaya başlayacaktır. Bu olur çünkü ekranın rengi çok çabuk değişir, gözle takip zor olur. NOT: IRQ vektörünü değiştirirken IRQ flag'ı daima set et. Vektörü değiştirdikten sonra CLI komutu kullanarak IRQ flag'ı clear edebilirsin. BRK (Force Break) BRK, IRQ gibi bir interrupt'tur. Bununla beraber BRK bir komuttur. BRK komutu kullanıldığı zaman zum 0316 ve 0317 bölgesine yapılır. Vektörü rutin olan herhangi bir yere değiştirmek için kullanılabiliriz. Önce BRK hakkında daha fazla öğrenmeliyiz. BRK edildiği zaman vektör kanalı ile diğer bir rutine atlar. RTI komutu ile geri dönülür. RTI, RTS gibidir. Yalnız subroutine yerine interrupt'tan döner. RTI komutu execute edildiği zaman PC değeri alınır ve 2 arttırılır. Bunun nedeni bir sonraki adrese geri dönmeyecektir, bundan sonrakine gidecektir. Bu demek oluyor ki BRK'den sonraki bölgeyi doldurmalıyız. Bu bölgeyi NOP komutu ile doldurabiliriz. Bu komut hiçbir şey yapmaz sadece yer doldurur. Bu nasıl çalıştığını gösterir: C000 BRK (bu kompüterin vektöre gitmesini sağlar) C001 NOP (Bu komut atlanır) C002 (Kompüteri RTI komutundan sonra bu komuta getirir) Aşağıdaki program BRK vektörünü değiştirir, sonrada BRK komutu kullanır. C000 LDA #$10 C002 STA $0316 C005 LDA #$C0 C007 STA $0317

COOA — BRK NOP cooc RTS

Bundan sonraki rutini girmeden programı run'lama: C010 INC $0286 RTI Bu programı C000 bölgesinde her run edişinde cursor rengi değişecektir. Bu olur çünkü BRK komutu 0286 bölgesini arttırır ki bu bölge hali hazır cursor rengini belirtir. Bu konuda herhangi bir test yok. Konuyu iki kere okuyun. İnterrupt'larla uğraşırken çok dikkatli olun.

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