Bu sayfadaki yazılar
Sayfanın metni
Sayfa 50
$CO0O SEl — > Tüm kesintileri önler. $CO0O4 LDA # — > A'ya alt byte'ı yükle. $CO0O3 STA $0314 — > A'yı $0314'e koy. sC0O06 LDA # $CO —- > A'ya üst byte'i yükle, SCO0O STA 80315 — > A'yı $0315'e koy,
$COOC RTS (veya) JMP $474 -— > İşletim sistemine ge- ri dön veya ekrana READY yazarak geri dön. Yukarıdaki program interrupt'i ayarlayan program- dı. Şimdi interrupt'ta çalışmasını istediğimiz programı yazalım.
SCOAB LDX # $00 $COA2 STX $DO20 SCOAS INX $COA6 BEO SCOAB $COA8 JMP SCOA2 JMP SEA31
Bu program kenar yani border renklerini devamlı değiştirmektedir. Bu sırada siz takipçiyi kullanabilirsiniz. Yani sizinde anladığınız gibi interrupt aletin işletim sisteminden bağımsız çalışmaktadır. Ancak üstteki programın en sonundaki “JMP $EA31” yerine “JMP
$EA81” veya “JMP $FEBC” koyarsanız ekranda takipçi görünmeyecektir. Sizin tüm müdahaleleriniz etkisiz kalacaktır. Çünkü siz interrupt'ı bu şekilde ayarlarsanız bilgisayar takipçiyi vermemektedir. Bu sayede inter-
Lİ
rupt programınız daha hızlı çalışır. Yukarıda anlattığımız interrupt şekli en basit halidir. Interrupt'ın değişik şekilleri ve özellikleri vardır. Ancak biz bu sayıda bu kadarlık bir kısmı gösterdik. Şimdi sizi interrupt ile daha fazla sıkmadan ilginç bir konuya geçelim. Interrupt konusunu basitçe gördükten sonra artık introlardaki alt programları (Sub-routine) anlatmaya başlayalım. İlk önce her intro veya demonun ana bölümünü oluşturan hatta oyunlarda da sıkça kullanılan bir teknikten bahsedelim. Bu tekniğin adı “SCROLL” yani “KAYDIRMA”. Ancak scroll'un titreyerek kayması hiçbirimizin hoşuna gitmez. Bu yüzden biz size “SMOOTH SCROLL” yani “DÜZ KAYDIRMA”yı anlatacağız. Bu tekniğin mantığı şu şekilde açıklanabilir. C-64'ün içindeki $D016 (53270) adresi ekran kaydırması ile ilgili olan adrestir. Daima bu adresle scroll'u yapacağız. $D016 adresi 0'dan 7'ye kadar değerler almaktadır. Bu değerleri verdiğinizde ekran soldan sağa doğru kayar. Ancak harfler bir karakter yana kaymamaktadır. İşte scroll ile bu harflerin bir yan karaktere kayması sağlanır. Eğer scroll'u bir satırda yapmak istiyorsanız bu olayı şöyle anlatabiliriz. $D016 adresine 7'den 0'a kadar değerler verdikten sonra o satırdaki tüm karakterler bir sola atılır. Bunu daha önce anlattığımız transfer ile yapabilirsiniz. Küçük bir program örneği vermek gerekirse şöyle bir alt-rutin yazabiliriz.
1000 > Kesinti önleme bif'ini 1 yap 1004 LDY $1400 > Y'ye $1100'deki değeri yükle 1004 STY $0427 > V'deki değeri S0427'ye koy 1007 LDX # $00 > X'e 00 yükle 1009 LDA > $0401'den X kadar uzaklıkta- ki değeri accumulator'e yükle STA $0400,X > Accumulator'deki değeri $0400'den X kadar uzaklığa koy 400F INX > X'i bir arttır 1040 CPX # $27 > X'i 27 ile karşılaştır 1012 BNE $4009 > olana kadar $1009'a git 1014 LDX# $97 > X'e O7 yükle 1046 STX SDO16 > X'i SDO16'ya koy 1049 LDA $D012 > $DO12'deki değeri A'ya yükle 404C CMP > A'yı 8B ile karşılaştır 404E BNE $1046 > A—3B olana kadar 1016'ya git 1020 LDA # $00 > A'ya 08 yükle 1022 STA $DO16 > A'yı $DO16 adresine koy
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 51
1025 LDA $D012 > $DO12'deki değeri A'ya yükle 1028 SFF > A'yı FF ile karşılaştır 102A BNE > Az-FF olana kadar 1020'ye git 102C DEX > X'i bir azalt 102D SFF > X'i FF ile karşılaştır 102F BNE > olana Kadar 1016'ya git
4031 INC $4002 > değeri bir arttır 4034 JMP > $1001'e sıçra. Şimdi bu programın anlattığımız mantıkla ilgili açıklamasını yapalım. 4001-4007: Scroll'umuzun karakter değerini alır ve ekranın sağ ucuna basar. 4007-4014: Ekranın en üst satırındaki karakterleri bir sola atar. 4014-4020: Ekranın #$38'ye kadar olan kısmında $D016 değerini #$07 yapar 4020-402C: $3B'den $FF'e kadar kısmında $08 yapar. 402C-4031: $3B'ye kadar olan $D016 değerini $FF'e kadar tek azaltır. Her bir azalmada $D016'ya gider. Değer $FF olduğunda bir sonraki satıra devam eder. 4031-4034: Scroll karakterlerini alan adresi bir arttırır. 4034: İşlemleri tekrarlar. İşte bu kısa program ile ekranın en üst kısmındaki yazıları kaydırabilirsiniz. Bu program kaydırdığı karakteri $1100 adresinden almaktadır. Dikkat ederseniz yukarıdaki programda interrupt kullanmadık. Ancak bilgisayar yalnızca en üst satırda scroll yapmaktadır. Bu olayı C-64'ün $D012 adresi ile yapmaktayız. Bu konuyu da gelecek sayımızda detaylı bir şekilde açıklayacağız. Gelecek sayıda yalnız $D012 ile değil interrupt ile de ilgileneceğiz. Şimdilik bol klavyeli ve mutlu günler dileriz.
06 Aş sı