26

Odp: 6502C niepublikowane rozkazy

Ale to jest dlatego "be", ponieważ to się będzie sypać na 65816. Gdyby nie to, to pewnie nikt by się nie zająknął. Kompatybilność man... ;)

27

Odp: 6502C niepublikowane rozkazy

XXL ma prawo mieć gdzieś, czy to będzie działać na 65816. Może też zrobić opcję, czy rozkazy nieudokumentowane będą używane.

https://www.youtube.com/watch?v=jofNR_WkoCE

28

Odp: 6502C niepublikowane rozkazy

Może. Jako i my, że to jest be.

29

Odp: 6502C niepublikowane rozkazy

Panie i Panowie....ale chodzi o to jak zoptymalizować kod z wykorzystaniem tych rozkazów. Jeśli dzięki temu powstanie kolejne przełomowe demo albo program, to czemu nie ? Czy taki Numen nie mógłby działać szybciej i płynniej ? I tak nie działa w standardowej konfiguracji. Skoro "jaramy" się niestandardowymi trybami graficznymi, niekoniecznie działającymi na każdym sprzęcie, lub innymi "mykami" to o co kruszyć kopie ? A wiedza się przyda.

30

Odp: 6502C niepublikowane rozkazy

Skoro można używać rozkazów 816 i to NIE działa na większości atarek, to co za problem, jeśli na kilku nie zadziała kod wykorzystujący skutki uboczne uproszczenia dekodera rozkazów w 02(C)?

Ostatnio edytowany przez epi (2012-03-12 12:18:08)

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

31

Odp: 6502C niepublikowane rozkazy

@Vasco/Tristesse wymieniajac procesor w atarce na 16bitowca musisz liczyc sie z konsekwencjami - jedna z nich jest brak kompatybilnosci. poza tym, jesli masz/bedziesz mial takiego proca w atarce bedziesz pisal programy tak zeby dzialaly na standardowym atari w imie "Kompatybilność man..." prawda? ;-)

@Fox:
> Według mojej wiedzy stabilne są wszystkie rozkazy "nielegalne" (wolę określenie "nieudokumentowane") oprócz $93,
> $9b, $9f, $bb oraz podobno $8b, $ab i niektórych KIL/JAM/CIM

czyli dziala prawidlowo znacznie wiecej niz myslalem. skad wiesz o $AB ?

@Epi:
> to co za problem, jeśli na kilku nie zadziała kod wykorzystujący skutki uboczne uproszczenia dekodera rozkazów w 02(C)?

dodaj, ze nie dziala na przerobionych atari, na seryjnych dziala.

Ostatnio edytowany przez xxl (2012-03-12 13:05:11)

http://atari.pl/hsc/ad.php?i=1.

32

Odp: 6502C niepublikowane rozkazy

xxl napisał/a:

czyli dziala prawidlowo znacznie wiecej niz myslalem. skad wiesz o $AB ?

To powszechna opinia o 6510. O ile wiem, wszystkie nieudokumentowane rozkazy działają tam jak w atarkowym procku z wyjątkiem $8b i $ab. Nie wykryłem anomalii $8b i $ab w mojej maszynie, ale czytałem, że $8b zachowuje się różnie w różnych atarkach. KIL/JAM/CIM - czytałem, że niektóre opcode-y nie zawsze powodują zawieszenie.

https://www.youtube.com/watch?v=jofNR_WkoCE

33

Odp: 6502C niepublikowane rozkazy

