@BartoszP:
dokładnie tak. To jest ciekawe zadanie. W ramach zaciekawienia tematem muszę ciągle policzyć te cykle wspomniane, w tym przykładzie podanym wyżej, dla obu bloków.
Potem taki test w BASIC to byłoby coś, przynajmniej dałoby się zobaczyć pracę tych kodów i porównać, a nawet może określić "niestabilność" tych niektórych rozkazów - powinno być widać na rejestrach i flagach co nie działa, lub z jakiego powodu, być może da się określić, że nie są niestabilne, tylko trzeba przykładowo odpowiednio zainicjować rejestry i flagi PRZED użyciem rozkazu i rozkaz staje się stabilny, itp. - do sprawdzenia wszystko, z ciekawości, oczywiste.
Wstępnie trzeba zrobić jakiś program testowy i wrzucić w A=USR(). I jakoś to posprawdzać potem, najpierw te dwa bloki przykładowe, może być ciekawa zabawa.
Ten przykład:
sbx #$100-$10 to ciągle mi dziwnie wygląda, bo tę różnicę trzeba by zapisać jakimś innym SBA, czy coś... czyli dwa rozkazy typu SBX w sumie, hmm...
sbx ma argument #n
2 cykle, to bardzo szybkie w sumie, hmm...
Ten wcześniejszy blok ma więcej cykli, hmm...
gdyby nawet te rozkazy miały tylko po 1 cyklu:
txa
clc
adc #$10
tax
to 4 cykle, ale adc ma chyba ze 3 nawet, hmm...
No to kosmos Fast CPU 6502!
Trzeba wpisać wszystkie rozkazy w BASIC w USR() i zobaczyć wyniki i gotowe. Proste.
Plus pokazanie niestabilności niektórych rozkazów, czyli flagi i adresy i rejestry PO wykonaniu rozkazu, a potem ponownie, a potem 100 razy ten sam rozkaz i pokazać ilość różnych wyników / stanów CPU i otoczenia, dla 100 wywołań tego samego rozkazu dla tego samego stanu procesora i otoczenia PRZED wywołaniem rozkazu. Potem poszukać stanów CPU które stabilizują wywołanie dla 100% pewności tych samych wyników, czyli trzeba znaleźć taki stan CPU i otoczenia, dla których rozkazy niestabilne stają się 100% stabilne - ciekawe, czy są takie stany. No to proste, oczywiste.