Gönderen Konu: Bu kod neden calismaz????  (Okunma sayısı 12003 defa)

Bu kod neden calismaz????

« Yanıtla #15 : 05.10.2005 01:02:35 »
Hızlı düğmeleri aç

Wisdom

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
Selam,

Eger tum istedigin print gibi bir islevse, kisa yoldan asagidakini kullanabilirsin:

lda #ldy #>text
jsr $ab1e      ; basic-rom print

Yok, eger istedigin bu tip seylerin arka tarafini ogrenmekse, o zaman arkadaslar sana yardimci oluyorlardir. :-)

(Tum post'u okumadim, tekrar olduysa kusura bakmayin.)

(Guney Hindistan'da gecenin 3:30'unda proje mailleri yazmaktan bikmis olup da foruma giren Wisdom'dan sevgiler.)

Bu kod neden calismaz????

« Yanıtla #16 : 05.10.2005 16:08:35 »
Hızlı düğmeleri aç

Bakkada

İleti: 1.073

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
yok mu bana bu islemleri annaticak biri???
bu arada sunu da yazdim

lda #clc
adc #sta <$0400
lda #>text1
adc #>text2
sta >$0400

text1:
!scr "o"
text2:
!scr "t"

end:
jmp end

bu kodda bir syntax hatasi yok ama kodun yaptigi bi iste yok :) kodu calistirdigimda ekran temislenip ready yasio.

Yardimlariniz icin tesekkurler.

Bu kod neden calismaz????

« Yanıtla #17 : 05.10.2005 16:56:45 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Alıntı
Originally posted by Bakkada@Oct 5 2005, 03:08 PM
yok mu bana bu islemleri annaticak biri???
bu arada sunu da yazdim

lda #clc
adc #sta <$0400
lda #>text1
adc #>text2
sta >$0400

text1:
!scr "o"
text2:
!scr "t"

end:
jmp end

bu kodda bir syntax hatasi yok ama kodun yaptigi bi iste yok :) kodu calistirdigimda ekran temislenip ready yasio.

Yardimlariniz icin tesekkurler.
[post=2190]Quoted post[/post]
[/b]

ı ıh bakkada, olayı henüz tam kavrayamamışsın. bu kodun birşey yapmaması gerekiyor zaten :)

diyelim ki "text1" etiketi hafızada $0830'a denk geliyor, "text2" ise bu durumda $0831 olur. Şimdi bakalım senin kodun ne yapıyor...

lda #clc
adc #sta <$0400 = sta $00
lda #>text1 = lda #$08
adc #>text2 = adc #$08
sta >$0400 = sta $04

yani senin kodun

lda #$30
clc
adc #$31
sta $00
lda #$08
adc #$08
sta $04

budur. Yaptığı iş ise

$0000 adresine $61 değerini girmek ve $0004 adresine ise $10 değerini girmektir.

Ne yapmak istediğini az çok anlar gibi oldum ancak sen şimdilik Nightlord'un çizdiği yolda ilerlemeye devam et. Ekrara "ot" bastırmak istiyorsan o zaman doğrudan

lda text1
sta $0400
lda text2
sta $0401

falan gibi birşeyler demen lazım. O toplama işlemi ancak şu durumda geçerli olur.

Şimdi sana güzel bir örnek yazayım satır satır yazı yazdırmak için


Kod: [Seç]
* = $0801
!byte $0b, $08, $00, $00, $9e, $32, $30, $36, $31, $00, $00, $00
!to &quot;test.prg&quot;

stradr1 = $0400
stradr2 = $0428
stradr4 = $0478

* = $080d

lda #$01
jsr $e536

lda #<satir1
sta $fa
lda #>satir1
sta $fb
lda #<stradr1
sta $fc
lda #>stradr1
sta $fd
jsr satirbas

lda #<satir2
sta $fa
lda #>satir2
sta $fb
lda #<stradr2
sta $fc
lda #>stradr2
sta $fd
jsr satirbas

