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
     
    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
     
    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
     
    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
     
    "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
     
    ;) 34 lata. Wiesz.. każdy ma swoje preferencje ;)
    • 6:
       
      CommentAuthorKaz
    • CommentTime29 Mar 2011
     

    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
     
    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 zmieniony
     
    To może ja...
    Z cyklu Mądrości Husaka :))))))))))))))))))))) :P
    • 9:
       
      CommentAuthorKaz
    • CommentTime31 Mar 2011
     
    To dawajcie swoje madrosci w postaci banerow 448 na 132 piksele :)
    • 10:
       
      CommentAuthorKaz
    • CommentTime16 Apr 2011
     
    Pare dni temu pojawil sie nowy, fajny baner na gorze strony - autorstwa Klausa. Dzieki!