Commodore sayı 65, sayfa 48

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 48

Onaltı baytlık bir tablo ve kısa bir program kullanarak iki baytlık bir adresi ekrana kolayca yazabildik. Eğer bu adresi onluk düzende yazmaya kalksaydık, bilgisayarınız için oldukça zor olan ondalık sayılarla işlem yapmanız gerekecekti, ve bunun sonucu olarak ya program yavaş çalışacaktı ya da çok uzun sürecekti. Bu da hex sayılarla çalışmak için yeterli bir sebep sanırım... Programımız artık adresi yazabildiğine göre programımızı genişleterek yazı kaydırma işini de halletmemiz gerekli. Bu iş için interrupt'ı kullanamadığımıza göre, $DO12'deki değer istediğimiz yere gelene kadar (son satıra güvenli bir uzaklık bırakarak kadar beklemeye karar verdim. Bu uzaklık kolaylıkla azaltılabilir.) beklememiz gerekiyor. Bu değer geçildiği anda ise $DO16'nın ilk üç bitini gerekli miktarda ayarlayarak ekranın kayma miktarını ayarlıyoruz. Daha sonra ekran bitene kadar bekliyoruz ($DO11'in son bitine bakarak bunu kolaylıkla anlayabiliriz). Şimdi kayan yazıların bir sonraki taramadaki durumlarını ayarlamamız gerekiyor. Bu iş için $CA10'da bulunan ekran kayma miktarını azaltmamız gerekli ilk önce. Hız ayarının da rahatlıkla yapılabilmesi için $CA21'de bulunan $CA10 değerini azaltan rutine sıçrıyoruz. Bu rutinden geri dönünce bu değerin sıfırdan küçük olup olmadığını kontrol ediyoruz. Eğer sıfırı geçmediysek, ekrandaki karakterlerin yana kaydırabilecek ($DO16 ile) yeri kalmış demektir, doğrudan diğer işlemlere geçiyoruz. Eğer sıfırdan küçük bir sayı varsa, en alt satırdaki karakterleri bir sola alıyoruz.

Bundan sonra, karakter tablosundan sıradaki harfi alıp satırın en sonuna yazıyoruz. Tabi ki bu tablodan okuma işlemini yaparken yazının bitmiş olma olasılığını da gözardı etmeyerek okunan baytın sıfır olup olmadığına bakıyoruz. Eğer sıfır değilse daha karakterler bitmemiş demektir. Sıfır olduysa tabloyu başa alıp ($C959 adresinde bulunan LDA komutunun $COSA, $C9SB adreslerinde bulunan hedef adresini $CDOO'ı gösterecek şekilde ayarlayarak) yeni bir karakter okuyoruz ve bunu ekrana yazıyoruz. Karakter okuduğumuza göre tablo adresini bir ileri almamız gerekli. Bu işi de INC $COSA, ge-

Program 3: Lda #$EL

And

Sta $DO16 ,C942 Lda

Jsr $CA21

$C97A; 'dan büyükse $COTA

, C932.Cmp $DO12 Bes $€932; El'den küçükse bekle Lda $DO16

Ora $CA10

Bpl $C942; Ekranın sonunu 1 bekle

rekliyse INC $C95B komutlarıyla yaptıktan sonra, ekran X pozisyonunu tekrar $07 yapıyoruz. Artık kayma işlemini tamamladık.

Bu aşamada kendi kendinize bulmanızı istediğim iki şey var. Birincisi bu ekran karakterleri kaydırma işini yapmak için neden ekranın bitmesini beklediğimiz (kolay olanı da bu). İkincisi de yukarıdaki programda hemen göze çarpmayacak, bazı durumlarda programın çalışmasını etkilemeyecek ufak hatayı bulmanız. Bunların cevaplarını'gelecek sayıda açıklayacağım. Ekranın her taramasında en az bir kere $02'nin 0'dan farklı bir sayı olmasını kontrol etmeniz gerekir. Eğer $02'nin değeri hâlâ 0 ise yüklemenize devam ediyorsunuz demektir, işinizi yapmaya devam edebilirsiniz. Eğer $02'de O'dan farklı bir değer varsa yüklemenin sonuna geldiniz demektir. Hemen KERNAL/ı yerine koyun, 02'yi sıfırlayın (gelecekte belki bir daha kullanmak zorunda kalırsınız) ve aşağıda göreceğiniz dört Jsr komutuyla giriş-çıkış alanlarını, Basic alanlarını, interrupt'ları vb. düzenleyin ve $FB,$FC adreslerinden program bitiş adresini alarak $2D, $2E'ye yazın. Bu sayede BASIC programlarının hatasız çalışmasını sağladıktan sonra, SAZAF' ye sıçrayarak programı çalıştırın.

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