Ale jaja. Wygląda na to, że tak. Atari planowało zastosowanie w 400/800 procesora inspirowanego 6502, który nawet nie byłby binarnie zgodny z 6502 (zgodność miała być tylko na poziomie kodu źródłowego, tak jak 6809 kontra 6509), i wykorzystywałby wszystkie 256 opcedów. Niestety SY nie dał rady i zostali przy 6502. Wg mnie kult 6502 z jego nielegalami trochę na tym cierpi, bo nie był to upgrade, albo extension, tylko całkowita zamiana.

Miał być to procesor pseudo 16-bitowy i autor podał definicję procesora pseudo 16-bitowego, jako o "wewnętrznie 16-bitowym układzie rejestrów, jednak zewnętrznie używającym szyny 8-bitowej". Autor artykułu sam jednak nie wie, czy to procesor 8 czy 16-bitowy - w jednym miejscu pisze, że to wg niego najmocniejszy 8-bitowiec na rynku, a w inny miejscu, że będzie można wkładać do APPLE II 16-bitowy procesor.
Koncepcja jest zbliżona do 65c816 chociażby ze względu na tryby pracy (ustawiane w rejestrze Q) zamiast osobnych instrukcji 8 i 16 bitowych tak jak w 6809. Ale zestaw instrukcji wydaje mi się słabiutki... taki jakiś "z dupy". Jakieś dziwne przesłania, zamiany, dedykowane push/pull, szalone rotacje i nawet opcody na przerwania (BR1-BR5). Mam pewne wątpliwości, czy ten zestaw nie jest jakimś hoaxem, bo trzeba być chyba na jakiś kwasie, żeby tracić kompatybilność z 6502 dla czegoś tak chaotycznego.
Ja się cieszę, że to nie wylądowało w Atarkach.

577

(294 odpowiedzi, napisanych Bałagan)

No własnie to nie jest takie proste. Tylko pierwsze 512 kB (albo megabajt) jest na pamięci statycznej i zasługuje na miano Fast RAMu. Reszta jest na dynamicznej, która nie zawsze się wyrabia i powoduje wait-state'y. A nawet jeśli nie byłoby różnicy prędkości, to chodzi o szczególny obszar pamięć spoza pierwszych 16 MB, który jest bankowany specjalnym rejestrem analogicznie jak pamięć PORTB.

Mi się podoba BHRAM. Pachnie trochę Sanskrytem ;)

578

(27 odpowiedzi, napisanych Emulacja - 8bit)

Holly shit. Próbowałem przebrnąć przez tę książkę. Wydaje się jakby była dla dzieci, ale nie dajcie się zwieść pozorom. Za pierwszym razem odpłynąłem jak zobaczyłem operator <*>, potem monady rozłupały mi czaszkę, a za trzecim razem wymiękłem na zipperach.

579

(84 odpowiedzi, napisanych Różne)

A można wysłać muzyczkę na  Atari rozszerzone o Rapidusa ? ;)

580

(294 odpowiedzi, napisanych Bałagan)

crapari?

581

(27 odpowiedzi, napisanych Emulacja - 8bit)

Poczytaj tego guide'a: http://mislav.uniqpath.com/poignant-guide/
Tu facet odpłynął, ale chyba w inną stronę

582

(27 odpowiedzi, napisanych Emulacja - 8bit)

<prywatna opinia>
Olej Pythona. Ruby jest lepsze.
</prywatna opinia>

583

(294 odpowiedzi, napisanych Bałagan)

Proponuję test czarnej skrzynki. Włóżmy ustrojstwo do pudełka, wyprowadźmy kable (joystick itd) i niech reprezentatywna próbka Atarowców ocenia, czy to Atari, czy nie Atari. Jak wyjdzie, tak będzie ;)

584

(294 odpowiedzi, napisanych Bałagan)

To złącze, po którym zapierdziela Sikora 16-bitów, ale cii..., żeby się nie dowiedział, bo będzie miał następny argument w swojej krucjacie.

