peterkaczorowski napisał/a:Możliwe, że będzie hybryda tych procesorów, ale nie sprawdzałem dekoderów rozkazów i nakładania się ich, tak żeby np. zbudować 65C816 z illegalsami 6502C. Mogłoby być fajne, ale nie wiem czy możliwe.
Rozmawialiśmy już o tym i nie jest to możliwe, bo 65C816 ma wykorzystane wszystkie 256 opkodów z tablicy (ok, 255, bo 1 opkod jest zerezerwowany). Dajmy na to, opkody $xF, wszystkie nielegalne na 6502, na 65C816 są wykorzystane na tryby adresowania long abs ("długie", z 24-bitowym adresem, typu LDA $F00000).
Nawet gdyby zaryzykować rozróżnienie na tryb emulacji (z nielegalami) i natywny (bez), i tak jeden z opkodów musi być użyty do przełączenia trybu, zatem czciciele faktu, że kiedyś tam firma MOS Technology postanowiła zaoszczędzić kilka centów na krzemie per procesor i nie zrobić pełnego dekodera rozkazów, i tak będą płakać, bo ten jeden będzie działał inaczej. Poza tym nowe rozkazy - typu BRA, BRL, STZ, JSR (adr,X), TYX/TXY, PHX/PHY/PLX/PLY, BIT abs,X itp. - przydają się też, i to bardzo, w trybie emulacji. Dzięki temu, że działają zawsze, można mieć np. w systemie jedną procedurę SYSVBL działającą w obu trybach i jednocześnie korzystającą z nowych rozkazów, czyli zajmującą mniej czasu :)
Ogólnie, pomijając szczegóły, chciałbym napisać, że dla 65C816 i Atari jest całkiem dużo całkiem sprawnie działającej infrastruktury, z czego pewnie mało kto sobie zdaje sprawę. Istnieje rozszerzenie dla SpartaDOS X, które podłącza pamięć znajdującą się ponad adresem $FFFF do ogólnej mechaniki zarządzania pamięcią w SDX, a tym samym sprawia, że ta pamięć staje się widoczna dla loadera binarnego tego DOS-u. Tak samo działa obsługa błędów, symbole itp.
Można zatem, przy użyciu SDX, ładować programy bezpośrednio do wysokiej pamięci 65C816 i je uruchamiać. Działa to doskonale, póki co zostało najlepiej przetestowane z rezydentami rozszerzającymi funkcje SDX, ale zwykłe programy aplikacyjne też mogą z tego korzystać.
Jest asemblerek http://drac030.krap.pl/pl-elsa-pliki.php umiejący produkować relokowalne binaria dla SpartaDOS X, które można w ten sposób wykorzystać. Z przykrością nadmieniam, że MADS się do tego nie nadaje, bo np. nie generuje fixupów dla rozkazów typu JSL. Natomiast ELSA jak najbardziej. Pisałem w tej sprawie do tebego swego czasu, ale zostałem zignorowany - no trudno :)