Super clanek!
Jen mi to neda a musim podotknout ze 6502 neni vylepsena verze 6800 ale spis downgrade. 6800 mel 2 akumulatory, 16bitovy index registr a stack pointer a nemel tudiz omezeny stack na adresy 0×100..0×1FF jako 6502. Ale jinak byla 6502 super — jednoduchost a elegance.
Jen ten stack pointer kdyby nechali 16tibitovej a misto toho ze ji dali instrukce ASL a LSL (s ruznymi op-cody, ktere vsak delaji totez) mohli ji dat instrukci ASR. Mela jen LSR. Az mi skoro prijde ze to popletli ;) Taky BCD aritmetiku si mohli odpustit, to je vec prakticky k nicemu, ale tenkrat to byla takova moda, Z80 ji ma taky a koneckoncu to prezilo az do dnesnich AMDcek a Intelu. V 6502ce bohuzel bylo BCD reseny dost nestastne a totiz flagem. Takze instrukce ADD scitala bud binarne nebo BCD podle stavu toho flagu. Dusledkem bylo ze po vstupu do preruseni si ho clovek spravne mel vynulovat a pred RTS nastavit zpet na puvodni hodnotu, protoze hlavni program mohl mit BCD nastaveno v kteremzto pripade by nefungovala spravne aritmetika v prerusovaci rutine.
PS: Sice tvrdim ze BCD je k nicemu, ale vim ze ATARI BASIC mel pomoci BCD reprezentovany floatovy cisla. Melo to i vyhody napriklad kdyz jste napsali FOR i=0 to 1 step 0.1 tak se cyklus provedl presne 11* a nemuseli jste si lamat hlavu s tim jak dopadne zaokrouhleni. Ale to je asi tak jedina vyhoda, jinak to bylo silene pomaly a zabiralo zbytecne moc mista v pameti (float mel 6 bytu). Vzpominam ze jsem tenkrat napsal FP-aritmetiku (+,–,*, deleni uz ne to me to akorat prestalo bavit) binarne ve 4bytech a vysledkem bylo uzasne zrychleni ;)

