Grajka dostała 6502. A nawet "65032 (?)". Znalazłem gotowca pod nazwą Fake6502. http://rubbermallet.org/fake6502.c Napisany w C - nie mój język ojczysty - ale czytelnie. Przetłumaczyłem na pascala. Oryginał jest czystym 6502 z illegalami. Dopisałem instrukcje 65C02. Illegale pod x3,x7,xB i XF zostały :). Żeby zrobić z tego coś, co skorzysta z większej ilości RAMu, dodałem mu rejestry segmentowe. Są 32-bitowe, ea:=segment shl 8 + ea6502. Więc jest 40 bitów przestrzeni adresowej :). Instrukcje ldc, ldd, stc, std, phc, phd, plc, pld upakowałem ( z wyjątkiem jednej) pod x2. Duża przestrzeń jest potrzebna jeśli to coś ma na przykład z poziomu 6502 grać "wszystko" (pliki .dmp mają na ogół >64 KB)
W rezultacie grajka, oprócz plików .dmp ze zrzutami rejestrów SIDa gra teraz także pliki .sid. Póki co, PSID. RSID muszę jeszcze rozpracować. W następnej kolejności do obróbki pójdzie nasz ojczysty .sap. POKEYa muszę spreparować :).
Paczkę z nową wersją grajki wrzucę, jak zrobię w niej porządek. Bo zagrała prawidłowo 5 minut temu, wyświetla na ekranie mnóstwo info niezbędnego do debugowania zamiast tego co trzeba i wciąż nie porusza się po katalogach, co teraz stało się już niezbędne.
PS: ten 6502 działa na blaszaku z "częstotliwością" ~300 MHz. Około 70 milionów instrukcji na sekundę. Zapuściłem na malinie. Jak zwykle, 1:10, ~30 MHz, ~7 MIPS. Pod SID/SAP/co-tam-jeszcze-playera i 7 MIPS wystarczy :) Ale to nie jest czasowo optymalny kod. Za dużo wywołań funkcji.