Commodore sayı 66, sayfa 43

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 43

Vedat Hallaç

Selam, makine dili uzmanı adayları. Demo veya intro yapabilmek için kullanılacak tekniklerin gizli kalmış yönlerini açıklamaya çalıştığımız yazı dizisi bu ay da devam ediyor. Bildiğiniz gibi, geçen sayıda takıldığınız herhangi bir nokta, öğrenmek istediğiniz herhangi bir teknik olursa, bana (Vedat Hallaç) yazmanızı ve takıldığınız rutini iyice açıklayarak, ne istediğinizi belirtmenizi istemiştim. Bu ay, İzmir'den Adnan ÖNCE-VARLIK adlı arkadaşınızın sorusuna cevap vereceğim. Unutmayın, yazıda ne kadar ilerlemiş olursak olalım, en basit konularda bile başa çıkamadığınız noktaları bana yazın. En kısa zamanda sorularınıza cevap vermeye çalışacağım. Arkadaşımız mektubunda, ekranın yarısının grafik, öteki yarısının karakter ekranı olmasını nasıl sağlayacağını sormuş. Biliyorsunuz bu efekt, adventure oyunlarında sık sık kullanılır. Ekranın üst yarısında bulunduğunuz sahnenin bir görüntüsü bulunur. Alt kısmında da sizin komutlarınızı girdiğiniz, ve bilgisayarın cevaplarını yazdığı karakter ekranı bulunur. Bu işlemi yapabilmek için, öncelikle raster interrupt'ların nasıl yapıldığını bilmeniz gerekir. Bu yazıda bu konuda kısaca bilgi vereceğim. Değişik türdeki interrupt'lar hakkında ayrıntılı bilgi almak için dergimizin 56. sayısını edinmeye çalışın. Şimdi raster interrupt'ını anlatmak için asıl soruna biraz ara vereceğim. Bu konudaki bilgisini yeterli görenlerin burayı okumasına gerek yok. Bilgisayarınız program çalıştırırken, bir interrupt sinyaliyle karşılaşırsa, işletimde bulunan ilk komutun bitmesini bekler, daha sonra sırasıyla A, X, Y register'larını, sıradaki komutun bulunduğu adresi ve status register'ını (flag'leri) Stack'e (yığına) atar ve $0314-$0315 adreslerinde alçak-yüksek bayt formatında (high-low byte. Mesela $0810 yazmak için $0314'e $10, $0315'e $08 değerleri verilir) bulunan adrese sıçrar. Diyelim ki programınız $8000'de ve $8008 adresindeki Lda $80FF komutunu işletiyor. O anda raster interrupt sinyali geldi (acele etmeyin. Raster sinyalinin ne olduğunu da anlatacağım) Lda $80FF komutu işini bitirir bitirmez, gerekli register'lar ve $800B adresini yığına atar. Daha sonra $0314-$0315 adresinde bulunan (diyelim ki) $00-$C0 değerleri alınır, ve bu değerlere bakılarak $C000 adresine sıçranır. Bu programda yazmak istediğiniz şeyleri yaptıktan sonra,

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