Wątek faktycznie nie jest o tym, czy uzywac czy nie nielegali, ale az trudno sie nie powstrzymac od wyrazenia opinii, zeby jednak UZYWAC! Jesli jakis efekt w demie zacznie dzieki temu "wyrabiac sie w ramke", albo gra bedzie plynniejsza to koniecznie trzeba to wykorzystac. Wg mnie lepsze to, niz przeszczepianie innego proca, pisanie pod niego, jakies cudowanie sprzetowe etc. - mimo wszystko jest sie blizej "prawdziwego atari". Na moje oko soft, ktory ma uzyte nielegaly, moze przeciez miec loader, ktory wpierw sprawdzi, czy da sie wykonac dany rozkaz na konkretnym egzemplarzu atari i moze wywalic info, ze niestety, na tym konkretnym procu nie dziala, i trudno. Albo nawet lepiej, sprawdzi danego proca i zaladuje kod w wersji z nielegalami, albo tez zwykly, z komentarzem typu  "sorry, no bonus". Bedzie wtedy dzialac na wszystkich maszynach, ale z rozna efektywnoscia.

34

Odp: 6502C niepublikowane rozkazy

na kazdym atari xl/xe dzialaja niepublikowane rozkazy wiec po co takie sprawdzanie? moze tez sprawdzac czy na pokladzie jest pokey bo kiedys moze pojawic sie zamiennik ktory nie calkiem bedzie kompatybilny z pokeyem?

http://atari.pl/hsc/ad.php?i=1.

35

Odp: 6502C niepublikowane rozkazy

epi napisał/a:

Skoro można używać rozkazów 816 i to NIE działa na większości atarek, to co za problem, jeśli na kilku nie zadziała kod wykorzystujący skutki uboczne uproszczenia dekodera rozkazów w 02(C)?

... z tym, że każdy program dla 65c816 posiada albo opcję pracy na kodzie dla 6502c (SysInfo), albo dwie wersje programu na dwa procesory. I to jest ok, bo w każdej sytuacji istnieje możliwość uruchomienia programu w dowolny sposób. Twierdzenie to jest więc nieprawdziwe ;)- Przykłady:

* SD6502.SYS - loader plików dla formatu SDX - wersja 6502C
* SD816.SYS - to samo, lecz dla 65c816

* SysInfo - dwa tryby pracy - 8 i 16 bit

* ramdisk.sys dla SDX - dwa tryby, lub dwa pliki sterowników.

* OS - jest i dla 6502c i dla 65c816, jeśli ktoś sobie tam chce.

itd.

... to, co sobie tam XXL planuje, to jego sprawa. Mi tam nic do tego, bo i tak mam swoje zdanie, które większość zna ;)- Kulturalnym jednak zachowaniem programu jest wykrycie w takim przypadku procka i możliwość uruchomienia programu "wolniej" (wersja np. 6502C), czy "gorzej" na "niestandardowym" procesorze i szybciej z użyciem "nieudokumentowanych rozkazów" - zawsze będzie wówczas możliwość porównać, co działa szybciej. I to będzie stanowić namacalny argument stwierdzający, iż używanie "nielegali" daje wymierne efekty :)

Jeśli się komuś chce, to zawsze może sprawdzić kilka programów na okoliczność używania nielegali. Pamiętam trzy przykłady; Plotter w jednej z części dema "Joyride" (na 65c816 po prostu widać kropki i plotter się nie porusza), gra "Alley Cat", oraz coś w loaderze gry "Inspektor". Gdzieś na stronie Draco była onegdaj lista zgodności z 65c816 ;)-

EDIT:

.. o, jest więcej programów z nielegalami. Wspomniana lista na stronie Draco:

http://drac030.krap.pl/pl-kompatybilnosc.php

.. ogólnie - jak widać, w większości nic straconego :D

Ostatnio edytowany przez Pin (2012-03-12 20:22:05)

ADRES: pin@atari.pl - konto zlikwidowane. Aktualny adres: pin(at)atari8.info

36

Odp: 6502C niepublikowane rozkazy

Pin, chcesz zagrac w cybernoida na atari, postaw sie przed wyborem:

- uzywanie rozkazow niepublikowanych aby przyspieszyc gre na atari xl/xe "seryjnym"
- przerobka atari i uzycie 16bitowego proca 65816