585

(294 odpowiedzi, napisanych Bałagan)

Łee... Pin ma jeszcze starą wersję. Moja ma ładniejszą diodę :p

Rapidus

586

(118 odpowiedzi, napisanych Programowanie - 8 bit)

Nie nie... MVN służy do czegoś zupełnie innego :cool: ;)

587

(118 odpowiedzi, napisanych Programowanie - 8 bit)

To całkiem zrozumiałem zważywszy, że najbliższy tryb adresowania do tego co chcesz osiągnąć to ora ($01,s),y :)

588

(294 odpowiedzi, napisanych Bałagan)

@Sikor: Twoje "nie mam pojęcia, więc się wypowiem" jest obezwładniające. Nie daję rady i muszę spasować.

589

(294 odpowiedzi, napisanych Bałagan)

xxl napisał/a:

nie rozumiem co to znaczy gubi cykle ale gdzies czytalem, ze 65c816 inaczej od 6502c ustawia znaczniki procesora po operacjach dziesietnych. slyszalem tez, ze cmos zjada dodatkowy 1 cykl na ustawienia wskaznikow w tym trybie. oczywiscie to moze byc bzdura, ciekawe jaka jest prawda.

Mniej więcej prawda ;)
6502 (Sally też) ma błąd przy operacjach BDC - wynik jest poprawny, ale znaczniki ustawione tak, jakby operacja była binarna. Np. dla operacji $99+$01=$00 6502 ustawia N i zeruje Z, a procesory CMOS zerują N i ustawią Z. 65c02 zużywał na korekcję znaczników dodatkowy cykl, 65c816 daje wynik ten sam co 65c02 tylko w tej samej liczbie cykli co 6502.

590

(27 odpowiedzi, napisanych Emulacja - 8bit)

@Fox: Muszę przyznać, że Twoje zainteresowanie Rubym bardzo mnie zaskoczyło, bo raczej kojarzę Cię jako perlowca ;)

Ja Ruby bardzo lubię i używam. Np. projekt firmware do Rapidusa oparłem o "rubyowy" system budowania rake i jestem bardzo z tej decyzji zadowolony.

591

(294 odpowiedzi, napisanych Bałagan)

Sikor napisał/a:

Tryb emulacji gubi cykle w stosunku do 6502, więc nie działa identycznie.

Już od dawna nie mam siły na dyskusję z Twoimi argumentami, szczególnie, że Ty nie czytasz wypowiedzi innych, np. moich, bo już w poście 87 zdementowałem te twierdzenie, a Ty się ciągle go trzymasz.
Inne argumenty pozostawię bez komentarza...

592

(294 odpowiedzi, napisanych Bałagan)

Nie jestem przecież żadną wyrocznią i wszędzie zastrzegam, że to jest kwestia osobistych odczuć, ale w moim odczuciu nierozróżnianie oryginalnego Atari wyciągniętego ze styropianów od Atari z przylutowaną elektroniką, która zwiększa jego możliwości jest błędne. Dlatego np. dzieli się dema na kategorie na podstawie wykorzystywanych rozszerzeń.
Jedyne przed czym (osobiście) oponuję, to nazywanie Atari rozszerzonego o Rapidusa komputerem 16-bitowym, który emuluje Atari XL/XE, bo uważam to za krzywdzącą grę słowną, bo sugeruje, że Rapidus jest jakimś komputerem, dla którego Atari służy za terminal.

593

(294 odpowiedzi, napisanych Bałagan)

