Commodore sayı 67, sayfa 24

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 24

bi ki. (Burada okuduklarınız, ne yapa- cağına karar veremeyen programcıların genelde düşündüğü şeylerin bir özetidir. Kendi kendilerine yaptıkları bu tartış- ma genelde bir-iki güne kadar uzaya- bilir.) Ama biz hem ekranın aşağı kaldır- mayı, hem de renk dizmeyi bilmiyoruz ki. Şimdiye kadar anlattığım rutinler, bir raster satırında en fazla bir işlem ya- pabiliyordu. Aslında çok da zor değil hem ekranı aşağı kaydırıp hem de renk dizmek, Hatta DMA satırları ortadan kalktığı için tek zamanlamayla tüm sa- tırların en başında işlem yapmanız ga- ranti edilmiş durumdadır. Yani yapa- cağımız tek iş, ekranı bir satır aşağı kay- dırmak, hemen sonra ekran rengini de- ğiştirmek ve ekran kaydırabileceğimiz noktaya gelmeyi beklemek. Pek de zor gibi görünmüyor değil mi? Deneyin de görün ne kadar kolay olduğunu. Dene- mek gibi bir niyetiniz yoksa, Tablo-2'ye

bir göz atarak ekranı istediğiniz kadar aşağı renkli olarak kaydıran rutinin kı- salığını görün. kısaca rutinin yaptığı işi anlatayim: İlk iki NOP komutunu kullanarak,

tam ekranı kaydıracak noktada elektro- nu kontrol altına alıyoruz. Sonra ilk üç bitinde bulunan Y po- zisyonunu bir aşağı aliyoruz. Tüm baytı değil, yalnızca ilk üç biti değiştirmeye

çalıştığımız için sonucun ilk üç bitinden

başka tüm bitlerini izole ediyoruz, ve bu bitleri, 25 satırlık karakter ekranın tanımlayacak bitlere ORA'lıyoruz. Bu sonucu $DOİ1'e yazdığımızda, ekranın bir nokta aşağıda olduğunu sanıyor bil- gisayarımız. Sonra ilk ren- gi alıp $DO20 ve $DO21 adreslerine (çer- çeve ve ekran rengine) yazıyoruz. Y'yi 4'den geri saydırıp üç de NOP bekle- tince, elektron için gerekli zamanlamayı yapmış oluyoruz. Y'yi 4'den geri saya- cağımızı ve üç NOP koyacağımızı na- sıl mı buldum? Kolay. Önce Y”'yi 0-8 arası bir değerden geri saydırdım ve hiç NOP kullanmadım. Olmadı tabii ki. Kafadan attığım (Tabii ki destekli at- tım. İlk değerin az, çok veya aşırı çok gelmiş olduğunu renklerden ve ekranın yamulmasından anlayabiliriz) ikinci bir değeri denedim, ve bu şekilde dört de- ğerini buldum. Tabii ki tek başına dört işe yaramadı. Beş veya üç kullanınca da olmadığına göre, işimiz NOP'lara kal- dı diye iki NOP attım. Neyse ki ilk de- mede tuttu. Yoksa duruma göre iki NOP yerine bir BIT $EA kullanmam gerekecekti. Niye mi $EA? BIT komu- tunun kodunu $BA yaptığım zaman ikinci baytın da direk olarak NOP ol- ması için. BIT $00 kullanarak da za- manlama tutturulurdu, ama ilk baytı NOP yapıp bırakırsanız artan $00 bay- tını da NOP yapmanız gerekecekti.

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