nalezy wykorzystywac mozliwosci atari a nie jak konsumenci dokupic ramu, proca i pisac byle jak - jak nie pojdzie to kupi szybszego proca :D

http://atari.pl/hsc/ad.php?i=1.

37

Odp: 6502C niepublikowane rozkazy

ponad 30 postow o niczym ale chyba bylo warto bo pojawil sie wstepny podzial na rozkazy stabilne i niestabilne (dzieki Fox).
dodatkowo dwa kody nie wiadomo jak zakwalifikowac - te trzeba bedzie jeszcze przetestowac.

Ostatnio edytowany przez xxl (2012-03-12 20:54:43)

http://atari.pl/hsc/ad.php?i=1.

38

Odp: 6502C niepublikowane rozkazy

... potencjalne powstanie Cybernoida zależne jest od użycia nielegali? ... chyba większość obecnych dem nigdy nie powstała i nikt ich nie napisał :P

Cóż, pozostaje szczerze życzyć powodzenia ;)-

ADRES: pin@atari.pl - konto zlikwidowane. Aktualny adres: pin(at)atari8.info

39

Odp: 6502C niepublikowane rozkazy

Komodorowcy nie mają na tym punkcie kompleksów, dlatego warto zapoznać się na przykład z http://codebase64.org/, gdzie korzyść z "nielegali" bywa pokazywana na krótkich i praktycznych fragmentach kodu.

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

40

Odp: 6502C niepublikowane rozkazy

Specjalnie długo nie szukałem, żeby znaleźć fragment z 3d rotation z codebase64:

!ifdef USE_ILLEGALS {
         arr #$00
} else {
         lda #$00
         ror
}

Co może implikować, że komodorowcy kompleksów może i nie maja, ale i nie jadą na bezczela.

Mój rozum mi podpowiada, że programowanie w asemblerze jest na tyle trudne, że uzależnianie działania programu od fazy księżyca nie jest roztropne. Zwrot "nieudokumentowane" jest pewnym eufemizmem, bo przecież nie są to rozkazy, które zostały celowo zaimplementowane i nieopisane (tak zrobiło Hitatchi w swoim 6309 implementując specyfikację 6809), tylko są to artefakty szalejących elektronów w niezdefiniowanej sytuacji, które przypadkowo w warunkach pokojowych robią coś użytecznego, ale nikt nie może dać na nie żadnej gwarancji. Dlatego sensowne wg mnie jest robienie takich ifdefów, za pomocą których wygenerujemy dwie (czy więcej) binarki i niech docelowy odbiorca zadecyduje którą chce używać. Pisanie programu z nielegalami (bo jestem hardkorem), nie dając użytkownikowi alternatywy jest trochę szczeniackie. Nie jestem siewcą defetyzmu, ale cokolwiek robimy, róbmy to z klasą.
Nie wiem ile w tym sensu, ale zastanawiam się nad przedsięwzięciem syntetycznego zbadania zdziałania nielegali. Za pomocą http://visual6502.org/ można by prześledzić co dokładnie dzieje się podczas wykonania takiego rozkazu, a może i nawet oszacować stabilność każdego z nich. Nie wiem tylko jak ma się ich 6502 do naszego 6502C i jak byłoby to trudne. Zresztą chłopaki już coś wstępnie zrobili.

Ostatnio edytowany przez laoo/ng (2012-03-12 22:36:31)

41

Odp: 6502C niepublikowane rozkazy

dzieki za przyklad, przydalby sie dluzszy fragment kodu aby pokazac ze uzycie rozkazow dodatkowych mialo zwiazek z optymalizacja a nie jest to sztuka dla sztuki.

> że uzależnianie działania programu od fazy księżyca nie jest roztropne.

gdyby tak bylo latwo moznaby bylo dowiesc, ze nawet na tej samej maszynie rozkazy niepublikowane nie dzialaja stabilnie. fakt jest jednak taki, ze te rozkazy dzialaja tak samo na roznych maszynach.

