76

@jellonek: zdjecie plyty w dobrej rozdzialce umiesc tu http://www.atari.org.pl/forum/viewtopic.php?id=10165

@syscall: moze zrob zdjecie tych prockow - pewnie czesc z nich juz jest przetestowana...

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

77

syscall napisał/a:

xxl: poczekaj az sprawdze te swoje kilkanascie procków :P

syscall napisał/a:

Doczekasz, naprawde nie mam teraz na czym testowac.


to co? beda chociaz te zdjecia? jesli nie masz czasu testowac udostepnij zdjecia (moze faktycznie masz cos czego jeszcze nie przetestowałem) - znajde atari z takim procem i sprawdze.

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

78

XXL - mam wątpliwości co do klasyfikacji na atariki. Dlaczego CIM są na czerwono? Przecież to są bardzo stabilne rozkazy. Za każdym razem działają tak samo - Czekają na przerwanie RESET. Powinno się wg mnie zmienić ich nazwę na WAR - WAit for Reset.

79 Ostatnio edytowany przez xxl (2012-07-07 19:09:18)

"Użyto mnemoników stosowanych w makroassemblerze MADS oraz monitorze emulatora Atari800Win PLus." - po co wymyslac nowe nazwy mnemonikow?

CIM w.mnie jest niestabilny. nie mozna sprawdzic jak dziala. czeka na reset? za malo. co ze wskaznikami, rejestrami, pamiecia.

---
na zielono sa tylko te rozkazy ktore na 100% dzialaja i mozna podac dokladnie co sie dzieje w pamieci, rejestrach i wskazniku.

na czerwono mimo, ze niektore z nich dzialaja jak w opisie to sposob dzialania zalezy od modelu a wiec nie sa wspolne dla wszystkich 6502C. - te niestabilne to tez ciekawy temat... ale to innym razem

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

80

Kiedy to jasne. Zobacz sobie tę symulację. Zmieniam tu parę rejestrów, odpalam WARa o kodzie $02, a po pewnym czasie resetuję procesor powtarzając ten sam kod. Jak widać ten WAR (i wg mnie wszystkie inne, ale możesz sobie sprawdzić) nie zmienia zawartości żadnych rejestrów, ani nie zapisuje nic do pamięci (rw jest zawsze 1). RESET ustawia tylko I i przesuwa stos i widzimy, że żadne inne rejestry się nie zmieniły. Możesz trywialnie odpalić podobny kod na prawdziwym atari i uzyskasz ten sam efekt.

Jak widzisz, można sprawdzić jak działa, a działa bardzo deterministycznie i dokładnie wiadomo co dzieje się z rejestrami i pamięcią, więc nie uważam, jakoby był to rozkaz niestabilny. Bądź konsekwentny i zrób go na zielono. Niefortunną nazwę już przeboleję, ale rzekoma niestabilność jest dla tej rodziny rozkazów krzywdząca.

81

nazwy nielegali podpatrywałem w Atari800Win, stąd Mads ich używa, można wstawić dodatkowe nazwy mnemoników jako alternatywę

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

82 Ostatnio edytowany przez xxl (2012-07-08 18:39:40)

@laoo: ta symulacja nie dotyczy 6502C. nie wierzysz? sprawdz rozkaz SHA. proponuje wykonywac testy na atari a nie na emulatorach...

---
> można wstawić dodatkowe nazwy mnemoników jako alternatywę

ja ciagle uzywam np .byte $0c zamiast NPO - sprawdz jak to dziala w mads. lepszy bylby TOP... a dla 2 bajtowych nop DOP ale nie wiem czy jest o co kruszyc kopie ... (takie mnemoniki widzialem na c64...)

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

83

Ta strona zawiera symulator, nie emulator. Zacytowałem ją gwoli pokazania, że nie ma nic magicznego w teście, który wykaże, że te rozkazy są stabilne i program na prawdziwym atari pokaże ci ten sam efekt jaki można zaobserwować w symulatorze, musiałby być tylko "interaktywny", bo wymagałby wielokrotnego naciskania RESET.

84

ten symulator nie jest symulatorem 6502C !!! juz mowilem - sprawdz inne rozkazy niepublikowane i zobaczysz ze w tym symulatorze daja inne wyniki niz na atari !!!

rozkazy CIM (KIL/JAM/HLT) bardzo trudno sprawdzic... co ma byc w opisie? "funkcja nieznana, stan rejestrow nieznany, wyglana to to ze blokuje procesor" - i to ma byc opis stabilnego rozkazu? gdyby zapodac atari custom OS - byc moze po reset cpu nie zmienia znacznikow i rejestrow cokolwiek mozna by bylo wymyslec a tak nic nie wiadomo.

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

85

laoo: daj sobie spokoj. xxl wybiorczo podchodzi do tego co jest standardowe (np. 6502 to MUSI byc 6502c, ale popatrz juz np. na podejscie do ramu i "mapram").
nie przetlumaczysz mu ze w 6502c czesc rozkazow dziala przypadkowo, bo maja uproszczony (wzgledem chocby 65c02, czy 65816,  czy innych 65xx) dekoder instrukcji. uproszczony, celem minimalizacji ilosci bramek...

co z tego ze rejestry maja jakikolwiek stan, skoro i tak stan procesora wymaga resetu?
dasz rade zrobic cos z nimi bez resetu?

xxl od lat ma swoja wizje co mu pasuje jako standardowe, a co nie (nie tylko o ten ram chodzi, nie tylko o podejscie do dosow ;) ). ma swoja wizje - i uwazam ze nalezy ja uszanowac, przemilczajac ;)

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

86

> nie przetlumaczysz mu ze w 6502c czesc rozkazow dziala przypadkowo

dasz rady to udowodnic ? dzwonili ale nie wiesz gdzie ani po co...

to co sie zgadza to podpisz pod zdjeciem ;-)

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

87

chcesz konkretnych informacji na ten temat - to nie pros innych by ci udowadniali cokolwiek. napisz do mensza (http://www.westerndesigncenter.com/wdc/WDC_Founder.cfm - ponoc "z lekkim opoznieniem", ale odpowiada na maile) - niech on ci wyjasni, bo pewnie innym osobom nie uwierzysz...

no chyba ze sam cos wyczytasz z http://www.6502.org/documents/publications/6502notes/ choc znajac ciebie zaraz odpowiesz ze to tyczy sie 6502 a nie 6502c :D

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

88

kim1 user notes.... litosci

tyle tam info dotyczacych tematu co w tym: http://www.youtube.com/watch?v=oavMtUWDBTM tresci

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

89

Wydaje się, że z tymi rozkazami jest jak z czasownikami nieregularnymi w angielskim.
Nazywamy je nieregularnymi ale wśród nich można wypatrzeć co najmniej 3 stałe wzorce tworzące.

Może to nie jest "profi" korzystać z tych rozkazów ale jeśli program ma być bardziej "sweetaśny" i działać na 95%
sprzętu, to "why not" ?

90

: Może to nie jest "profi" korzystać z tych rozkazów ale jeśli program ma być bardziej "sweetaśny" i działać na 95%
sprzętu, to "why not" ?

dziala na 100% komputerow atari xl/xe :-)

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

91 Ostatnio edytowany przez laoo/ng (2012-07-08 22:31:55)

6502/6502C różnią się na tyle niewiele, że różnica w nielegalach powinna być wg mnie tylko na poziomie rozkazów niestabilnych, czyli zbierających śmieci z szyny. Specyfika WARów polega na utracie poczucia czasu, bo po 7 cyklu urywa im się film ;) i nie ma możliwości, żeby któryś przeszedł do następnego rozkazu. Do pamięci nigdy nic nie zapisują, kwestia tylko, czy nie modyfikują żadnych rejestrów. Symulator pokazuje, że nie, ale nie mamy pewności nieistnienia po drodze żadnych "efektów szynowych". Potrzebne byłyby albo wnikliwe testy w dziczy z podmienionym ROMem, żeby przechwycić oryginalny RESET, albo mądrzejszy symulator potrafiący wykryć niestabilności - wg mnie jest to możliwe na poziomie symulacji.

