Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: Bu ASM kdunda hata nerde?  (Okunma Sayısı 4215 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.782


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« : Aralık 03, 2013, 23:46:57 ÖS »

JSR ile atladığım rutinden geri geri dönemiyorum. Hatayı izole etmek için kodu basitleştirdim.

Beklentim programın çerçeve rengini değiştirip sonsuz döngüye girip beklemesi. Ama çerçeve rengini değiştirdikten sonra

?SYNTAX  ERROR IN 239
READY

yazıp BASIC'e dönüyor.

Kod:
!cpu 6510
!to "../build/test.prg",cbm ; output file
;--------------------------------------------------------------------
* = $0801                               ; BASIC start address (#2049)
!byte $0d,$08,$dc,$07,$9e,$20,$34,$39   ; BASIC loader to start at $c000...
!byte $31,$35,$32,$00,$00,$00           ; puts BASIC line 2012 SYS 49152
* = $c000             ; start address for 6502 code
;--------------------------------------------------------------------

jmp clear_screen

loop_forever
        jmp loop_forever

clear_screen
        lda #$03
        sta $d020
        rts

Acme'nin compile log'u da aşağıda.
En sondaki '?'ni anlamamam dışında sorun yok görünüyor. Ney

Kod:
Compiling 6502 code with Input file /Users/gokhan/C64Proje/racersBeta/code/test.asm to test.prg
crunching test.prg
Load address 0x0801=2049, Last byte 0xc00b=49163
Exec address 0xc000=49152
New load address 0x0801=2049
Interrupts enabled and memory config set to $37 after decompression
Runnable on Commodore 64

0
2048
4096
6144
8192
10240
12288
14336
16384
18432
20480
22528
24576
26624
28672
30720
32768
34816
36864
38912
40960
43008
45056
47104
Checked: 47115
Selecting the number of escape bits.. Selected 3-bit escapes
Optimizing LZ77 and RLE lengths...
Selecting LZPOS LO length.. Selected 8-bit LZPOS LO part
Note: Using option -m6 you may get better results.
In: 47115, out: 325, ratio:  0.69% (0.06[0.01] b/B), gained: 99.32%
Gained RLE: 47086 (S+L:0+47086), LZ: 0, Esc: 0, Decompressor: -295
Times  RLE: 1 (0+1), LZ: 0, Esc: 0 (normal: 23), 3 escape bits
Saving C64
../build/test.prg uses the memory $2d/$2e, $f7-$1b6, $200-$234, and $0801-$c016.
Compressed 47115 bytes in 0.00 seconds (19806.60 kB/sec)
loading /Users/gokhan/C64Proje/racersBeta/code/../build/test.prg
loop_forever  =$c003
clear_screen  =$c006; ?
Logged

memoryx17
Üye
***
Mesaj Sayısı: 87


Ankara'dan bir retrocu (Mehmet)


Üyelik Bilgileri WWW
« Yanıtla #1 : Aralık 03, 2013, 23:58:15 ÖS »

kod bu haliyle loop_forever etiketine hiç bir zaman dallanmıyor ki

ya kodun en altına rts yi kaldırıp "jmp loop_forever" ekle

veya rts yi kaldırıp ortada olan aşağıdaki kodun tamamını kodun en sonuna taşı

loop_forever
    jmp loop_forever


Not: kodun ensonunda "rts"  subrutinden geri dönebilmesi için jsr ile dallanmış olması gerkmez mi?  yani jsr clear_screen gibi
« Son Düzenleme: Aralık 04, 2013, 00:16:01 ÖÖ Gönderen: memoryx17 » Logged

3xCommodore 64, Amiga 500, Sinclair ZX Spectrum 48K, Sinclair ZX Spectrum +2, 2xAtari 800XL, Vestel MSX, 2xSEGA MD2, Amstrad CPC464
witchdoktor
Uzman
*****
Mesaj Sayısı: 6.238



Üyelik Bilgileri
« Yanıtla #2 : Aralık 04, 2013, 00:11:58 ÖÖ »

"jmp clear_screen" yerine "jsr clear_screen" ile altrutini çağırman gerekiyor.

"jmp clear_screen" ile clear_screen rutinine atladığında, RTS ile geri dönüşte BASIC kaldığı yerden devam etmek istiyor ama bellekteki anlamsız 'token'larla karşılaştığı için syntax error veriyor.
Logged
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.782


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #3 : Aralık 04, 2013, 08:21:59 ÖÖ »

Sağol witchdoktor. İnanır mısın 2 gündür bununla uğraşıyorum. Subrutinleri ayrı ayrı yazıyorum. Ayrı ayrı çalışıyorlar. İş rutinleri birleştirmeye gelince yine çalışıyor ama en sondaki döngüye girememiştim bir türlü. İnsanın basireti bağlanıyor bazen çok basit şeyleri göremiyor işte.

@memoryx17: Ayrı ayrı yazdığım kodlar zaten senin dediğin şekilde çalışıyor ama bu şekilde birleştirirken hata çıkıyordu. Hallettik çok şükür.
Logged

witchdoktor
Uzman
*****
Mesaj Sayısı: 6.238



Üyelik Bilgileri
« Yanıtla #4 : Aralık 04, 2013, 11:29:48 ÖÖ »

Rica ederim. Birilerinin bu tarz bir projeye girdiğini görmek bile keyifli. Artık iyice bulanıklaşan, kaybolmaya yüz tutan bilgi kırıntılarımı her şekilde paylaşabilirim
Logged
Sayfa: [1]   Yukarı git
Yazdır
Gitmek istediğiniz yer: