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.