lda #<satir4
sta $fa
lda #>satir4
sta $fb
lda #<stradr4
sta $fc
lda #>stradr4
sta $fd
jsr satirbas

jmp *

satirbas
ldy #$00
loop
lda ($fa),y
beq out
sta ($fc),y
iny
cpy #$28
bne loop
out
rts

satir1 !scr &quot;bu satir ekranin en ustunde yer alacak&quot;
!byte 0
satir2 !scr &quot;bu ise ikinci satir olacak&quot;
!byte 0
satir4 !scr &quot;bu satir dorduncu satir olarak basilacak&quot;
!byte 0

Daha pratik yöntemler var ama bu sanırım senin için "pointer kullanımı" açısından en anlaşılanı olacaktır.

lda ($fa),y

gibi bir kulanım şunu yapar. $fa adresindeki byteı low byte ve $fb adresindeki byteı high byte olarak alır ve o adrese y değerini ekleyerek o değeri accumulator'e aktarır.

sta ($fc),y

ise aynı şekilde $fc ve $fd'den aldığı hafıza adresine y ekler ve o adrese accumulator'ün değerini yazar.

diyelimki $fa, $fb, $fc ve $fd'nin değerleri şu şekilde olsun;

$fa = $30
$fb = $08
$fc = $00
$fd = $04

ve y registerında da 5 değeri olduğunu varsayalım. Bu durumda

lda ($fa),y
sta ($fc),y

demek olur ki

lda $0835
sta $0405

bunu anlayabildiğin zaman olayı çözeceksin Bakkada :)

Bu kod neden calismaz????

« Yanıtla #18 : 05.10.2005 17:28:13 »
Hızlı düğmeleri aç

Bakkada

İleti: 1.073

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
Ciktisini adim aksam ewde sakin kafayla calisicam uzerinde cok tesekkur ederim....

Bu kod neden calismaz????

« Yanıtla #19 : 07.10.2005 23:18:01 »
Hızlı düğmeleri aç

Bakkada

İleti: 1.073

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
to "out.prg"
* = $c000

VM_SATIR_0 = $0400 + (0 * 40)

lda #0
sta $d020
sta $d021

loop1:

ldx #0
loop2:
lda VM_SATIR_0+1,x
sta VM_SATIR_0,x
inx
cpx #39
bne loop2


read:
lda text_source
sta VM_SATIR_0+39
inc read+1

ldy #$40
ldx #0
delay:
dex
bne delay
dey
bne delay

end: jmp loop1

!align 255,0
text_source:
!scr "merhaba dunya... iste karsinizda yazdigim "
!scr "ilk scroll rutini... henuz smooth degil ama "
!scr "onemli degil. onu da bi kac gune kadar yapmis "
!scr "olacagim zaten. greetings to ali, veli, 49, 50..."
!scr "the new codemaster signs off..."
!fill $2c,$20


bu kodu aynen yazdigimizda butun text gectikten sonra belli bir miktar garip "C" karakteri ardindanda gene garip bir karaakteri belli bir miktarda basiyor ve gene textin en basina donuyor...

Ne yaptiysam olmadi ve nerden kaynaklandigini da bulamadim.... :(
Umitsizlige kapilmaya basliorum....


Not:Kod NightLord'un sitesinden alintidir.

Bu kod neden calismaz????

« Yanıtla #20 : 08.10.2005 01:37:49 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Normaldir bence. Bu sorun hep olur ve çözümü her zaman baştan ve/veya sondan 40 karakter boşluk bırakmaktır. Bir de scroll uzunluğu 256 karakteri geçtiği için sorun çıkabilir gerekli kontroller yapılmamışsa.

Edit: Kodu denedim, sorunsuz çalışıyor. Aklıma önceden yanlış compile etmiş olduğun, sonra kodu düzeltsen de ilk baştaki

!to

satırını yalnışlıkla

to

şekline çevirmiş olabileceğin (ünlemi silmiş olabilirsin) ve ondan sonra compile ettiğini sandığın halde compile edememiş olabilir misin? Bu da klasik bir hatadır çünkü.

Tabii diğer ihtimalde foruma copy&paste yaparken ilk ! karakterini seçmemiş olabilirsin :)