@xxl: Na pytanie odpowiedziałem wielokrotnie, tylko nie po Twojej myśli i drążysz dalej. Jeżeli rozszerzenie wykonuje program, to program działa na rozszerzonym Atari. Rozszerzone Atari != Stock Atari i kwestią osobistej oceny jest jakie rozszerzenia się nam podobają i chcemy mieć z nimi coś do czynienia:
- Tomek przylutowany na stałe byłby rozszerzeniem, które w osobistej ocenie nie za bardzo by mi się podobało.
- VBXE ma fajne praktyczne zastosowania (80-kolumnowa konsola tekstowa itd), ale pokazywanie laikowi 256-cio kolorowych fruwających sprajtów twierdząc, że tak rysuje Atari byłoby pewnym nadużyciem.
- Rapidus ma całą masę fajnych praktycznych zastosowań - szybsze wykonywanie istniejących programów oraz możliwość pisania nowszych programów korzystających z dobrodziejstw 65c816, ale znów wmawianie komuś, że jakieś wyczesane efekty liczone na 65c816 są efektami na Atari też byłoby mijaniem się z prawdą. Byłyby to efekty na rozszerzone Atari.

To są kwestie filozoficzne, a kwestie praktyczne jak np demo compo też są jasne: demo na Rapidusa nie będzie konkurowało w jednej kategorii z demami na 6502.

594

(294 odpowiedzi, napisanych Bałagan)

@xxl: To bardzo prosta kwestia i wiesz, że wiem, że to rozumiesz tylko chcesz trochę poflejmować ;)
Tomek nie jest rozszerzeniem. To zewnętrzne urządzenie, którego sposób działania jest obojętny dla Atari. Podobnie jak w LDW 2000 jest z80, czy w SIO2SD jest AVR, tak w Tomku jest PIC. Oba urządzenia współpracują w celu uzyskania zamierzonego efektu.
Manipulujesz, ale niezbyt skutecznie, bo ze zdania "Tomek to nie Atari" wcale nie wynika "Rapidus to Atari". Można by rzec, że oba pojęcia są w rozdzielnych klasach abstrakcji, bo urządzenia są całkowicie ortogonalne.
Odpowiadając na ostatnie pytanie: nic nie sprawia, że Rapidus to Atari. Nie wiem kto Ci to naopowiadał, albo jak do tego doszedłeś, na pewno nie na podstawie moich wypowiedzi. Jedyne co można twierdzić, to że Atari + Rapidus, to rozszerzone Atari.

595

(294 odpowiedzi, napisanych Bałagan)

swinkamor12 napisał/a:

65816 obsługuje JSR/JMP w 24 bitach, bez kombinacji, bez przełączania banków pamięci, bez żadnych tego typu cudów. Po prostu kod może być w każdym miejscu w tych liniowych 16 MB .
Jest to w 6809,Z80 - nie.
Już to jest rewolucją względem 8 bit - exe może mieć kilkaset kb czy nawet parę MB.
Oprócz tego stos jest 16bit, dane mogą być w innym segmencie, a kod jeszcze w innym.
Czyli w sumie jest do wykorzystania ile - naraz ponad 180 kB, bez kombinacji z bankami pamięci
Jeszcze można do tego dorzucić tryby adresowania indeksowego gdzie podaje się segment i mamy coś co jest daleko poza możliwościami 8 bitowców.

A poczytaj sobie o Zilog eZ80 i wytłumacz mi, dlaczego można nazwać go 8-bitowcem (i nazywa się go 8-bitowcem nawet w oficjalnym podręczniku), a 65c816 już nie można.
Dziękuję.

596

(294 odpowiedzi, napisanych Bałagan)

xxl napisał/a:

to nie bylo pytanie o to czy "Rapidus" jest rozszerzeniem, "new device" czy czymkolwiek innym, pytanie brzmialo, czy jesli rozszerzenie Atari wykonuje program to mozna powiedziec ze program dziala na Atari? dalem przklad "Tomka", czy program ktory wykonuje "Tomek" jest programem na Atari?

Widzę, że naszło Cię na filozofowanie ;)
Więc filozoficznie rzecz ujmując, Ty naprawiłeś domniemany wg Ciebie błąd konstruktorów Atari nieudostępniania schowanej pamięci tworząc mapram, a Pasiu naprawił domniemany wg mnie błąd konstruktorów Atari niewstawienia w pewnym momencie 65c816 tworząc Rapidusa. Żadne z tych podejść nie zachowuje stock-Atari, bo wymaga zabiegów lutowniczych. Rapidus rozszerza jeden z komponentów komputera. To, że jest to akurat procesor niewiele wnosi, ponieważ gdyby nie spadek zainteresowania 8-bitowcami w końcu ten procesor wylądowałby oficjalnie w Atarce (czego nie można powiedzieć o mapramie).

