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 19:01 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 19:01
       
      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 19:01
       
      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 10:01 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 11:01
       
      tak, dodam takie ostrzeżenie 'Register A is changed'
      • 6:
         
        CommentAuthorjhusak
      • CommentTime26 Jan 2021 14:01
       
      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 14:01
       
      bo nie zadziała
      • 8: CommentAuthormono
      • CommentTime26 Jan 2021 15:01
       
      @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 15:01 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 22:06
       
      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 22:06
       
      żeby krótsze linie generował? mniej niż 80 znaków ?
      • 12:
         
        CommentAuthorpirx
      • CommentTime7 Jun 2022 00:06
       
      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 01:06
       
      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 07:06 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ł :)