merhaba nightlord,
stradr1 = $0400
stradr2 = $0428
stradr4 = $0478
.
.
.
.
.
lda #
sta $fa
lda #>satir1
sta $fb
lda #
sta $fc
lda #>stradr1
sta $fd
jsr satirbas
satirbas
ldy #$00
loop
lda ($fa),y
beq out
sta ($fc),y
iny
cpy #$28
bne loop
out
rts
satir1 !scr "bu satir ekranin en ustunde yer alacak"
!byte 0
aslına bakarsanız sizlere karşı bu defa yazılı düşünme gereğini hissettim:
bir özet yapacak olursam :
yukarıdaki örnekte;
stradr1 = $0400
stradr2 = $0428
stradr4 = $0478
öncelikle bu üç satırla, videomatrixte karakterlerin basılacağı satır numaraları hex adres tanımları olarak atandı.
en alttaki satir1 etiketinin 2 byte 'lık hex adresi
lda #
sta $fa
lda #>satir1
sta $fb
koduyla;
küçük byte aküye sonra fa adresine
büyük byte aküye sonra fb adresine yazıldı.
ve ;
lda #
sta $fc
lda #>stradr1
sta $fd
koduyla satır adresleri
küçük byte aküye sonra fc adresine
büyük byte aküye sonra fd adresine yazıldı.
ve jsr satirbas
burada y register ındaki 00 değeri indexli olarak lda (fa),y kullanımından doğan ardışık adreslere indexli olarak eklenip aküye atıldı.beq satırı out etiketine henüz gitmiyor çünkü sanırım y deki değer 28 değil.(AMA ŞUNU ANLAMADAIM BEQ kendinden önce gelen son satıra göre işlem yapmıyormu ? yani beq burda hangi karşılaştırmaya ait dallanma sağlıyor ?) ve sta ($fc),y satırıyla fc,fd ye yazılmış olan stradr1 in adres değeri yerinden itibaren aküdeki değeriyle basıldı. y 1 artırıldı 28 e eşit olasaya kada döngü döndü.
anlatımım biraz karışık olabilir, ama beq satırı haricinde anladım (mı) sanırım.
satir1 !scr "bu satir ekranin en ustunde yer alacak"
!byte 0
birde burada "!byte 0" napıyor onu anlamadım.ve son sorum fa,fb,fc,fd, adresleri c-64 te null' mı? fe,ff de böylemi ? başka böle boş adresler var mı?
bu arada izmir hatay b.evler de oturuyorum.
saygılarımla,