atarionline.pl Arytmetyka BCD - 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:
       
      CommentAuthorbocianu
    • CommentTime17 Aug 2020 zmieniony
     
    Mam pytanko, problem.
    Jak wygląda sprawa odejmowania w trybie BCD i flagi C?
    mam taki (mniej więcej) kod:

    start
    sed
    sec
    lda time1
    sbc time2
    sta result
    bcs carryset
    adc #$50
    sta result

    carryset
    cld


    i wydaje mi się, że w przypadku kiedy time2 > time1, to po operacji odejmowania znacznik przeniesienia powinien być równy zero (c=0) i nie będzie skoku.
    A wygląda mi na to że nie jest, bo niezależnie od wyniku operacji to dodawanie (adc #$50) nigdy nie następuje.
    Może coś źle rozumiem, albo mam ustawiony zły procek (6502C) w emulatorze?

    Ktoś się na tym zna i może mi to wyjaśnić?

    EDIT: time1 i time2 są poprawnymi liczbami w kodzie BCD, z zakresu $00..$99 (bez a-f)
    • 2: CommentAuthor0xF
    • CommentTime17 Aug 2020
     
    Coś kręcisz.
    • 3:
       
      CommentAuthorjhusak
    • CommentTime17 Aug 2020
     
    @Fox, a co to za środowisko?
    • 4:
       
      CommentAuthorbocianu
    • CommentTime17 Aug 2020 zmieniony
     
    Tak, przepraszam - znalazłem błąd w swoim kodzie.

    Zapomniałem po raz kolejny, że 6502 jest Little endian i odejmowałem od siebie nie te bajty słowa o które mi chodziło :D
    wystarczyło dopisać time1+1 i time2+1 i wszystko działa jak powinno.

    Jeszcze raz sorry za zaśmiecanie :)
    • 5: CommentAuthorbob_er
    • CommentTime17 Aug 2020
     
    @kuba - wygląda to jak Quick Assembler.
    • 6: CommentAuthor0xF
    • CommentTime17 Aug 2020
     
    To oczywiście Quick Assembler, bardzo pożyteczny do takich krótkich snippetów.
    • 7: CommentAuthorbob_er
    • CommentTime17 Aug 2020
     
    @bocianiu - nie ma co przepraszać. Przy okazji Kuba poznał QA (na którym sam się 6502 uczyłem).
    Nigdy nie wiesz gdzie kogoś Twoje pytanie zaprowadzi :).
    • 8:
       
      CommentAuthorbocianu
    • CommentTime17 Aug 2020 zmieniony
     
    bob_er - to taka metoda żółtej kaczuszki.

    ->link<-

    Jak komuś opowiesz o swoim problemie własnymi słowami, to nagle pewne rzeczy stają się jasne. Męczyłem się z tym błędem od wczoraj i wystarczyło napisać o co chodzi i znalazłem :) ale może nie każdy chce być żółtą kaczuszką.
    • 9:
       
      CommentAuthorjhusak
    • CommentTime19 Aug 2020
     
    Ja słyszałem o gumowej kaczuszce. Z tą można nawet dialog przeprowadzić. Ale najfajniejsza jest żółta gumowa kaczuszka.

    Wee all live with the
    Yellow rubber Duck!
    Yellow rubber Duck!
    Yellow rubber Duck!