Z Tomkiem jest trochę inaczej, gdyż jest to cartridge. Dla Atari jest to obojętne co dzieje się w jego środku. Tomek to nie Atari, więc program wykonywany przez Tomka nie jest programem na Atari. Oba komputery współpracują jednak tworząc wspólną zawartość.

597

(294 odpowiedzi, napisanych Bałagan)

Sikor napisał/a:
laoo/ng napisał/a:

Pamięć: 6502 też ma dostęp do większej pamięci od 130XE. 65c816 jest tylko trochę "cwańszy" i potrafi adresować tę pamięć sam w ramach 8-bitowej architektury.

Hmm, taki rozmiar pamięci w ramach 8-bitowej architektury... Ciekawe...

A jakie to ma znaczenie? Za pomocą PORTB można zaadresować 4 MB. Dodając teoretycznie drugi rejestr zwiększa się to do 1 GB. Co ma tu do czynienia 8-bitowość czy nie architektury.

Sikor napisał/a:
laoo/ng napisał/a:

..Ale Rapidus (przynajmniej ze standardowym rdzeniem) w żaden sposób nie przekracza tej granicy, gdyż jest wyposażony w procesor, który jest oficjalnym i naturalnym następnikiem 6502 zaprojektowanym przez jednego z jego twórców.

Jest następnikiem, który zmienia jego działanie - staje się procesorem 16-to bitowym. Co więcej - tryb emulacji należy ustawić odpowiednią flagą...

Wciąż nie podałeś żadnego niezbitego dowodu, że 65c816 jest procesorem 16-to bitowym. Zadaj sobie trudu i porównaj jego możliwości do 6809 (było już wiele nawiązań do niego w tym wątku), który producenci nazwali 8-bitowym, bo był kontynuacją 8-bitowego 6800. Taką nazwę zapewne zastosowali żeby móc 68000 nazwać 16-bitowym, bo oba procesory pojawiły się mniej więcej w tym samym czasie.
Więcej: 6809 nie jest binarnie kompatybilny ze swoim poprzednikiem 6800 - jest kompatybilny na poziomie kodu źródłowego i kod należy przekompilować aby ruszył na nowym procesorze. Czyż zatem 16-to bitowe rejestry, mnożenie, cała masa trybów adresowania i to takich, że 65c816 może mu jeść z ręki nie pretenduje do nazwania go 16-to bitowym? Najwidoczniej nie, skoro producenci tak nie postanowili.
65c816 został nazwany 16-bitowym marketingowo, bo nie jest bardziej 16-to bitowy niż 6809. A nawet więcej. Jest zamiennikiem 6502 - wyciągasz stary procesor, wkładasz nowy rzekomo 16-bitowy i wszystko śmiga. Jak to możliwe pytam się? skoro jeden jest 8 a drugi 16-bitowy...
Inny przykład z drugiej strony barykady to 8086, który jest kompatybilny na poziomie kodu źródłowego z 8080 (tak jak 6809 kontra 6800). A jednak Intel zadecydował, że nazwie go procesorem 16-to bitowym, ponieważ konkurował z 68000.

Mieszasz w tym poście i pozostałych z trybem emulacji. Tłumaczę i objaśniam. 65c816 został zaprojektowany jako zastępnik 6502 na poziomie wymiany czipu i wszytko miało działać. Żeby to osiągnąć procesor musiał budzić się w trybie zgodnym z 6502 (tzw. "emulacji"). Nie zapala się światełko, że skoro można wyjąć procesor i w tę samą podstawkę wsadzić inny i wszytko będzie działało, to to może i nie oznacza przejścia o rząd wielkości w architekturze i wszystkim co tam sobie wymyślasz? Intel i Motorola wyprodukowały nowe 16-to bitowce i tak je nazwali. WDC chciał przyszpanować i nazwał swojego 65c816 (o funkcjonalności zbliżonej do 6809) 16-to bitowcem i za bardzo wziąłeś sobie to niestety do serca.