brnac dalej w offtopic ;-) widze dwie szkoly, jedna mowi o tym, ze nalezy budowac program z warunkowa kompilacja i dostarczyc np. gre w wersjach na rozne procesory/ te same procesory z optymalizacja lub bez (co oczywiscie znacznie wydluza programowanie w imie? kompatybilnosci? z czym? wszystkie nieprzerobione ataryny sa kompatybilne w tym temacie). druga mowi, ze program sam powinien rozpoznac na czym zostal uruchomiony i tak tez sie uruchomic.
obydwie uwazam za bledne. juz w poscie 34 sie wypowiedzialem. sprzetowo atari to temat zamkniety od chyba 30 lat i nalezy wykorzystywac 100% jego mozliwosci, przerabiasz atari licz sie z konsekwencjami... a pitolenie ze tworcy kataryny na pewno rozbudowaliby ten sprzet odpowiem: owszem i nazywa sie to AMIGAaaaaa.

moze tak odpalimy swoje atarki i sprawdzimy rozkazy stabilne niepublikowane? a noz ktoras nie wykona i bedzie mozna ktorys skreslic z listy ;-)

http://atari.pl/hsc/ad.php?i=1.

42

Odp: 6502C niepublikowane rozkazy

.. to ja nie odpalam Atarynki, bo musiałbym skreślić wszystkie ;)-

Ostatnio edytowany przez Pin (2012-03-13 00:39:15)

ADRES: pin@atari.pl - konto zlikwidowane. Aktualny adres: pin(at)atari8.info

43

Odp: 6502C niepublikowane rozkazy

no ale co za problem. pisz sobie z nielegalami.
i tak miast uzywajac dosa piszac swojego xbiosa, samodzielnie okrajasz sobie liczbe odbiorcow. tu jeszcze dorzucasz kamyczek do ogrodka.
ale ze to twoj ogrodek i byc moze jestes milosnikiem kamyczkow - twoj sprawa.

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

44

Odp: 6502C niepublikowane rozkazy

jellonek, zdaje sie, nie rozumie tematu.

http://www.atari.org.pl/forum/viewtopic.php?id=9842

Ostatnio edytowany przez xxl (2012-03-13 10:36:44)

http://atari.pl/hsc/ad.php?i=1.

45

Odp: 6502C niepublikowane rozkazy

na podstawie zrodel ASAP/Fox

#n      - dane w trybie natychmiastowym
Q       - adres dwubajtowy
Z       - adres jednobajtowy danych lub adresu pośredniego
*       - dodać cykl przy zmienia strony


ANC / ANC STABILNY
--------------------
Wykonuje AND na A i danej. Znacznik C ustawiany tak jak N
Znaczniki: N,Z,C

Assembler  |kod|dł.|cykle
-----------|---|---|-----
ANC #n     |$0B| 2 | 2
ANC #n     |$2B| 2 | 2


SAX / SAX STABILNY
--------------------
Wykonuje AND pomiedzy A i rejestrem X, wynik zapisuje w pamięci. Rejestry A i X pozostaja niezmienione.
Znaczniki: -

Assembler  |kod|dł.|cykle
-----------|---|---|-----
SAX Z       |$87| 2 | 3
SAX Z,Y    |$97| 2 | 4
SAX (Z,X)  |$83| 2 | 6
SAX Q       |$8F| 3 | 4


ALR / ALR STABILNY
--------------------
Wykonuje AND na A i danej, następnie LSR @
Znaczniki: Z,C

Assembler  |kod|dł.|cykle
-----------|---|---|-----
ALR #n      |$4B| 2 | 2


SBX / SBX STABILNY
--------------------
Wykonuje AND pomiedzy rejestrem X i A, wynik w rejestrze X.
Znacznik C ustawiany gdy zawartosc rejestru X jest wieksza lub rowna danej.
Od rejestru X odejmuje dana (bez pozyczki).
Znaczniki: N,Z,C

