C64 Türkiye sayı 6, sayfa 14

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 14

mirror jsr $73 ; parametre varmı kontrol et bne mir0 ; varsa git. mir_err jmp $af08 ; yoksa “syntax error” yazdır mir0 cmp #$56 ; parametre “V” mi? beq vertical ; evetse “vertical” kısmına git cmp #$48 ; değilse kontrol et. “H” mi? bne mir_err ; değilse hata yazdır. Evet ise devam et.

horizontal lda #$00 ; Akü=0 ldx #$18 ; X=0 sta up ; Aküdeki değer “UP” değişkenine sta byte ; Aküdeki değer “BYTE” değişkenine stx down ; X’teki değer “DOWN” değişkenine

one_line ldy byte ; Y registerine “byte” değişkenini yükle horiz ldx up ; X registerine “up” değişkenini yükle jsr scrcalc ; ekran ve renk belleği adreslerini hesapla lda $fb ; $FB adresindeki değeri al sta $fd ; $FD adresine kopyala lda $fc ; $FC adresindeki değeri al sta $fe ; $FE adresine kopyala lda $02 ; $02 adresindeki değeri al sta $04 ; $04 adresine kopyala lda $03 ; $03 adresindeki değeri al sta $05 ; $05 adresine kopyala lda ($fd),y ; ekrandaki karakteri al pha ; yığına at lda ($04),y ; renk belleğindeki değeri al pha ; yığına at ldx down ; X registerine “down” değişkenini yükle jsr scrcalc ; ekran ve renk belleği adreslerini hesapla lda ($02),y ; renk belleğindeki değeri al sta ($04),y ; kopyala lda ($fb),y ; ekrandaki karakteri al sta ($fd),y ; kopyala pla ; yığındaki değeri al sta ($02),y ; renk belleğine yaz pla ; yığındaki değeri al sta ($fb),y ; ekrana yaz iny ; Y registerinin içeriğini 1 arttır cpy #$28 ; $28 (40) oldu mu ? bne horiz ; olmadıysa tekrarla.

Yukarıdaki kısımda değişkenlere ilk değerleri yüklendikten sonra, ilk önce X registerine yüklenen “UP” değişkeninin değerine göre (ilk satır için) ekran ve renk belleklerinin adresi hesaplanıyor. Bu adresler yedekleniyor. Daha sonra “BYTE” değişkeninin değerine göre ekran belleğindeki ve renk belleğindeki değerler okunup yığına atılıyor. Sonra X registerine “DOWN” değişkeni yükleniyor ve (en alt satır için) ekran ve renk belleği adresleri elde ediliyor. Daha sonra ekran ve renk belleğindeki değerler okunuyor. Bu değerler daha önce yedeklediğimiz adreslere yazılıyor. Daha sonra ise yığındaki değerler geri alınıp o anki renk ve ekran belleğine geri yazılıyor. Böylece en üst ve en alttaki satırların ilk byte’ları yer değiştirmiş oluyor. Y registerinin değeri 1 arttırılıp 40 olup olmadığı kontrol ediliyor. 40 olmadıysa aynı satırların bir sonraki byte’ları için işlemler tekrarlanıyor.

ldy #$00 ; Y registerini sıfırla sty byte ; “BYTE” değişkenine kopyala inc up ; “UP” değişkenini 1 arttır dex ; X registerini 1 azalt. stx down ; “DOWN” değişkenine kopyala cpx #$0c ; X= $0c mi? (12-yani ekranın ortasındaki satır) bne horiz ; olmadıysa işlemleri yeni satır için tekrarla. jmp $a7e4 ; olduysa kontrolü Basic Rom’a devret

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