Sikor napisał/a:

laoo/ng napisał/a:

z programistycznego punktu widzenia ma to tylko takie znaczenie, że oszczędzamy cykl na niektórych operacjach

Czyli emulacja nie jest nawet 100% - gubimy cykle... A jak gubimy cykle na nieoficjalnych rozkazach 6502, ale stabilnych (według nomenklatury XXL-a) - to jest be? Dlaczego?

Nigdzie niczego takiego nie napisałem. Po prostu gdyby ALU był 8-bitowy, niektóre operacje 16-bitowe trwałyby cykl dłużej, a nie trwają. Trwają tyle samo co odpowiadające operacje 8-bitowe na 6502. Czasy trwania wszystkich legalnych instrukcji 6502 są takie same jak 65c816.

Sikor napisał/a:
laoo/ng napisał/a:

Skok o rząd wielkości, o jakim mówi Sikor, miałby miejsce wtedy, gdyby procesor nie potrafił pracować w środowisku 8-bitowym, czyli gdyby naturalne dla niego było połykanie w jednym cyklu 16-bitów danych. Wówczas programy 8-bitowe musiałyby być emulowane. 65c816 pracuje na danych 8-bitowych i nie należy traktować go jako w pełni procesora 16-bitowego.

Porównajmy na szybko:

56 rozkazów, 13 trybów adresowania

24 tryby adresowania w tym 13 pochodzących z 6502
Instrukcja wspierająca stosowanie koprocesora
Zdolność przesunięcia bloku


Do tego 16 bitowe rejestry indeksowe, 16 bitowy wskaźnik stosu... Tak, niewątpliwie jest w 100% kompatybilny z 6502 i jest jak on 8 bitowy. Zbyt duża różnica.

Poczytaj o 8-mio bitowym 6809. 65c816 może mu czyścić berło jeśli chodzi o 16-bitowość, tryby adresowania i rozkazy. 65c816 nie jest taki potężny właśnie dlatego, że jest zamiennikiem 6502 i projektanci mogli wprowadzić tylko takie zmiany, które nie zepsują binarnej kompatybilności, której 8-bitowy 6809 nie ma.

Sikor napisał/a:

I jak piszę - karta OK.
Jeżeli piszecie "6502 kody nieudokumentowane  są niedozwolone" - to czemu nie uznać wszelkich rozszerzeń 65816 także jako nielegalne? Z punktu widzenia 6502 są nielegalne i 6502 nie może ich wykorzystać?
Z drugiej strony - mając taki procesor czemu się ograniczać do kodu 6502? Po prostu nazwijmy to po imieniu: kod na 16-to bitowy komputer emulujący 8 bitowe Atari.

Rozkazy 65c816 są oczywiście nielegalne na 6502, bo nie potrafi ich wykonać. Zamontowanie 65c816 rozszerza Atari o możliwości nowszego kompatybilnego procesora. 16-to bitowa linia Atari to ST bo została tak zaprojektowana. Atari XL/XE jest 8-bitowe i trochę mocniejszy kompatybilny procesor tego nie zmieni.

598

(294 odpowiedzi, napisanych Bałagan)

xxl napisał/a:

szerokosc szyny danych nie decyduje. zreszta tu masz inny przyklad: 68008


ustosunkujesz sie:
http://www.atari.org.pl/forum/viewtopic ... 87#p180687

?

