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 18:08 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 18:08
       
      Coś kręcisz.
      • 3:
         
        CommentAuthorjhusak
      • CommentTime17 Aug 2020 19:08
       
      @Fox, a co to za środowisko?
      • 4:
         
        CommentAuthorbocianu
      • CommentTime17 Aug 2020 19:08 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 19:08
       
      @kuba - wygląda to jak Quick Assembler.
      • 6: CommentAuthor0xF
      • CommentTime17 Aug 2020 19:08
       
      To oczywiście Quick Assembler, bardzo pożyteczny do takich krótkich snippetów.
      • 7: CommentAuthorbob_er
      • CommentTime17 Aug 2020 20:08
       
      @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 20:08 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 13:08
       
      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!