DİKEY –Y EKSENİNDE– SİMETRİK KARAKTER SETİ PROGRAMI

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.
lda
$01
; I/O bölgesi eski haline
ora
#$04
; getiriliyor. CPU artık
sta
$01
; karakter roma erişemez
cli
; interruptlara izin ver
init
lda
#$1c
; VIC'e yeni karakter
sta
$d018
; setinin yerini bildir.
new_fonts
lda
#$30
; Karakter seti başlangıç
ldy
#$00
; adresi $3000 olarak
sty
$fb
; $FB ve $FC adreslerine
sta
$fc
; kaydediliyor
loop3
ldy
#$00
; Y registeri byte sayacı=0
loop2
ldx
#$08
; "bit" sayacı
lda
#$00
; Geçici adresi
sta
$02
; sıfırla
loop0
lda
($fb),y
; O anki adresin değerini oku
loop1
ror
; bir bit sağa döndür - 7. biti carry'e koy
rol
$02
; bir bit sola döndür. Carry’i 7. bite koy
dex
; bit sayacını 1 azalt
bne
loop1
; sıfır olmadıysa tekrarla
lda
$02
; geçici adresi oku
sta
($fb),y
; o anki adrese geri yaz
iny
; byte sayacını 1 arttır
bne
loop2
; sıfır olmadıysa bir byte daha oku
inc
$fc
; Karakter setinin HI adresini 1 arttır
next_char
lda
$fc
; HI adresi al
cmp
#$40
; #$40 oldumu? Olmadıysa
bne
loop3
; işlemleri tekrarla
rts
; Olduysa programı bitir.
.end

Yeni karakter setine ait ekran görüntüsü.

vs...) yardım edebilecek editörler aranıyor. Yardım etmek isteyenler kendilerini tanıtan ve ilgilendiği bölümleri belirten bir e-maili c64turkiye@yahoo.com veya hades@hi3s.org adreslerine atabilirler.