atarionline.pl [MADS] - problemy - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1:
       
      CommentAuthorjhusak
    • CommentTime25 Jan 2021 zmieniony
     
    Tak, ten kod jest błędny w ogólności, ale w przypadku zakresów, w których wyzerowany jest młodszy bajt działa poprawnie.
    Mam taką pętlę:
    mwa #$2000, licznik
    loop
    coścowykonasię0x2000razy
    dec licznik
    bne loop
    dec licznik+1
    bne loop
    dalej

    generalnie są to 2 oddzielne liczniki, tam zawsze będzie 0x2000, nie ma siły.
    Wiem, złe nawyki, ale to nie nawyk, to intencjonalne; żeby pętla była jak najszybsza.

    Co nie zmienia faktu, że ten kod jest błędny, a twój poprawny:)

    Ponawiam prośbę o wypisanie warninga lub generowanie poprawnego kodu w przypadku użycia:
    dew coś
    bne gdzieś

    bo co chwila ktoś będzie się na to nadziewał.
    Dotyczy też innych tak działających instrukcji.
    • 2:
       
      CommentAuthorlaoo
    • CommentTime25 Jan 2021
     
    Fakt, dekrementowanie liczb 16-bitowych nie jest intuicyjne. Nie raz się naciąłem, że pisałem właśnie ten błędny kod i dostawałem śmiecia jak młodszy bajt był zerowy.
    A z drugiej strony - ja nigdy się nie przekonałem do tych xasm-owych dodatków. Szczególnie tych konkatenacji rozkazów za pomocą dwukropka. Zawsze wszystko piszę ręcznie.
    • 3:
       
      CommentAuthorjhusak
    • CommentTime25 Jan 2021
     
    O o o o. Otóż to. Jak człowiek się zrazi raz czy dwa, to już nie dotknie. A po co tak, skoro to już jest i jest fajne? To zadbać o poprawność :)
    • 4:
       
      CommentAuthorjhusak
    • CommentTime26 Jan 2021 zmieniony
     
    @Tebe, czy myślisz, że ten warning w opisanych wyżej przypadkach ma sens? Ja myślę, że ma i że warto to dodać do madsa.
    • 5: CommentAuthortebe
    • CommentTime26 Jan 2021
     
    tak, dodam takie ostrzeżenie 'Register A is changed'
    • 6:
       
      CommentAuthorjhusak
    • CommentTime26 Jan 2021
     
    Mi raczej chodziło o użycie bne, beq po dew.
    I powiedz, dlaczego w rozwinięciu dew zamiast lda nie może być bit.
    • 7: CommentAuthortebe
    • CommentTime26 Jan 2021
     
    bo nie zadziała
    • 8: CommentAuthormono
    • CommentTime26 Jan 2021
     
    @jhusak: Ech Kuba, zapomniałeś jak się programuje na Atari :)
    BIT ustawia Z jako wynik operacji A AND addr przy czym wynik nie jest wstawiany do A.
    • 9:
       
      CommentAuthorjhusak
    • CommentTime26 Jan 2021 zmieniony
     
    Chyba trochę tak :)
    Ten BIT zawsze był dla mnie nieintuicyjny. Ale fakt, on robi AND na akumulatorze i pamięci. A ja przedłużałem ustawianie Z na tej samej zasadzie, co N i V.
    Pewnie też dlatego nie umiem zastosować niepublikowanych w realnym kodzie, może z wyjątkiem LAX. Są nieintuicyjne.

    Także ten teges, nie zadziała. Dzięki za pomoc!
    Wszystkim :)
    • 10:
       
      CommentAuthorpirx
    • CommentTime6 Jun 2022
     
    Może gupi problemik, ale jakoś nie znalazłem rozwiązania. Używam najnowszego madsa pod linuchem.
    jak wyskoczy błąd, to Mads emituje wiersze o maks. długości 80 znaków, np.
    /home/pkalinowski/Seafile/atari/projects/scorch_src/scorch.asm (726) ERROR: Ille
    gal addressing mode (CPU 6502)

    (tam są 2 wiersze) to powoduje, że WUDSN gupieje i pokazuje tylko "Ille" jako błąd :(
    Gdzie, jak to przełączyć?
    • 11: CommentAuthortebe
    • CommentTime6 Jun 2022
     
    żeby krótsze linie generował? mniej niż 80 znaków ?
    • 12:
       
      CommentAuthorpirx
    • CommentTime7 Jun 2022
     
    No nieeee, żeby nie dzielił na 80 znakowe kawałki w ogóle. Dłuższe wiersze to w dzisiejszych czasach nie problem.
    Alternatywnie, jeśli tego podziału nie da się uniknąć, to żeby można było go sobie zwiększyć do np. 32767 znaków :)))
    • 13: CommentAuthortebe
    • CommentTime7 Jun 2022
     
    mads nie dzieli ciągów znakowych na jakiekolwiek mniejsze wycinki, wiersze w madsie mogą mieć dowolną długość (max. 2GB)

    sprawdź ustawienia konsoli
    • 14:
       
      CommentAuthorpirx
    • CommentTime7 Jun 2022 zmieniony
     
    Dzięki! Pewnie eklips przycina stdout/stderr do 80 znaków podczas importu wypustu z konsoli do IDE. Na razie uleczyłem usuwając defaultową opcję "-p" w wywołaniu MADSa w WUDSN.

    Inna sprawa - gdy komplikuję scorcha np. taką komendą:
    mads scorch.asm -l:scorch.lst

    to w pliku .lst mam tylko kawałek listingu - konkretnie do drugiego inita.
    Co robię źle?
    (skorcz leży tutaj: ->link<-

    ooo, dobra, znalazłem, w wyświetlaczce g2f, którą tam wsadziłem jest opcja
    opt l-
    to mnie zmylyło.

    Zostawiam jakby kiedyś ktoś się znów zastanawiał :)