Assembler  |kod|dł.|cykle
-----------|---|---|-----
SBX #n      |$CB| 2 | 2


DCM / DCP STABILNY
--------------------
Zmniejsza o jeden wartosc bajtu pamieci nastepnie wykonuje CMP na A i tej wartosci.
Znaczniki: N,Z,C

Assembler  |kod|dł.|cykle
-----------|---|---|-----
DCP Z       |$C7| 2 | 5
DCP Z,X     |$D7| 2 | 6
DCP Q       |$CF| 3 | 6
DCP Q,X     |$DF| 3 | 7
DCP Q,Y     |$DB| 3 | 7
DCP (Z,X)   |$C3| 2 | 8
DCP (Z),Y   |$D3| 2 | 8


INS / ISB STABILNY
--------------------
Zwieksza o jeden zawartosc pamieci. Od A odejmuje wartosc pamieci (z pozyczka).
Znaczniki: N,V,Z,C

Assembler  |kod|dł.|cykle
-----------|---|---|-----
ISB Z       |$E7| 2 | 5
ISB Z,X     |$F7| 2 | 6
ISB Q       |$EF| 3 | 6
ISB Q,X     |$FF| 3 | 7
ISB Q,Y     |$FB| 3 | 7
ISB (Z,X)   |$E3| 2 | 8
ISB (Z),Y   |$F3| 2 | 8


NOP / NPO STABILNY
--------------------
Niepublikowany NOP
Znaczniki: -

Assembler  |kod|dł.|cykle
-----------|---|---|-----
NPO        |$1A| 1 | 2
NPO        |$3A| 1 | 2
NPO        |$5A| 1 | 2
NPO        |$7A| 1 | 2
NPO        |$DA| 1 | 2
NPO        |$FA| 1 | 2


NOP / NPO (DOP) STABILNY
--------------------
Dwobajtowy NOP
Znaczniki: -

Assembler  |kod|dł.|cykle
-----------|---|---|-----
NPO Z       |$04| 2 | 3
NPO Z,X     |$14| 2 | 4
NPO Z,X     |$34| 2 | 4
NPO Z       |$44| 2 | 3
NPO Z,X     |$54| 2 | 4
NPO Z       |$64| 2 | 3
NPO Z,X     |$74| 2 | 4
NPO #n      |$80| 2 | 2
NPO #n      |$82| 2 | 2
NPO #n      |$89| 2 | 2
NPO #n      |$C2| 2 | 2
NPO Z,X     |$D4| 2 | 4
NPO #n      |$E2| 2 | 2
NPO Z,X     |$F4| 2 | 4


NOP / NPO (TOP) STABILNY
--------------------
Trzybajtowy NOP
Znaczniki: -

Assembler  |kod|dł.|cykle
-----------|---|---|-----
NPO Q       |$0C| 3 | 4
NPO Q,X     |$1C| 3 | 4 *
NPO Q,X     |$3C| 3 | 4 *
NPO Q,X     |$5C| 3 | 4 *
NPO Q,X     |$7C| 3 | 4 *
NPO Q,X     |$DC| 3 | 4 *
NPO Q,X     |$FC| 3 | 4 *


SBC / SBC (?) STABILNY
--------------------
Niepublikowany SBC #n
Znaczniki: N,V,Z,C

Assembler  |kod|dł.|cykle
-----------|---|---|-----
SBC #n      |$EB| 2 | 2


LAX / LAX STABILNY
--------------------
Zaladuje dana do A i rejestru X.
Znaczniki: N,Z

Assembler  |kod|dł.|cykle
-----------|---|---|-----
LAX Z       |$A7| 2 | 3
LAX Z,Y     |$B7| 2 | 4
LAX Q       |$AF| 3 | 4
LAX Q,Y     |$BF| 3 | 4 *
LAX (Z,X)   |$A3| 2 | 6
LAX (Z),Y   |$B3| 2 | 5 *


