51

Odp: bugi w mads

Próbowałem użyć struktur w madsie. Pierwszy problem na jaki się natknąłem, a jaki chciałbym zgłosić, to niedostateczna diagnostyka błędów. Użyłem wewnątrz zamiast deklaracji .byte deklaracji .by, bo myślałem że są zamienne tak jak poza strukturą i mads nawet się nie zająknął, a zignorował pole z .by.
Drugi problem, że jeżeli nie poda się nazwy pola, to takie pole zostanie zignorowane. Również bez błędu ani ostrzeżenia. Niby problem z czapy, ale nie do końca, bo akurat definiowałem sobie strukturę odzwierciedlającą istniejącą strukturę, tylko kilku pól nie używałem, więc nie nadałem im nazwy. I po dość długim debugowaniu odkryłem, że offsety mi się poprzesuwały, bo mads ignorował pola bez nazwy.
Przykładowy kod obrazujący problemy:

    org $2000
    
.struct IgnoredKeyword
dontWork .by    ;ignored keyword here
works    .byte  ;as a result this have index 0
.ends

    lda #IgnoredKeyword.works
    ;ldy #IgnoredKeyword.dontWork ;test.asm (9) ERROR: Value out of range
    
.struct MissingLabel
    .byte    ;no label here
label   .byte    ;as a result this have index 0
.ends

    lda #MissingLabel.label

Produkuje taki listing:

mads 2.0.7
Source: test.asm
     1                     org $2000
     2                     
     3                 .struct IgnoredKeyword
     4                 dontWork .by    ;ignored keyword here
     5 = 0000            works    .byte  ;as a result this have index 0
     6                 .ends
     7
     8 FFFF> 2000-2003> A9 00        lda #IgnoredKeyword.works
     9                     ;ldy #IgnoredKeyword.dontWork ;test.asm (9) ERROR: Value out of range
    10                     
    11                 .struct MissingLabel
    .byte    ;no label here
    13 = 0000            label   .byte    ;as a result this have index 0
    14                 .ends
    15
    16 2002 A9 00            lda #MissingLabel.label
laoo/ng

52

Odp: bugi w mads

innymi słowy nie czytałeś instrukcji, cyt.:

"Pola struktury definiujemy przez podanie nazwy i typu pola (.BYTE, .WORD, .LONG, .DWORD)."

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

53

Odp: bugi w mads

W publikacji Atari Basic też jest napisane jak należy używać instrukcji INPUT, a mimo to można użyć jej niewłaściwie. Interpreter zwróci błąd i wydawało mi się do dziś dzień, że to normalne jest.... wink

ADRES: pin@atari.pl - konto zlikwidowane. Aktualny adres: pin(at)atari8.info

54

Odp: bugi w mads

A to to ja wiem, że zrobiłem bład, zgłaszam tylko, że mads ten kod zaakceptował jako poprawny.

laoo/ng

55

Odp: bugi w mads

ok smile "niedostateczna diagnostyka błędów"

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

56

Odp: bugi w mads

   434
   435 A01C            backgroundCharsSrc .wo
   436 A01C 00 00        backgroundScrollDiff .wo 0
   437

Chyba za bardzo ufam, że mads zgłosi błąd przy niepoprawnym kodzie. I kosztuje mnie to wiele godzin szukania nie tam gdzie trzeba sad

laoo/ng

57

Odp: bugi w mads

po poprawkach dla .BY, .WO, .HE, .SB, .CB, .FL

Ostatnio edytowany przez tebe (2018-10-25 12:03:09)

Post's attachments

mads_25-10-2018.zip 196.98 kb, liczba pobrań: 4 (od 2018-10-25) 

Tylko zalogowani mogą pobierać załączniki.
*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

58

Odp: bugi w mads

No i o to chodziło. Żeby maszyna pomagała, jak człowiek zrobi jakąś wierutną głupotę, bo nie wiem jak inni, ale ja nieomylny nie jestem. Dziękować!

laoo/ng

59

Odp: bugi w mads

Następny ficzer użyty i następny błąd znaleziony smile

    .segdef seg $4000 $4000 R bank 

    .segment seg
l    nop
    .endseg
    
bank = $15

generuje mi błąd:

mads.exe test.asm
l       nop
test.asm (5) ERROR: Label L declared twice (BANK=21)

