xxl napisał/a:epi napisał/a:Ale chyba mi nie powiesz, że wobec tego będziesz polegać na zachowaniu wynikającym z buga.
nie, to by byla glupota. bugi (odchylki od dokumentacji) a nieudokumentowane rozkazy to dwie rozne sprawy.
jeszcze raz sie do tego odniose, mysle ze trzeba tu wyroznic jeszcze jedna grupe:
1. bledy procesora (dostajemy wynik inny niz w dokumentacji)
2. nieudokumentowane rozkazy,
3. nieudokumentowane zachowanie standardowych rozkazow.
po jedny przykladzie:
1 - np. w trybie dziesietnym po operacji dodawania w akumulatorze pojawia sie zero a znacznik procesora zglasza liczbe rozna od zera
2 - np. zaladowanie danej do dwoch rejestrow jednoczesnie
3 - np. operacje dziesietne na danych niedziesietnych
przy okazji zmieniam zdanie ze 65c816 w trybie emulacji jest zgodny z dokumentacja 65c02 - nie jest - operacje (3) 65c816 i 65c02 wykonaja inaczej (w akumulatorze bedzie inny wynik) oraz w innej liczbie cykli.
i ciekawe spostrzezenie: 65c816 ma pewne cechy 65c02 (ustawienie znacznikow) i zupelnie od niego rozne - bardziej podobne do 6502C - nieudokumentowane dzialanie w trybie dziesietnym.
na (3) oparta jest np. procka zmiany liczby szesnastkowej na znak do wyswietlenia na ekranie:
cmp #$0a
sed
adc #$10
cld
czy opis takiego zachowania znajduje sie w dokumentacji?
i przyklad, ze 65c816 i 65c02 nie wykonuja dzialan tak samo:
sed
lda #$90
sec
sbc #$0f