Sayfanın metni
Sayfa 14
C64 TÜRKİYE #8 14 sty $fd stx $fe lda #$80 sta char_cnt Bu bölümde yine adres ayarlamaları yapılıyor ve karakter sayısı belirleniyor. loop2 ldy #$00 loop0 lda ($fb),y sta temp,y iny cpy #$08 bne loop0
Y registerini bayt sayacı olarak kullanmak üzere sıfırlıyoruz ve Ramdaki karakter setimizdeki o anki karaktere ait 8 baytı okuyup geçici olarak saklıyoruz. ldx #$00 ldy #$00 loop1 lda temp,x sta ($fb),y iny sta ($fb),y dey lda temp+4,x sta ($fd),y iny sta ($fd),y iny inx cpx #$04 bne loop1
Normalde C64'ün karakter setinde bir karakterin hem normal hem de negatif şekilleri vardır. Daha önce karakter setimizi $3000-$4000 arasına taşımıştık. Normalde C64'te 2 adet karakter seti vardır ve setler arası geçiş "SHIFT-COMMODORE" tuşlarıyla yapılır. ROM'daki birinci set $D000-$D7FF, ikinci set $D800-$DFFF arasındadır. Buna göre RAM'da $3000-$37FF adresleri arasında 1. set, $3800-$3FFF arasında 2. set bulunacaktır. Bizim programımız 1. set ile işlem yapacaktır. $3000-$33FF arasında karakterlerin normal şekli, $3400-$37FF arasında ise negatif şekilleri vardır. Bir karakterin normal şeklinin ekran kodu 0-127 arasındadır, bu kodların 128 fazlası ise karakterin negatif şeklinin kodudur. Bizim programımız bir karakteri uzatırken hem normal, hem de negatif şekil bilgilerinin bulunduğu bölgede işlem yapmaktadır. Bu kısa bilgiden sonra işlemleri anlatalım. İlk olarak X ve Y registerlerini sıfırlıyoruz. Sonra ise daha önceden geçici olarak sakladığımız ilk baytı okuyup ilk karakter için $3000 ve $3001 adreslerine yazıyoruz. Daha sonra geçici olarak sakladığımız baytlardan 4. baytı alıp $3400 ve $3401 adreslerine yazıyoruz. Bu işlemleri 4 kez tekrarlayınca ilk karakterimizin boyunu uzatmış oluyoruz. Daha doğrusu 1x1'den 1x2'ye dönüştürmüş oluyoruz. lda $fb clc adc #$08 sta $fb sta $fd bcc no_hi inc $fc inc $fe no_hi dec char_cnt bne loop2
Bir sonraki karakterin boyunu uzatmak için gerekli hesaplamaları yapıyoruz. Karakter sayacını 1 azaltıyoruz ve sıfır oluncaya kadar yukarıdaki işlemleri tekrarlıyoruz.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 15
lda #$01 jsr $e536
Bütün işlemler bittikten sonra yazı rengi beyaz olacak şekilde ekranı siliyoruz. lda #$1c sta $d018
Yeni karakter setini aktif hale getiriyoruz. ldx #$00 stx $d021 loop3 lda text,x sta $04a0,x clc adc #$80 sta $04a0+$28,x inx cpx #$0e bne loop3 rts
Son olarak ekran koduyla bir yazı yazıyoruz. İlk satıra yazdığımız bir karakteri $80 ile toplayıp bir alt satıra yazıyoruz. text .scrl "c64 turkiye #8" ;deneme yazısı char_cnt .byte 0 ;karakter sayacı temp .byte 0 ;geçici saklama yeri .end