RLA / RLN STABILNY
--------------------
Wykonuje ROL na pamieci, nastepnie AND z A (wynik w A).
Znaczniki: N,Z,C

Assembler  |kod|dł.|cykle
-----------|---|---|-----
RLN Z       |$27| 2 | 5
RLN Z,X     |$37| 2 | 6
RLN Q       |$2F| 3 | 6
RLN Q,X     |$3F| 3 | 7
RLN Q,Y     |$3B| 3 | 7
RLN (Z,X)   |$23| 2 | 8
RLN (Z),Y   |$33| 2 | 8


RRA / RRD STABILNY
--------------------
Wykonuje ROR na pamieci, nastepnie ADC z A (wynik w A).
Znaczniki: N,V,Z,C

Assembler  |kod|dł.|cykle
-----------|---|---|-----
RRD Z       |$67| 2 | 5
RRD Z,X     |$77| 2 | 6
RRD Q       |$6F| 3 | 6
RRD Q,X     |$7F| 3 | 7
RRD Q,Y     |$7B| 3 | 7
RRD (Z,X)   |$63| 2 | 8
RRD (Z),Y   |$73| 2 | 8


ASO / ASO STABILNY
--------------------
Wykonuje ASL na pamieci, nastepnie ORA z A (wynik w A).
Znaczniki: N,Z,C

Assembler  |kod|dł.|cykle
-----------|---|---|-----
ASO Z       |$07| 2 | 5
ASO Z,X     |$17| 2 | 6
ASO Q       |$0F| 3 | 6
ASO Q,X     |$1F| 3 | 7
ASO Q,Y     |$1B| 3 | 7
ASO (Z,X)   |$03| 2 | 8
ASO (Z),Y   |$13| 2 | 8


LSE / LSE STABILNY
--------------------
Wykonuje LSR na pamieci, nastepnie EOR z A (wynik w A).
Znaczniki: N,Z,C

Assembler  |kod|dł.|cykle
-----------|---|---|-----
LSE Z       |$47| 2 | 5
LSE Z,X     |$57| 2 | 6
LSE Q       |$4F| 3 | 6
LSE Q,X     |$5F| 3 | 7
LSE Q,Y     |$5B| 3 | 7
LSE (Z,X)   |$43| 2 | 8
LSE (Z),Y   |$53| 2 | 8


SHX / SHX STABILNY
--------------------
Do starszego bajtu adresu dodaje jeden i wykonuje AND z rejestrem X.
Tak otrzymana wartosc zapisuje w pamieci.
Jesli bylo przekroczenie granicy strony zapis nastapi pod adresem ktorego starszy bajt jest rowny otrzymanej wartosci.
Znaczniki: -

Assembler  |kod|dł.|cykle
-----------|---|---|-----
SHX Q,Y     |$9E| 3 | 5


SHY / SHY STABILNY
--------------------
Do starszego bajtu adresu dodaje jeden i wykonuje AND z rejestrem Y.
Tak otrzymana wartosc zapisuje w pamieci.
Jesli bylo przekroczenie granicy strony zapis nastapi pod adresem ktorego starszy bajt jest rowny otrzymanej wartosci.
Znaczniki: -

Assembler  |kod|dł.|cykle
-----------|---|---|-----
SHY Q,X     |$9C| 3 | 5


ARR / ARR STABILNY
--------------------
Gdy znacznik D=0 rozkaz dziala nastepujaco:
Wykonuje AND na A i danej po czym ROR.
Znacznik C wpisuje do b7, b6 do znacznika C, do V b6 EOR b5.
Gdy znacznik D=1 - uzupelnic
Znaczniki: N,V,Z,C

Assembler  |kod|dł.|cykle
-----------|---|---|-----
ARR #n      |$6B| 2 | 2