Tej dyskusji nie będzie końca, bo klasyfikacja jest czysto uznaniowa: vide 65c816 vs 6809 vs 6309. Przykładając różne miarki wychodzi albo 8, albo 16 albo 32 bity. Gdy tak na prawdę nie wiadomo, to ja bym poszukał najbliższego krewnego. Krewnym 68008 jest 68000, stąd można przypuszczać, że ma więcej bitów niż 8, ale ile - nie wiem ;) Podobnie 8088 jako krewny 8086.
Najbliższym krewnym 65c816 jest 6502. 816-tka nie zrywa specjalnie z funkcjonalnością, wprowadza fajne dodatki, ale nie robi rewolucji. Mi to pachnie 8-ma bitami.

Co do ustosunkowania się... Rozszerzamy Atari XL/XE o procesor wykonujący jakieś nowe instrukcje, będący kontynuacją oryginału. Poprawny stary kod działa, można napisać nowy wykorzystujący nowy procesor... Mi to wygląda na rozszerzone Atari XL/XE.

599

(294 odpowiedzi, napisanych Bałagan)

Gwoli ścisłości. Ja rozumiem jakie obawy ma Sikor. Tak samo jak Rapidusa w gniazdo CPU można włożyć jakiegokolwiek współczesnego potwora, który będzie naprawdę emulował 6502 a do pamięci Atari widocznej przez ANTIC wrzucał tylko strumień danych tworzących obraz itd... To byłaby emulacja i Atari byłby tu terminalem. Ale Rapidus (przynajmniej ze standardowym rdzeniem) w żaden sposób nie przekracza tej granicy, gdyż jest wyposażony w procesor, który jest oficjalnym i naturalnym następnikiem 6502 zaprojektowanym przez jednego z jego twórców. Żeby się lepiej sprzedawał nazwano go 16-bitowym (do czego przesłanki są w długości ALU, ale z programistycznego punktu widzenia ma to tylko takie znaczenie, że oszczędzamy cykl na niektórych operacjach.), ale jest (ew. powinien być) pod wszelkimi względami kompatybilny z poprzednikiem. Wybrano ten procesor, gdyż jest przystosowany do szybszego taktowania. Potrafi wewnętrznie zaadresować więcej RAM, to czemu mu go nie dać? Ale ten RAM nie wpływa na istniejące programy (modulo brak zapętlania się pamięci przez rozkazy indeksowe, co jest błędem i jest naprawiane przez samego Rapidusa).
Skok o rząd wielkości, o jakim mówi Sikor, miałby miejsce wtedy, gdyby procesor nie potrafił pracować w środowisku 8-bitowym, czyli gdyby naturalne dla niego było połykanie w jednym cyklu 16-bitów danych. Wówczas programy 8-bitowe musiałyby być emulowane. 65c816 pracuje na danych 8-bitowych i nie należy traktować go jako w pełni procesora 16-bitowego.

600

(294 odpowiedzi, napisanych Bałagan)

Sikor napisał/a:

Oczywiście - bo działa w trybie 16-bit, więc ma dostęp do większej przestrzeni. Działa też z niektórymi rozkazami odmiennie, więc to tylko potwierdza fakt, że 65816 tylko udaje (więc emuluje) 6502.

Nie rozumiesz w żaden sposób pojęcia emulacji. Tak naprawdę Atari zostało zaprojektowane na bazie procesora 6502. Tak się złożyło, że w niektórych Atarkach jest MOS, w innych Rockwell, a w jeszcze innych Synertek. No i jak się okazuje nie są one 100% między sobą kompatybilne, bo wspólny mają tylko modelowy zestaw funkcjonalności 6502, a reszta to co przypadkiem wyjdzie. Większość wychodzi tak samo, ale nie wszystko. Czy to znaczy, że każdy z tych procesorów emuluje 6502? Czym zatem jest prawdziwe Atari XL/XE? Te z MOSem, Rockwellem, czy Synertekiem, a może obojętnie, oby tylko kod 6502 działał?

Pamięć: 6502 też ma dostęp do większej pamięci od 130XE. 65c816 jest tylko trochę "cwańszy" i potrafi adresować tę pamięć sam w ramach 8-bitowej architektury.