Ogólnie tylko żartuję sobie z arbitralnego podziału STABILNE / NIESTABILNE i odmowie nadania stabilnego statusu rozkazom, które u nikogo nie zrobiły nigdy nic innego, jak zaczekanie na RESET. Jestem przekonany, że da się to rozstrzygnąć za pomocą odpowiedniego symulatora (poprzez wykrycie "zapisów" na wewnętrzną szynę z kilku źródeł), ale gra nie jest warta świeczki.

92

a ja bede bronil podzialu na stabilne oraz niestabilne. jest tak jak piszesz - niestabilne w tym symulatorze dzialaja a na atari nie i mozna to latwo sprawdzic. stabilne dzialaja i tu i tu (i nie sadze, zeby znalazl sie smialek ktory to podwazy - testy sa bardzo proste mozna sprawdzic) natomiast z CIM jest taki problem, ze nie mozna testami potwierdzic lub podwazyc jego dzialania (nie na atari ze standardowm atari OS).

>  różnica w nielegalach powinna być wg mnie tylko na poziomie rozkazów niestabilnych, czyli zbierających śmieci z szyny.

nie przywiazywalbym wagi do niestabilnych bo i tak tych akurat bym nie uzywal ale umiem wykazac, ze w SHA nie sa to smieci.

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

93

xxl napisał/a:

dziala na 100% komputerow atari xl/xe :-)

Seria ATARI XXL :) :) :)

94

Co do rozkazów CIM/JAM/KIL/WAR wiadomo, jak one działają - mianowicie procesor wchodzi w stan, w którym nie pobiera następnych instrukcji i nic nie robi. Jeśli chcecie, mogę poszukać linka z dokładnym opisem. Spotkałem się z zestawieniem opcodów, które twierdzi, że dwa lub cztery opcode-y CIM/JAM/KIL/WAR nie zawsze powodują zawieszenie - ale nie sprawdzałem, ile w tym prawdy.

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

95

2 i 3 bajtowe NPO (DOP/TOP), spotkalem sie z nazwami SKB,SKW (skip byte/word) ale uwazam, ze takie nazwy sa mylace poniewaz rozkaz NPO wykonuje odczyt z adresu (moze wplywac na rejestry wrazliwe na odczyt), nie wplywa na znaczniki i rejestry - przez co do maskowania rozkazow jest lepszy od BIT.

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

96

Racja, w dodatku mają różne tryby adresowania przekładające się na liczbę cykli (w tym dodatkowy cykl przy przekroczeniu granicy strony przy indeksowaniu X). Co do maskowania rozkazów, nie znam przypadku w którym BIT by się nie nadał.

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

97

no chyba wszystkie uzaleznione od wskaznikow zaraz po BIT.

nie za ambitny przyklad ale ciekawe zagniezdzenie nopow :) i w x roznica...

            lda granica
_1        dcp (licznik),y
            top
_2        inx
            top
            bcc _2
            bne _1
http://atari.pl/hsc/ad.php?i=1.

98 Ostatnio edytowany przez xxl (2012-07-13 23:11:09)

albo cos takiego. przekazujemy do podprogramu parametry przykladowo dwa:

    jsr podprogram
    .byte $00,$00

zwyczajowo podprogram powinien aktualizowac stos zeby ominac parametry po powrocie:

      lda PZER0
      clc
      adc #2
      tay
      bcc _1
      inc PZER0+1
_1    lda PZER0+1
      pha
      tya
      pha
      rts

a z niepublikowanym rozkazem TOP mozna to ominac:

    jsr podprogram
    TOP
    .byte $00,$00

i podprogram wraca tak

    rts

caly czas wskazniki mamy prawidlowe

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

99

na AAge byl watek o mnozeniu przez 16 bez tablic (zmiescili sie w 28 cyklach)

tu wersja z niepublikowanym w 22 cyklach

      ldx #$f0    ;2
      asl @       ;4
      rol @       ;6
      rol @       ;8
      rol @       ;10
      sax low     ;14
      and #$07    ;16
      rol @       ;18
      sta high    ;22
http://atari.pl/hsc/ad.php?i=1.

100 Ostatnio edytowany przez xxl (2012-07-16 14:56:33)

a Fox z dwoma niepublikowanymi zrobil to w 20 cyklach :-)

ror @
ror @
ror @
ror @
ldx #$f
sax high
arr #$e0
sta low
http://atari.pl/hsc/ad.php?i=1.