Hejka!
Ostatnio zaczalem sie ":bawic": assemblerem na C64. Zaciekawil mnie ten jezyk - a w zwiazku z tym, ze o assembler teraz nie trudno - sciagnalem sobie Turbo Assemblera V6, odkurzylem stare numery Commodore &: Amiga i przystapilem do dzialania. Wszystko bylo dla mie jasne i klarowne do 2 odcinka owego kursu. Zainteresowala mnie sprawa petli, wiec postanowilem zrobic cos sam (w zasadzie to na swoich danych - ale to taki skrot myslowy
![](\"icon/2.gif\")
. Wiec wstukalem taki oto programik
*=2710
ldx #$09
loop lda tekst,x
sta $0400,x
dex
bne loop
rts
tekst .text":commodore":
Ot niby prosta sprawa, wyswietlanie napisu na ekranie. Owszem wszystko byloby ok gdyby nie dziwne efekty. Przy skompilowaniu i uruchomieniu takiego programu uzyskuje nastepujace rezultaty:
- napis jest wyswietlany od poczatku pierwszego wiersza (czyli od $0400) ale pierwsza litera (a konkretnie ":c"
![](\"icon/7.gif\")
jest ":niewidzialna":, czyli uzyskujemy spacje (puste miejsce w pierwszym wierszu i pierwszej kolumnie) i ommodore.
Sprawa jest o tyle dziwna ze gdy postawie spacje w wyrazie - czyli zamiast ":commodore": napisze ": commodore": i zaczne literki wypisywac od adresy o jeden mniejszego (czyli od $03ff) to wszystko dziala zgodnie z oczekiwaniami.
Teraz pytanie do osob znajacych assembler: dlaczego ta sie dzieje. Czy moj program jest do dupy, czy adres powinien jednak byc $03ff, czy tak poprostu ma byc??
Sprawa mnie bardzo intryguje wiec prosilbym o odpowiedz. Dzieje sie tak i na VICE i na real C64. A moze to sprawa dla archiwum X??
Pozdrawiam