Commodore sayı 19, sayfa 60

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 60

100 - ;AD'YE $E000 DEĞERİNİ ALMA 110 - LDA : O 120 - LDX O 130 - ETİKET2 LDY * O 140 - ETİKETİ STA (AD),Y 150 - INY 160 - BNE ETİKETİ 170 - - AD 4 $0100 Rİ

180 - INX 190 - CPX # 32 200 - BNE ETİKET2

İndirekt indeksli adreslemede, AD değişkeni iki byte'lık bir göstergeç olmalı; yukarıdaki gibi absolut değer olmamalı. Sıfırıncı sayfadan kendimize uygun iki (boş!) byte bulmamız gerekmekte. $FA ve $FB adresleri, bu iş için ideal! Döngüye girmeden önce göstergecimiz $E000 değeri ile yüklenmelidir. Bunun için, düşük değerli byte (800) SFA'ya, yüksek değerli byte (SEO) SFB'ye gitmelidir. Dikkatli okurlarımız hemen farketmiş olacaklardır; göstergecimizin değerini $100 artırmak için yüksek değerli kısmı barındıran byte'ın değerini bir artırmak yetecektir. Programımızın sonuna bir de RTS ekledik mi, hiç bir eksiğimiz kalmayacak:

90- .BA $C420 100- LDA # < ($E000)

102- STA $FA 104- LDA # >($E000) 106- STA $FB 110- LDA O 120- LDX O 130- ETİKET2 LDY : O 140- ETİKETİ STA ($FA),Y 150- INY 160- BNE ETİKETİ 170- INC $FB 180- INX 190- CPX # 32 200- BNE ETİKET2 210- RTS

Bu parçanın, başlangıç adresi $C420'dir. Hatırlayacağınız gibi, ilk iki programımızın hemen arkasından gelen boş adresti bu. Programımızı assembler'dan geçirdikten sonra şöyle bir görüntüye bürünür:

C420 A9 00 LDA * $00 C422 85 FA STA $FA C424 A9 EO LDA $E0 C426 85 FB STA $FB C428 A9 00 LDA $00 C42A A2 00 LDX $00 C42C A0 00 LDY * $00 C42E 91 FA STA ($FA),Y C430C8 INY C431 DO FB BNE $C42E C433 E6 FB INC $FB C435 E8 INX C436 E0 20 CPX $32 C438 DO F2 BNE $C42C C43A 60 RTS

Bu programı biraz daha kısaltmak mümkündür. Mesela, register'lerin hepsini ilk satırda sıfırlamak ve bunu transfer komutlarıyla yapmak (TAY, TAX gibi); bunlardan başka, döngünün içinde X-registerini 0'dan 32'ye değil de 32'den 0'a doğru geriye saydırırsak döngüden çıkmak için CMP $00 komutuna gerek kalmayacağı için, hem programın uzunlu- Bundan tasarruf edeceğiz, hem de kısmen hız sağlayacağız. Fakat, bu değişikliklerle programın veriminde gözle görülür bir artış sağlamayacağı için bu değişiklikleri sadece öneri ve bilgi olarak bırakalım. İlk iki programımızın da o anda hafızada bulunduğunu varsayarak ufak bir deneme yapalım. Aşağıdaki satır şimdiye kadar yazdığımız programların bize güzel bir gösterisini yapacaktır:

SYSS0176:POKE198,0:WAIT198,

1:SYSS0192

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