CIM / CIM (?) NIESTABILNY
---------------------------
Blokuje procesor. Jesli pojawilby sie softcore zamiennik 6502C bylo by to dobre miejsce na rozszerzenie CPU - w 100% zgodne z istniejacym oprogramowanie.
Znaczniki: -

Assembler  |kod|dł.|cykle
-----------|---|---|-----
CIM          |$02| 1 | -
CIM          |$12| 1 | -
CIM          |$22| 1 | -
CIM          |$32| 1 | -
CIM          |$42| 1 | -
CIM          |$52| 1 | -
CIM          |$62| 1 | -
CIM          |$72| 1 | -
CIM          |$92| 1 | -
CIM          |$B2| 1 | -
CIM          |$D2| 1 | -
CIM          |$F2| 1 | -


SHA / SHA NIESTABILNY
-----------------------
Do starszego bajtu adresu dodaje jeden i wykonuje AND z A, nastepnie AND z rejestrem X.
Tak otrzymana wartosc zapisuje w pamieci.
Jesli bylo przekroczenie granicy strony zapis nastapi pod adresem
ktorego starszy bajt jest rowny otrzymanej wartosci.
Znaczniki: -

Assembler  |kod|dł.|cykle
-----------|---|---|-----
SHA Q,Y     |$9F| 3 | 5
SHA (Z),Y   |$93| 2 | 6


SHS / SHS NIESTABILNY
-----------------------
Do rejestru S zapisuje wynik operacji A AND X nastepnie do starszego bajtu adresu dodaje
jeden, wykonuje AND z S i zapisuje wynik w pamieci.
Jesli bylo przekroczenie granicy strony zapis nastapi pod adresem
ktorego starszy bajt jest rowny otrzymanej wartosci.
Znaczniki: -

Assembler  |kod|dł.|cykle
-----------|---|---|-----
SHS Q,Y     |$9B| 3 | 5


LAS / LAS NIESTABILNY
-----------------------
Wykonuje AND na zawartosci pamieci i rejestru S, wynik zapisuje w rejestrach A, X, S.
Znaczniki: N,Z

Assembler  |kod|dł.|cykle
-----------|---|---|-----
LAS Q,Y     |$BB| 3 | 4 *


ANE / ANE NIESTABILNY
-----------------------
Znaczniki procesora ustawiane są wg. operacji argument AND A.
Rozkaz najpierw wykonuje sume logiczna argumentu i wartosci $EF, następnie operacji AND na rejestrze X i wyniku. Następnie z tak otrzymaną wartością wykona AND z A. Wynik w A.
Znaczniki: N,Z

Assembler  |kod|dł.|cykle
-----------|---|---|-----
Immediate   |XAA #arg   |$8B| 2 | 2


ANX / ANX NIESTABILNY
-----------------------
Wykonuje operację argument AND A, wynik zapisuje w A oraz rejetrze X.
Znaczniki: N,Z

Assembler  |kod|dł.|cykle
-----------|---|---|-----
ANX #n      |$AB| 2 | 2


---
lista po sprawdzeniu bedzie modyfikowana. jesli ktos ma informacje (najlepiej wyniki testow) potrzebne do weryfikacji polecam sie.

ponizej program testowy na jeden z rozkazow DO SPRAWDZENIA, program Foxa w zrodlach i po skompilowaniu.
zrodla: http://asap.git.sourceforge.net/git/git … 8a;hb=HEAD

i jeszcze raz: prosze uruchamiac na standardowym atari xl/xe

Ostatnio edytowany przez xxl (2012-03-26 16:53:19)

Post's attachments

anx_test.obx 427 b, liczba pobrań: 4 (od 2012-03-13) 

Tylko zalogowani mogą pobierać załączniki.
http://atari.pl/hsc/ad.php?i=1.

46

Odp: 6502C niepublikowane rozkazy