Bu kod neden calismaz????

« Yanıtla #21 : 08.10.2005 12:15:13 »
Hızlı düğmeleri aç

nightlord

İleti: 1.085

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.nightnetwork.org
Alıntı
Originally posted by Bakkada@Oct 7 2005, 10:18 PM
to "out.prg"
* = $c000

VM_SATIR_0 = $0400 + (0 * 40)

lda #0
sta $d020
sta $d021

loop1:

ldx #0
loop2:
lda VM_SATIR_0+1,x
sta VM_SATIR_0,x
inx
cpx #39
bne loop2


read:
lda text_source
sta VM_SATIR_0+39
inc read+1

ldy #$40
ldx #0
delay:
dex
bne delay
dey
bne delay

end: jmp loop1

!align 255,0
text_source:
!scr "merhaba dunya... iste karsinizda yazdigim "
!scr "ilk scroll rutini... henuz smooth degil ama "
!scr "onemli degil. onu da bi kac gune kadar yapmis "
!scr "olacagim zaten. greetings to ali, veli, 49, 50..."
!scr "the new codemaster signs off..."
!fill $2c,$20


bu kodu aynen yazdigimizda butun text gectikten sonra belli bir miktar garip "C" karakteri ardindanda gene garip bir karaakteri belli bir miktarda basiyor ve gene textin en basina donuyor...

Ne yaptiysam olmadi ve nerden kaynaklandigini da bulamadim.... :(
Umitsizlige kapilmaya basliorum....


Not:Kod NightLord'un sitesinden alintidir.
[post=2224]Quoted post[/post]
[/b]


selam bakkada gunlerdir sorularina cevap vermek icin bir turlu firsat bulamiyorum. gercekten ozur dilerim. neyseki burdaki diger arkadaslar sorulari yanitliyor.  

simdi oncelikle scroll kodundaki problemini cozelim. yukaridaki kod parcasi aslinda 256 karakterlik bi yaziyi tekrar tekrar scroll ediyor. sen textin sonunda garip karakterer aliyorsan bu demektir ki, textin sonundan 256.karaktere kadar kalan bolum space karakterinin kodu ile dolmamis. bunu son satirdaki !fill adli ACME komutu yapiyor. senin bu problemi yasaman. o komutun islenmemesinden oluyor gibi. bu bazen acmede karsilatigim bir problem. acme'nin isledigi dosyada son komuttan sonra return ile "newline" karakteri olmasi gerekiyor. yoksa son komutu atlayabiliyor. dolayisyla son satirdan sonra bir kac kere return ile dosya sonunda birkac satirlik bosluk olusturup kaydet ve tekrar dene.

geri gelecegim... :)

Bu kod neden calismaz????

« Yanıtla #22 : 08.10.2005 14:05:24 »
Hızlı düğmeleri aç

Bakkada

İleti: 1.073

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
Gec gelen edit:

