Wiem, że temat nie do końca związany z Atari, ale jest tu z pewnością kilka osób, które spotkały się z procesorem 65816, więc pozwolę sobie zapytać. Napisałem symulator tego procesora. Piszę "symulator", bo choć docelowo jest (lub przynajmniej taki jest cel) programowo zgodny z 65816 (symuluje też błędy tego procesora), to nie jest zgodny jeśli chodzi o zgodność cykli. Ale do rzeczy. Układ działa na STM32H750, takim jak ten: ->link<- . A teraz w związku z testami poszukuję odpowiedniego oprogramowania, które pozwoliłoby wykryć ewentualne błędy. Chodzi też o programy, dzięki którym mógłbym określić jaką wydajność ma ten symulator. Na razie sprawdziłem ten w wersji full z dodatkowymi testami arytmetyki BCD: ->link<- Układ przechodzi cały, nie wykrywając błędów symulacji. Jeśli ktoś zna podobne testy, to proszę o info.
Układ wciąż jest rozwijany, w tej chwili może współpracować ze wszystkim, co obsługuje konsolę VT-100 (czyli w praktyce port szeregowy, ekran i klawiaturę). Aktualnie pracuję nad dodaniem emulacji i8080 (z80) oraz systemem dla wykonywania programów w kodzie natywnym ARM-Cortex, a kolejnym etapem będzie dołączenie współpracy z magistralami komputerów 8-bit. Jeśli ktoś jest zainteresowany, to więcej info tutaj: ->link<-
Na razie jeszcze nie publikuję. W sumie rozwijam to, aby dla mojego Apple II i chcę zrobić coś w rodzaju akceleratora mogącego wykonywać kod 65816, i8080 (choć pewnie rozszerzę go na z80) i oczywiście natywny ARM Cortex7. Chcę, aby każdy emulowany core miał bezpośredni dostęp do hardwaru, ale też aby drive'y nie wykorzystywały RAM, tak że cały RAM jest dostępny dla emulowanych procesorów i widziany przez nie w taki identyczny sposób jak w oryginale, czyli RAM zaczyna się od $0000 i kończy zależnie od banku np. w stm32h750 na $7FFFF. Jeśli pojawi się np. układ z większym RAM lub np. z zewnętrznym, to będzie można go też uruchomić z dostępem do większej ilości RAM. W tej chwili zrobiłem już emulację 65816 i w zasadzie jestem na etapie jej testowania. I mam ok. 50% emulacji i8080. Z hardware mam sterowniki do obsługi portów szeregowych, w razie potrzeby można ich dodać nawet kilka, taktowania CPU i portów równoległych. W dalszej kolejności chcę ukończyć i8080 i uruchomić RTC. A potem być może USB. Myślałem też o uruchomieniu na innych platformach niż Apple. Wczoraj udało mi się uruchomić monitor systemowy dla 65816, miałem z nim trochę problemów, bo okazało się, że w kodzie źródłowym (nie moim) był błąd. W każdym razie udało się go zlokalizować i teraz już działa.
Pewnie by się dało, tyle że w przypadku Apple, czy nawet C64, istnieje możliwość odłączenia CPU i przejęcia magistrali co daje bezposredni dostep do pamieci i I/O. Dodatkowo istnieje jeden standard gniazd do tego, gdzie w Atari byłby problem. W każdym razie na pewno można by podłączyć się przez port szeregowy, czy nawet joysticka, gdzie Atari działałoby jako terminal. No chyba że od razu Atari 2600 ;) W każdym razie temat mógłby być ciekawy ;)