Jestem skłonny wyknoać parę testów bo akurat mam kilkanaście różnych 6502 wydlubanych z atarek. (w zasadzie to chce udowodnic ze rozkazy wskazane jako stabilne nie dzialaja na wszystkich procesorach - czego jestem pewien i dlateog sieje zamęt ;)))

Ale zanim zaczne to mam pytanie: Jak metodycznie sprawdzić czy rozkaz nielegalny się wykonał tak jak należy?
IMHO samo sprawdzenie flag i pamięci (argumentów) nie daje 100% pewności że za stan faktyczny odpowiada nielegal
a nie jakieś inne hocki-klocki w dekoderze rozkazów, faza ksiezyca albo  ilosc dni do owulacji. :)

Ostatnio edytowany przez syscall (2012-03-13 14:53:07)

"Was powinny uzbrojone służby wyciągać z domów do punktów szczepień, a potem zamykać do pi* za rozpowszechnianie zagrożenia epidemicznego" - Epi 2021
"Powinno się pałować tylko tych co tego nie rozumieją. No i nie szmatki i nie chirurgiczne tylko min FFP3, to by miało jakiś sens. U mnie we firmie, to jak przychodzi bezmaskowiec, to stoi w deszczu przed firmą" - Pin 2021

47

Odp: 6502C niepublikowane rozkazy

To jest jedna z krążących list ewidentnie niesprawdzonych domysłów. Konkretnie:

ARR - opis C i V jest błędny, w dodatku rozkaz zachowuje się inaczej w trybie dziesiętnym
SHA, DCP - błędne opisy
LAS - niestabilny jest znacznik Z
SHX, SHY, SHS - opis jest niepełny
SKW - indeksowanie może wpływać na czas trwania rozkazu, więc nieprawda, że argument nie ma znaczenia
ANE - to obszerny temat

Najlepiej zajrzyj do źródeł ASAPa.

@syscall: Skoro jesteś pewien, że potrafisz wykazać, że rozkazy wskazane jako stabilne nie działają na wszystkich procesorach fabrycznie montowanych w Atari, to udowodnij to. To będzie ciekawsze, niż udowodnienie, że działają 100% prawidłowo.

https://www.youtube.com/watch?v=jofNR_WkoCE

48

Odp: 6502C niepublikowane rozkazy

swietnie! uwagi pomoga stworzyc prawidlowa liste!

> SKW - indeksowanie może wpływać na czas trwania rozkazu, więc nieprawda, że argument nie ma znaczenia

ma znaczenie (mozliwe przejscie przez granice strony), poprawione

---
> DCP - błędne opisy

poprawiony

---
> ARR - opis C i V jest błędny, w dodatku rozkaz zachowuje się inaczej w trybie dziesiętnym

opis usuniety, faktycznie dzialanie rozkazu jest bardziej skomplikowane

Ostatnio edytowany przez xxl (2012-03-13 20:18:03)

http://atari.pl/hsc/ad.php?i=1.

49

Odp: 6502C niepublikowane rozkazy

lista jest tworzona od poczatku na podstawie SPRAWDZONYCH danych (zrodel ASAP/Fox) a nie danych dostepnych na roznych stronach www, ktore czesto zawieraly bledy a nawet informacje sprzeczne - moze stad powszechna opinia, ze rozkazy niepublikowane dzialaja roznie :-)

dzis poprawiony ANC, SAX, ALR, SBX

@syscall: jesli masz dostep do roznej masci procow instalowanych w atarkach to licze na testy!!!

Ostatnio edytowany przez xxl (2012-03-14 20:38:47)

http://atari.pl/hsc/ad.php?i=1.

50

Odp: 6502C niepublikowane rozkazy

Sprawdziłem $8B i $AB na UM6502I i działają mi identycznie (czyli A=X=A&imm).
Dodatkowo sprawdziłem $A3, bo mam wersję 64doc.txt twierdzącą, że to LAX (arg),y, ale okazało się, że to jednak LAX (arg,x) tak jak twierdzą wszyscy inni :)