@nightlord:Abi kusura bakma sanki senin kodun yanlis gibi bi izlenim yarattim alakasi yok kesin bende bir eksiklik war ama ne onu bulamadim deliricem :(

Misal ben Pre_Intro kodunu senin yazgidin gibi yazmadim aldim onume screen shot'u ekranda ne warsa onu koda yazmaya calistim cok kusel calisio ama butun scroll text bittikten sonra ornegin logocolor icin atadigim degerleri karaktere cevirip ekrana basi ornegin logo color icin $01,$02,$01,$02,$01,$02,$01,$02 yazdiysam text bittikten sonra bababababa basio ekrana ardindan gene bidolu "C" ve garip bir karakter basio sonra hop normal texte donuo...

Ne yaptiysam yemedi...
Oturdum kodu satir satir algoritma semasina doktum normalde olmamasi lazim...

He ama sunu farkettim ben acme64 calistirdigimda sole bi hata werio:
can not use !to without a vb vb vb vb default to CBM

VB:kisimlarini hatirliyamadim....
Acaba bundan mi oluo onu kavriyamadim senin sitende bintoolsuda bulamadim NightLord hocam onnarin linkini de bi ara yapistirir misin???


Yardimlar icin tesekkurler....

Bu kod neden calismaz????

« Yanıtla #23 : 08.10.2005 16:11:13 »
Hızlı düğmeleri aç

nightlord

İleti: 1.085

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.nightnetwork.org
selam

estafurullah benim kodda da her zaman hata olabilir. yazdiklarimi deneyip koysamda web sitesinde formating esnasinda hatalar olusabilyor.

text_source satirlari ile renk tanimi olan satirlarin arasinda !fill komutunu koyduguna emin misin? post ettigin mesajda scroll_colors bolumu yok

istersen full dosyayi koy. bi daha bakalim

bu arada bintools linki

http://nightlord.dr2.net/bintools.rar

Bu kod neden calismaz????

« Yanıtla #24 : 08.10.2005 19:52:03 »
Hızlı düğmeleri aç

Bakkada

İleti: 1.073

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
Alıntı
Originally posted by nightlord@Oct 8 2005, 03:11 PM
selam

estafurullah benim kodda da her zaman hata olabilir. yazdiklarimi deneyip koysamda web sitesinde formating esnasinda hatalar olusabilyor.

text_source satirlari ile renk tanimi olan satirlarin arasinda !fill komutunu koyduguna emin misin? post ettigin mesajda scroll_colors bolumu yok

istersen full dosyayi koy. bi daha bakalim

bu arada bintools linki

http://nightlord.dr2.net/bintools.rar
[post=2233]Quoted post[/post]
[/b]

iste full code:

!to "intromsu.prg"
*=$c000

VM_Satir_L=$0400+(7*40)+11
VM_Satir_S=$0400+(12*40)
CC_Satir_L=$d800+(7*40)+11
CC_Satir_S=$d800+(12*40)

lda #0
sta $d020
sta $d021

jsr clrscr
jsr logo

scrtext:
ldx #0
scrtextloop:
lda VM_Satir_S+1,x
sta VM_Satir_S,x
lda scroll_color,x
sta CC_Satir_S,x
inx
cpx #40
bne scrtextloop:
read:
lda scrolltext
sta VM_Satir_S+39
inc read+1

ldy #$c0
ldx #0
delay:
dex
bne delay
dey
bne delay

end:
jmp scrtext

logo:
ldx #0
logoloop:
lda logotext,x
sta VM_Satir_L,x
lda logocolorcode,x
sta CC_Satir_L,x
inx
cpx #18
bne logoloop
rts

clrscr:
ldx #0
lda #$20
clr_loop:
sta $0400,x
sta $0500,x
sta $0600,x
sta $0700,x
inx
bne clr_loop
rts

logotext:
!scr "6510 asm wants you"

logocolorcode:
!by $02,$01,$07,$08,$09,$02,$01,$07,$02,$01,$07,$08,$09,$02,$01,$07,$02,$01

scroll_color:
!by $02,$01,$07,$08,$09,$02,$01,$07,$02,$01,$07,$08,$09,$02,$01,$07,$02,$01
!by $02,$01,$07,$08,$09,$02,$01,$07,$02,$01,$07,$08,$09,$02,$01,$07,$02,$01
!by $02,$01,$07,$08,$09

!align 255,0
scrolltext:
!scr "here is the very first intro-like asm code from bakkada/******** best rookie of the year"
!fill $2c,$20







burda 6 satir enter tusu basarak bosluk biraktim,calistirdim gene yemedi.scrool'u yaziyor scroolun son harfi ekrandan cikana kadar ekran temiz.ne zaman "year" kelimesinin son harfi "r" ekrandan cikiyor o zaman "C" karakteri basmaya basliyor.Ardindan da 4 karelik bir satranc tahtasi dusunun o karakteri basiyor sonra scroola geri donuyor....
Eger "scrolltext:" i herhangi baska "scrollcolor"dan once koyarsam scrollcolor daki kodlari alip karaktere ceviriyor we "baghibagibaghi...." basiyor ekrana...

Bi yerde bi hata war ama nerde...
Skate kodun calistigini solio acaba benim emulatorumun ayarinda felan mi bise war dicem bole bise yapmamasi lasim :(


DipNot:Gene clrscr yaparken $0700 kullanmisis :)

Bu kod neden calismaz????

« Yanıtla #25 : 08.10.2005 21:45:32 »
Hızlı düğmeleri aç

Bakkada

İleti: 1.073

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
Ya bu arada sunu farkettim:

Nightlord'un kodunu aynen yazarsam ok calisio catir catir... ama o koddan son iki satiri silersek kalan yerlerde hemen "C" karakteri basio...

Hmmmm ilginc baktigim zaman 255 karakter de degil toplam yazilanlar
annamadim ben bu isi ama o kadar caım sıkıldı ki iki gundur demin bi benden yasca buyuk bi arkadasimla konusurken daha scrolltext yapamiyan adamdan scene ne fayda gelir sozlerinin agizamdan dokulmesine sebep oldu allah sonumu hayir etsin....

Bu kod neden calismaz????

« Yanıtla #26 : 08.10.2005 21:51:41 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
@Bakkada: $0700 kullanımı çok da yanlış sayılmaz aslında. Ben Nightlord'un neden öyle kullanıdırdığını da biliyorum. Çünkü "$06e8 alaka yaw" diyecektiniz aksi taktirde. Nightlord başlangıç seviyesi tutorial yazma işinde çok iyi. Örnek olarak 3d tutoriallarında "1 KB yaklaşık 1000 bytedır" lafına hasta olmuştum. Ben ne kadar başlangıç seviyesi yazmaya çalışsam da tutamıyorum kendimi ve en baştan tüm bilgileri kesin olarak ortaya koyuyorum. Bu da insanların kafasını karıştırıyor. Ben en iyisi kendi işime bakiim de siz de adam akıllı öğrenin şu işi adım adım :)

Bu kod neden calismaz????

« Yanıtla #27 : 08.10.2005 21:58:02 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Alıntı
Originally posted by Bakkada@Oct 8 2005, 08:45 PM
Ya bu arada sunu farkettim:

Nightlord'un kodunu aynen yazarsam ok calisio catir catir... ama o koddan son iki satiri silersek kalan yerlerde hemen "C" karakteri basio...

Hmmmm ilginc baktigim zaman 255 karakter de degil toplam yazilanlar
annamadim ben bu isi ama o kadar caım sıkıldı ki iki gundur demin bi benden yasca buyuk bi arkadasimla konusurken daha scrolltext yapamiyan adamdan scene ne fayda gelir sozlerinin agizamdan dokulmesine sebep oldu allah sonumu hayir etsin....
[post=2237]Quoted post[/post]
[/b]

sen sanıyormusun ki nightlord her kodu ilk yaptığı gibi çalışıyor? hemen sana "Living - Behind The Scenes" olayına giriim de anla olayı. Mesela 320 dot torus partı önceden 284 dotdan mı ne oluşuyordu. Ayrıca çok daha küçük bir alanda ve daha abzürt 3d bir şekil vardı. Bir de müzik çalmıyordu ilk versiyonunda. Nightlord müziği eklediğinde ise zaman zaman efektte zaman yetmemelerinden dolayı atlamalar falan olmaya başladı. Aradan bir iki hafta geçti, bir baktım manyak herif efekti fullscreen yapmış, dot sayısını 320'ye çıkarmış, müzik çatır çatır çalıyor + loader eklenince bile problem çıkmıyor. Yani herşey aşama aşama olur. Sen sonuca bakacaksın :) Scroll rutinini adam etmen günler sürdü diyelim. Eee? Ne farkeder. Sonunda oldu mu olmadı mı? Olmadıysa da gayet normal, ilk kod denemen. Ben bazı efektleri efekt ilk yapıldığından 10-15 sene sonra çözdüm. Noolcak? Sonuçta çözdüm :)

Nightlord: Umarım "behind the scenes" olayı için kusuruma bakmazsın, döktük kirli çamaşırları ortaya :P

Bu kod neden calismaz????

« Yanıtla #28 : 08.10.2005 21:58:43 »
Hızlı düğmeleri aç

Bakkada

İleti: 1.073

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
Alıntı
Originally posted by skate@Oct 8 2005, 08:51 PM
@Bakkada: $0700 kullanımı çok da yanlış sayılmaz aslında. Ben Nightlord'un neden öyle kullanıdırdığını da biliyorum. Çünkü "$06e8 alaka yaw" diyecektiniz aksi taktirde. Nightlord başlangıç seviyesi tutorial yazma işinde çok iyi. Örnek olarak 3d tutoriallarında "1 KB yaklaşık 1000 bytedır" lafına hasta olmuştum. Ben ne kadar başlangıç seviyesi yazmaya çalışsam da tutamıyorum kendimi ve en baştan tüm bilgileri kesin olarak ortaya koyuyorum. Bu da insanların kafasını karıştırıyor. Ben en iyisi kendi işime bakiim de siz de adam akıllı öğrenin şu işi adım adım :)
[post=2238]Quoted post[/post]
[/b]

Adim adim ogrenices de istedigimis uzunlukta bi texti ekrana basan rutini yazamadik orasi nolucak???

Bi sure ara wersem ii olucak galiba ASM'ye...Yada icimden 10'a kadar sayip derin nefes aliiim ben....

Gec gelen edit:Ben 15 sene sonra 40 yasinda olucam  :P

Bu kod neden calismaz????

« Yanıtla #29 : 09.10.2005 00:28:16 »
Hızlı düğmeleri aç

nightlord

İleti: 1.085

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.nightnetwork.org
bakkada scroll kodu dikkat edersen c100 ile c1ff arasindaki 256 karakteri scroll ediyor. dolayisiyla hic abuk karaker gormemen icin bahsi gecen 256 adreste hic abuk karakter kodu olmamasi lazim.

yani bu adreslerde basta scroll etmesini istedigin mesajin harflerinin kodlari bulunmali. onlarin bittigi yerden itibaren c1ff'e kadar arta kalan baytlari da bosluk tusunun karakter kodu ile doldurmalisin.

benim versiyonumda yazdigim mesajdaki toplam karakter sayisi 212 oldugu icin mesajdan sonraya 44 ($2c) adte de bosluk karakteri fill ediyorum. sen farkli bir mesaj yazdigin icin senin bosluk doldurman gereken bellek miktari degisik olabilir.

ayni sebepten benim koddan son satirlari kaldirirsan fill komutunu kaldirmis olacagin icin c1d4'ten itibaren bosluk kodlari ile doldurmadigimiz bolge bilgisayar acildiginda o bellek bolgesinde default olarak hangi degerler varsa onlarla dolu kalacak. bunlar da abuk kodlar olarak gorunecek. mesela o bolge 0 ile dolu olursa 0 at isaretinin karakter kodu oldugu icin at isareti (yani senin hakli olarak garip C dedigin karakter) cikacak mesajin sonunda artan bolgede.