C64 Türkiye sayı 6, sayfa 2
Sayfanın metni

Sayfa 2

Bu sayının program bölümüne hoş geldiniz. İlk olarak C64 için kısa programlarla yeni karakter setleri üretmeye devam ediyoruz. Birinci program C64'ün standart karakterlerini Y ekseninde simetrik olacak şekilde değiştiriyor. (5. sayıda ise X ekseninde -yatay- simetrik bir karakter seti elde etmiştik.) İkinci programımız yine karakter seti değiştirmeyle ilgili. Fakat ekrandaki yazıları okuyabilmek için monitörü sağa veya sola yatırmanız gerekmektedir. Karakter setleri programları önümüzdeki sayılarda da devam edecek. 1x1 olarak 2-3 tane kadar program kaldı. Daha sonra ise 1x1'lik seti 1x2, 2x1 ve 2x2 olarak değiştirmeye sıra gelecek. Bu arada belirtmekte fayda var. Bu programlar sadece standart karakter seti için kullanılabilir diye bir şart yok. Mesela elinizde 1x1'lik güzel bir karakter seti var. Önce bu seti $3000 adresinden itibaren yükleyin. Daha sonra aşağıdaki programı yükleyin fakat çalıştırmayın. RUN komutu yerine, programda “init” etiketli yere karşılık gelen adres için SYS 2105 komutunu verin. Böylece başka bir yerden bulduğunuz 1x1'lik bir karakter setinden yeni karakter setleri üretmiş olursunuz. Son olarak 1-2 ufak rutin vererek bu sayıdaki program bölümünü bitiriyoruz. Herkese iyi çalışmalar...

KARAKTER SET NO: 3

(C64ASM V1.1 ile compile edilecek şekilde yazılmıştır.)

*=$0801

.word nextline .word 2004 ; 2003 .byte $9e ; SYS .text "2061" ; 2061 .byte 0 ; komutu nextline .word 0

sei ; İnterruptları engelle lda $01 ; Karakter ROM'u and #$fb ; artık CPU tarafından sta $01 ; okunabilir

lda #$d0 ; ROM adresi = $D000 ldx #$30 ; RAM adresi = $3000 ldy #$00 ; olacak şekilde ayarla. sty $fb ; $FB ve $FC adreslerinde sta $fc ; ROM adresi tutuluyor. sty $fd ; $FD ve $FE adreslerinde stx $fe ; RAM adresi tutuluyor.

ldx #$10 ; Blok sayacı = $10 (16) transfer lda ($fb),y ; ROM'dan o anki adresi sta ($fd),y ; oku ve RAM'e kopyala iny ; byte sayacını 1 arttır bne transfer ; "0" değilse geri dön inc $fc ; ROM HIGH adresi 1 arttır inc $fe ; RAM HIGH adresi 1 arttır dex ; Blok sayacını 1 azalt bne transfer ; "0" olmadıysa geri dön.

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