atarionline.pl Assembler przesuw w pionie dlist - 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: CommentAuthor_pepis
      • CommentTime18 Jan 2011 20:01
       
      Witajcie,

      Nie potrafię swoim prymitywnym rozumem ogarnąć jak działa pointer pamięci w dliscie. Mam taki kawałek kodu (dlist):

      dlist
      .BYTE $70,$70,$70
      .byte $42
      adres .word txt1
      .byte $02,$02,$02


      Chcąc przesuwać tekst w poziomie lub w pionie zmieniam poprzez np. inc/dec wartos znacznika/etykiety "adres". Np. jeżeli zmieniam o wartość $01 to tekst przesuwam w poziomie, jeżeli o #28 to w pionie. Ale jest to wartość osmiobitowa i nie mogę zmieniać tego w zbyt dużym zakresie, gdyż jak osiągnie wartość $FF to zaczyna się znowu od $00, a więc przesuwanie ekranu/tekstu jest bardzo ograniczone. Jak to obejść?

      I jeszcze mam pytanie, stosując np. "inc adres", gdzie "adres" to etykieta użyta tak jak w powyższym przykładzie, to czego właściwie wartość podnoszę? Adresu, czy zawartości komórki...? Jakoś nie mogę tego pojąć. Dzięki za wyrozumiałość.

      Pozdrawiam serdecznie wszystkich atarowców!
      • 2: CommentAuthorbob_er
      • CommentTime18 Jan 2011 22:01
       
      ekhem, więc od początku:
      1. pointer pamięci (jak to nazywasz) to 16bitowa wartość (nawet pisze .word) - adres pamięci ekranu. poczytaj o ograniczeniach Antica w tej materii (4ro kilowe okna).
      2. Zmiana tego adresu o $01 - przesuwasz o jeden w lewo (jak dodajesz) lub w prawo (jak odejmujesz). pamiętaj o 4ro kolowym oknie antica.
      3. Zmiana adresu o $28 (40 dziesiętnie) - (w uproszczeniu) 1 linia do góry lub w dół (zależy czy dodajesz, czy odejmujesz).
      4. Jako, że 'adres' to wartość 16bitowa a 6502 jest 8bitowy, zmiana liczby odbywa się w ten sposób:
      clc
      lda adres
      adc #$28
      sta adres
      lda adres+1
      adc #$00
      sta adres+1
      Na początek używaj lepiej adc/sbc zamiast inc/dec w arytmetyce - łatwiej to ogarnąć.
      5. 'inc adres' (gdzie adres to etykieta) - zwiększa o 1 zawartość komórki o adresie określonym etykietą. Zwiększyć adres możesz na 3 sposoby:
      - używając trybów adresowania z indexem (ale to w ograniczonym zakresie),
      - używając trybów adresowania pośrednich: (zp),y lub (zp,x),
      - samomodyfikowalny kod - ale to wyższa szkoła jazdy.
      • 3: CommentAuthor_pepis
      • CommentTime18 Jan 2011 22:01
       
      O dzięki. Ja pisałem błędnie to dodawanie.. Twoje rozwiązanie działa.. chyba muszę odświeżyć wiadomości o działaniu Carry ;))

      Jesteście niesamowici na tym forum, ostatnio pisałem w sylwestra wieczorem, gdy wszyscy się przygotowywali na imprezę, a tutaj otrzymałem odpowiedź w kilka minut...
      Ktoś kiedyś napisał, pisanie w Assemblerze niesie jakąś nieopisaną przyjemność, nieporównywalną z niczym innym ;D
      Pozdrówki!
      Piotrek
      • 4:
         
        CommentAuthorjhusak
      • CommentTime18 Jan 2011 22:01
       
      "Ktoś kiedyś napisał, pisanie w Assemblerze niesie jakąś nieopisaną przyjemność, nieporównywalną z niczym innym ;D"

      _pepis, ile masz lat?
      ;)
      • 5: CommentAuthor_pepis
      • CommentTime18 Jan 2011 22:01
       
      ;) 34 lata. Wiesz.. każdy ma swoje preferencje ;)
      • 6:
         
        CommentAuthorKaz
      • CommentTime29 Mar 2011 12:03
       

      pepis:

      pisanie w Assemblerze niesie jakąś nieopisaną przyjemność, nieporównywalną z niczym innym ;D


      Widze material na nastepne haslo banera AOL :D
      TDC, czy moglbys? :)
      • 7:
         
        CommentAuthortdc
      • CommentTime30 Mar 2011 00:03
       
      he he ;)
      Nawet to hasło popieram;)

      Jednak nie mogę w tej chwili. Może ktoś ze świeżym pomysłem ?
      • 8:
         
        CommentAuthorjhusak
      • CommentTime30 Mar 2011 10:03 zmieniony
       
      To może ja...
      Z cyklu Mądrości Husaka :))))))))))))))))))))) :P
      • 9:
         
        CommentAuthorKaz
      • CommentTime31 Mar 2011 23:03
       
      To dawajcie swoje madrosci w postaci banerow 448 na 132 piksele :)
      • 10:
         
        CommentAuthorKaz
      • CommentTime16 Apr 2011 21:04
       
      Pare dni temu pojawil sie nowy, fajny baner na gorze strony - autorstwa Klausa. Dzieki!