Aktualności: C64 Power - online od stycznia 2000 !

Autor Wątek: zapalanie bitow w okreslonych odstepach czasu (klatek) - asm 6502  (Przeczytany 528 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline siudym

  • Level 1
  • *
  • Wiadomości: 29
Witam.

Moze ktos poradzi w temacie asemblera 6502 - potrzebowalbym mozliwie najprostrzy kod (aktualizowany w petli nonstop), ktory ustawialby bity w pewnej okreslonej czestotliwosci, a dokladnie takiej:

Jedna zmienna (bajt) np. nazwana "bits", 1 to bit zapalony, 0 to bit zgaszony w danej klatce:

bit0= 1,0,1,0,1,0,1,0... (co dwie klatki)
bit1= 1,0,0,1,0,0,1,0,0,1,0,0... (co trzy klatki)
bit2= 1,0,0,0,1,0,0,0,1,0,0,0... (co cztery)
bit3= 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0... (co piec)
bit4= 1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0... (co szesc)
bit5= 1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0... (co siedem)
bit6= 1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0... (co osiem)
bit7= 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0... (co dziewiec klatek)

To kod (nizej), ktory robi to na podobnej zasadzie, ale kazdy wyzszy bit zapala sie z czestotliwoscia dwukrotnie mniejsza od poprzedniego, a ja chce aby ten skok byl jedynie o jedna klatke (jak wyzej pokazane) :

lda counter ;get old state
inc counter ;advance to the next state
eor #$ff ;invert the old state so that bits that were not set before become 1
and counter ;and with the new state causing only bits that were clear before but are set now to become 1
sta bits ;save the result


Ten kod ustawia bity w zmiennej "bits" w ten sposob:

bit0= 1,0,1,0,1,0,1,0...
bit1= 1,0,0,0,1,0,0,0...
bit2= 1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0.....
bit3= 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...
itd(...)
« Ostatnia zmiana: 23 Października 2017, 11:18 wysłana przez siudym »



Offline retrozbych

  • Level 2
  • **
  • Wiadomości: 55
    • my Facebook profile
Re: zapalanie bitow w okreslonych odstepach czasu (klatek) - asm 6502
« Odpowiedź #1 dnia: 29 Października 2017, 09:15 »
Hmmm co dziewięć klatek ? Czy aby na pewno chodzi o zapis 8-mio bitowy ? W tym miejscu " bit7= 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0... (co dziewiec klatek) ", to wygląda jak zapis 32 bitowy . Myślę, że najprościej było by w pętli kopiować dane z tablicy