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(...)