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 :)