Eksperymentując odkryłem, że można go obejść na dwa sposoby: ustawiając numer banku w .segdef jako liczbę, albo definiując etykietę bank przed .segdef

Te obejścia są bezproblemowe, więc to nic pilnego, ale zgłaszam, bo to nie jest zachowanie, którego bym się spodziewał.

Przy okazji odkryłem, że kuleje trochę ustalanie, czy segment ma być read-only. Taki kod:

bank = $15

    .segdef seg $4000 $4000 R bank 

    .segment seg
v    equ $80

l    sta v
    .endseg

Generuje mi ostrzeżenie

test.asm (9) WARNING: Label V is only for READ

a listing ma w tym miejscu taki wpis:

     7 = 15,0080        v    equ $80

Nie znam wnętrzności madsa, ale widać, że definiowanie etykiet wewnątrz segmentu o wartościach spoza segmentu jest problematyczne. Prawdę mówiąc przypisanie tej etykiety do banku $15 też nie jest czymś, co bym się spodziewał i chyba tu tkwi problem i może rozwiązaniem byłoby, żeby do banku segmentu zaliczać tylko te adresy, które się w tym segmencie zawierają.

laoo/ng

60

Odp: bugi w mads

WIP

Polska dokumentacja MADS

http://zbyti.great-site.net/mads-docs/

nie skończyłem (składnia) bo spis treści  przestał się w którymś momencie trzymać nazw paragrafów i nie chciałem namieszać.

TeBe ma fork wiec jak ktoś chce może zgłaszać mu issue albo PR, mam nadzieję, że TeBe dokończy.

Docelowo wszystkie 4 dokumentacje (2 x PL - MP/MADS, 2 x EN - MP/MADS) powinny wylądować na serwerach TeBe albo na github.io.

-------

wpis tutaj bo nieposiadanie nowoczesnej dokumentacji to błąd w dzisiejszych czasach wink

-------

link nie aktualny na wskutek zmiany właściciela repozytorium

Ostatnio edytowany przez zbyti (2020-12-13 14:32:37)

61

Odp: bugi w mads

Piękna dokumentacja, choć po sekcji "Składnia" widzę że jeszcze sporo pracy jest do zrobienia. Dzięki @zbyti! Zacna inicjatywa.

hex, code and ror'n'rol!
"mężczyzna wydoił wielbłąda żoną"
"wcześniej miał na imię Heidi i był niemiecką kulomiotką"

62

Odp: bugi w mads

@mono wbrew pozorom to objętościowo tesktu nie zostało dużo do uzupełnienia (1,5h pracy) najbardziej pracochłonne fragmenty już są. Gdybym rozróżniał na 100% co jest czym to bym skończył a że nie rozróżniam to albo tebe skończy albo jakaś dobra dusza co się na tym zna wink

Ostatnio edytowany przez zbyti (2020-12-12 17:59:14)

63

Odp: bugi w mads

@mono gdybyś chciał mi na zoom powiedzieć odkąd (a raczej) dokąd dany fragmant matchuje się ze spisem to dziś była by skończona - bo dorwać tebe na tyle długo by z nim to zrobić wydaje mi się niemożliwością.

Ostatnio edytowany przez zbyti (2020-12-12 18:00:51)

64

Odp: bugi w mads

@mono by Cię nie przestraszyć to potrzebny był byś mi góra na 15 min :] ja mam czas do jutra z dokuemtacją, od jutra się tym nie będę zajmował. Jakby coś PM mnie na AA.

65

Odp: bugi w mads

mads wyprzedza dokumentacje zwlaszcza w tym zakresie: "Dostępne nielegalne rozkazy 6502"

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

66

Odp: bugi w mads

niestety mogę bazować tylko na tym co jest spisane  i dostarczane z MADS, nie mam czasu (ani pewnie wiedzy) śledzić źródeł mads.

67

Odp: bugi w mads

@xxl no to jak wiesz o jakie MADS wyprzedza to daj PR do repo https://github.com/zbyti/mad-assembler-mkdocs

68

Odp: bugi w mads

repozytorium zmieniło właściciela, zainteresowani pomocą mogą zgłaszać PR lub issue do https://github.com/tebe6502/mad-assembler-mkdocs

Ostatnio edytowany przez zbyti (2020-12-13 14:31:57)