@Perinoid Aż trudno uwierzyć, że Ty się serio pytasz. Przecież to klasyczne "undefined behavior". Projektanci 6502 założyli sobie zestaw operacji jakie ma wykonywać. Nie zajmował on całej przestrzeni opkodów, więc część jest niezagospodarowana i robi coś co akurat w krzemie wyszło. A gdy ktoś nie zrobi czegoś w krzemie świadomie, to robią się przeróżne rzeczy od niczego, przez rzeczy niegroźne, aż to zawieszenia procesora. Weźmy na tapetę taki klasyczny przykład: Rozkazy LDA i LDX trybu zerostronicowego mają odpowiednio opcody $A5 i $A6. Binarnie jest to:
10100101 LDA
10100110 LDX
Różnią się dwoma najmłodszymi bitami. Można zatem domniemać, że zapalenie bitu 0 rozkazuje ładowanie do akumulatora a bitu 1 ładowanie do rejestru X. A co się stanie jak oba będą zapalone?
Zrobi się nam rozkaz LAX, który ładuje i do akumulatora i do rejestru X. I to jest najmilszy przypadek co się dzieje, jak się użyje czegoś niezdefiniowanego, bo np. opkody z $X2 na końcu nie zatrzymują licznika cyklów rozkazu i po siódmym spada z rowerka bez załadowania następnego i mamy zwiechę.
Powiedz mi zatem jaki byłby sens dokumentować coś takiego, co zostało zauważone a jest zupełnie przypadkowe i raz robi coś śmiesznego, a raz zawiesza procesor? Poza takim oczywiście, że przyszłe rewizje procesora nie mogłyby w tym miejscu zrobić czegoś innego? Bo tak się składa, że dokładnie to się działo. Np w miejscy omawianego LAX pod kod $A7 w 65SC02 nie ma nic, ale zadbano żeby tam był 1-cyklowy NOP, w WDC 65C02 jest SMB2 zp (ustawienie 2 bitu komórki na stronie zerowej), a w 65c816 jest tam LDA [d] (załadowanie akumulatora pośrednie 24-bitowe).
Więc reasumując to nie jest tak, że ktoś uznał te opkody za niegodne, tylko że nikt nie wpadł na szalony pomysł, żeby poświęcić czas na analizę co im tam przypadkiem wyszło i udokumentowanie tego, bo szczerze to byłoby głupie i zamknęło by drogę do rozwoju dla rodziny 6502.