76

Odp: bugi w mads

to nie blad ale jak skompilowac takie cos:

org $2000
jmp *
opt h-
org $00,*
jmp *
opt h+

aby dostac prawidlowo zbudowany plik

chodzi o to, ze naglowek powinien obejmowac takze teggo drugiego jumpa :/

dostajemy:

FF FF   00 20   02 20   4C 00 20 4C 00 00

a powinno byc:

FF FF   00 20   05 20   4C 00 20 4C 00 00

http://atari.pl/hsc/ad.php?i=1.

77

Odp: bugi w mads

Proponuję napisać prawidłowy kod źródłowy ;)

laoo/ng

78

Odp: bugi w mads

super, wlasnie to chce zrobic, mozesz mi pokazac jak napisac taki kod?

chce miec wewnatrz kodu kilka rozkazow skompilowanych tak jakby byly umieszczone w innym obszarze pamieci

http://atari.pl/hsc/ad.php?i=1.

79

Odp: bugi w mads

Ewidentnie problemy powoduje opt h-. Dlaczego on jest konieczny? org $00,* działa sam z siebie. Już takie rzeczy robiłem i nie miałem tych problemów.

laoo/ng

80

Odp: bugi w mads

"bez" wynikowy bedzie taki:

FF FF   00 20   02 20   4C 00 20   03 20   05 20   4C 00 00

nie jestem przekonany czy sie rozumiemy...

http://atari.pl/hsc/ad.php?i=1.

81

Odp: bugi w mads

A no tak. Ten przypadek to nie jest błąd, ale można chyba z czystym sumieniem stwierdzić, że niedociągnięcie madsa, bo generuje dwa bloki, które mógłby połączyć, ale nie łączy bo org jest "dziwny". Ja nawet tego nie zauważyłem, bo wynik madsa i tak wpada do mojego programu, w którym sobie go obrabiam jak chcę. Nie ma żadnych gotowców, które potrafią optymalizować takie rzeczy? xebin tego nie robi? Jak nie to napisanie tego to 15 minut roboty.

laoo/ng

82

Odp: bugi w mads

pewnie tak... ale jakby sie dalo pominac dodatkowe narzedzia...

http://atari.pl/hsc/ad.php?i=1.

83

Odp: bugi w mads

mam dziwne wrazenie... ze to kiedys dzialalo...

przypominam sobie projekt w ktorym trzeba bylo wymusic tworzenie naglowkow i problemem bylo ze mads omijal:

org *

a tu prosze... tworzy...

Tebe cos pokombinowal albo mi sie przysnilo.

http://atari.pl/hsc/ad.php?i=1.

84

Odp: bugi w mads

dobrze pamietalem :-)  wersja mads 1.9.6 potrafi:

org $2000
jmp *
org *  ----------- opusci naglowek
jmp *

ale juz nie potrafi
org $2000
jmp *
org $00,*   ----- wygeneruje
jmp *

Tebe... plizzzz

http://atari.pl/hsc/ad.php?i=1.

85

Odp: bugi w mads

w pierwszym przykładzie ORG jest ten sam co aktualny wskaźnik programu, więc ORG i nowy nagłówek jest nadmiarowy

ale drugi przykład nie rozumiem dlaczego miałby opuszczać ORG-a i nie generować nagłówka

aha, 'org adres,*', czyli kod jest generowany dla innego adresu ale pod aktualnym wskaźnikiem programu

Ostatnio edytowany przez tebe (2022-01-21 23:08:32)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

86

Odp: bugi w mads

tebe napisał/a:

aha, 'org adres,*', czyli kod jest generowany dla innego adresu ale pod aktualnym wskaźnikiem programu


bump


:)

http://atari.pl/hsc/ad.php?i=1.

87

Odp: bugi w mads

próbowałem to poprawić, jednak po poprawce główny nagłówek wskazuje błędnie koniec bloku

sugeruję użyć XASM, 'org r:adres'  to ekwiwalent dla 'org adres,*'

albo nie używać ORG-a, tylko .LOCAL wtedy MADS nie będzie generował dodatkowego bloku

 org $2000
 
 nop

.local nowy,$4000
 nop
.endl

 nop
     1                  org $2000
     2
     3 FFFF> 2000-2002> EA     nop
     4
     5 4000            .local nowy,$4000
     6 4000 EA             nop
     7                 .endl
     8
     9 2002 EA             nop

Ostatnio edytowany przez tebe (2022-01-23 01:30:32)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

88

Odp: bugi w mads

dzieki!. sztuczka z .LOCAL name,adr zalatwia sprawe :-)

http://atari.pl/hsc/ad.php?i=1.

89

Odp: bugi w mads

Potrzebuję przedefiniować sobie zmienną.

    opt o+ h- c- ?+

MEM_BASE = 0
MEM_OSLO = 1
MEM_OSHI = 2
MEM_EXT = 3

    org $2000

.local
MEM = MEM_OSLO
    .byte MEM
.endl

.local
MEM = MEM_OSHI
    .byte MEM
.endl

.local
MEM = MEM_EXT
    .byte MEM
.endl

.local
MEM = MEM_BASE
    .byte MEM
.endl

    end

Jak to zrobić bo to generuje mi błędy:

$ mads label.asx 
label.asx (13) WARNING: Infinite loop by label MEM
MEM = MEM_OSHI
label.asx (18) ERROR: Label MEM declared twice (BANK=0)
MEM = MEM_EXT
label.asx (23) ERROR: Label MEM declared twice (BANK=0)
MEM = MEM_BASE
label.asx (28) ERROR: Label MEM declared twice (BANK=0)
hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

90

Odp: bugi w mads

SET
https://mads.atari8.info/pl/skladnia/#label-set-value

albo etykieta tymczasowa, czyli taka która zaczyna się znakiem '?'
https://mads.atari8.info/pl/skladnia/#tymczasowe

Ostatnio edytowany przez tebe (2022-06-03 17:53:29)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

91

Odp: bugi w mads

O to chodziło! Dzięki!

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje