Przymierzam się do następującego projektu. Chcę zrobić programowo sprzętowy emulator procesora 6502 w formie płytki instalowanej zamiast oryginalnego procesora. Emulator ma wykonywać kod 6502 z oryginalną prędkością oraz z prędkością turbo. Dodatkowo chcę zaimplementować możliwość wykonywania natywnego kodu z Z80. Przełączanie pomiędzy kodem oraz prędkością emulacji za pomocą nieobsadzonych kodów rozkazów. Dodatkowo chcę dodać programową emulację drugiego układu POKEY oraz emulację SID-a. Emulator ma również obsługiwać rozszerzenie pamięci ( dostępne tylko dla procesora ), pamięć nieulotną oraz możliwość implementowania nowych rozkazów procesorów ( w natywnym kodzie procesora emulatora ). Jeszcze chcę zaimplementować możliwość emulowania funkcji blitera do generowania ruchomych obiektów na ekranie ( definicje obiektów ładowane do rozszerzenia pamięci emulatora i specjalne kody rozkazów do sterowania obiektami które były by umieszczane przez procesor w pamięci obrazu z zapamiętywaniem tła i detekcją kolizji ). Jestem ciekawy czy ktoś byłby zainteresowany takim rozwiązaniem ? Może jeszcze jakieś pomysły ?
Hm. Jakim rozwiązaniem? Czytam i na początku myślę - super. normal i turbo - piknie. Potem czytam Pokey. Ale SID i cała reszta wymyślonych przez Ciebie rzeczy ma się nijak do bycia Atari.
W związku z tym to, co chcesz zrobić poza pierwszym punktem i połową drugiego nie wiąże się z Atari.
I teraz pytanie: jeśli chcesz zrobić coś, co nie wiąże się z Atari - to mało osób będzie tym zainteresowane na tym forum, bo same możliwości bez oprogramowania to za mało.
Oczywiście, jeśli chcesz zrobić podwaliny pod zupełnie nowe hardware - to trzymam kciuki.
Z mojej strony fajnie byłoby mieć tryb turbo w Atari, ale to już jest załatwione
------------------- Z mojej strony: Ja myślałem nad wrzuceniem poszczególnych części Atari na FPGA i inne takie. POKEY, ANTIC, GTIA, 6502 w jednym FPGA... Super. Nawet ludzie próbują :)
A Amigę zrobili, a jest trudniejsza... (minimig) Kiedyś pytałem developerów Atari800 o możliwość wprowadzenia trybu turbo - zmieniamy prędkość procka ale nie zmieniamy prędkości układów pozostałych. A zapytali: Po co ci coś, co nie jest zgodne z Atari? Ty idziesz znaacznie dalej.
Ale to wszystko jest moim subiektywnym zdaniem mającym ukazać szerzej otoczkę tematu.
1. pomysł jest zacny, jednakże poczytaj najpierw o innych rozszerzeniach (vbxe, 65816, ...) - tak, żeby kompatybilność zachować. jak zrobisz coś sprzeczne z tym, co już mamy na rynku - mogą być kłopoty z zainteresowaniem. 2. fast-ram tylko dla proca (i generalnie turbo) - pomysł super, tylko pogadaj z ekipą od sparty jak by to mogło działać (i później być obsługiwane przez sdx). 3. z80 - hmmm, nie chcę świętej wojny tutaj wytaczać, ale akurat ten procesor wśród fanów 6502 ma często 'średnie' notowania. może w miejsce z80 dasz coś z rodziny 65xx (np. 65816, 6809)? 4. co do finalnego zainteresowania - na obecnym etapie nie ma za bardzo czego oceniać. jak coś zrobisz działającego - się obaczy jak to współdziała z tym co już mamy - stereo, ext ram na bankach, vbxe, 65816, ... 5. na koniec - jak szukasz niszy i chcesz sobie zapewnić nieśmiertelność - zrób interface do sieci, bo z tym bieda jest, albo jakieś 3d (a co :) ).
Osobiście byłbym zainteresowany rozszerzeniem możliwości procesora o przydatne instrukcje i ewentualnie tryby adresowania. Pasjonujący mógłby być sam proces projektowania założeń takich rozszerzeń gdyby to miało mieć charakter publicznych uzgodnień w środowisku (ucierania pomysłów szczegółowych rozwiązań). Przy czym od razu należy zauważyć że w zasadzie utarło się poprzez dotychczasową praktykę że następcą 6502 w maszynach 8-bit atari sprzętowo rozszerzanych jest procesor 65816. Istnieje wydaje mi się wciąż jeszcze mała liczba programów napisanych już pod ten procesor, ale historia "zaręczyn" (procesora 65816 z atari) jest już wieloletnia i chyba nie do bezkonfliktowego wzruszenia. Dlatego chyba rozwiązaniem optymalnym (na pewno bezpiecznym) byłaby emulacja 65816 (który sam ma "umiejętność" emulacji 6502) w przypadku projektowania procesora pod atari. Oczywiście to znacznie trudniejsze zadanie. Osobiście nie jestem zwolennikiem Z80, ale wśród atarowców tacy mogą się znaleźć (przychodzi mi na myśl xxl).
Wydaje mi się że co do możliwości dźwiękowych i graficznych atari, istnieją już odpowiednie rozszerzenia lub zaawansowane projekty, które wydaje mi się mają szansę stać się standardem dla rozbudowywanych atari.
Dobrze jednak zdać sobię sprawę że w środowisku przeważa pogląd że zbyt duża ingerencja w fabryczne możliwości sprzętu jest "ślępą uliczką". W myśl tej idei cały "fun" zajmowania się maszynami retro polega właśnie na docieraniu do (a w potocznym odbiorze przekraczaniu) granic sprzętu, a jak komuś takie nie wystarczają to powinien zmianić obiekt zainteresowania (choćby na amigę).
właśnie dlatego jako następca 6502 został wybrany 65816 ponieważ on dobrze działa w trybie 6502. jedyne co nie działa to rozkazy niepublikowane, ale mało na atari jest softu to wykorzystującego, więc strata niewielka. nie ma obecnie żadnego dostępnego rozszerzenia z drugim procesorem. najbliżej celu jest weronika (zenona i konopa), ale ostatnio temat ucichł (a szkoda).
jesli procesor to dzialajacy rownolegle - czyli projekt Konopa/Zenona (zaleta to mozliwosc dzialania na kardrydzu) albo rdzen cpu do vbxe/electron (moim zdaniem lepsze ze wzgledu na mozliwosc konfigurowania pamieci memac), typ procesora? dowolny, ma dzialac. wymiana proca na 16bitowca 65816 w trybie emulacji 6502 albo 6309 jak to ostatnio na AAge czytalem nie jest (moim zdaniem) dobrym rozwiazaniem i nie zachowuje (chocby skaly sraly) kompatybilnosci ze standardowym atari.
Dziękuję za wszystkie opinie. Najpierw ustosunkuję się do opinii, a później spróbuję może nieco dokładniej wyjaśnić o co mi chodzi. Wrzucenie całego Atari do FPGA to w mojej opinii trochę sztuka dla sztuki, wiadomo, że jest to możliwe, pytanie po co to robić ? Nie będziemy przecież wznawiać produkcji Atari, to trochę tak jak by z plastiku robić stare meble. Teraz trochę odnośnie zgodności z innymi rozszerzeniami. Poza podmianą samego procesora nie wprowadzamy żadnych zmian w komputerze, w trybie emulacji 6502 nie powinno zatem być żadnych problemów ze zgodnością. Co do interfejsu do sieci, poza satysfakcją, że jest wg mnie nie ma takie rozwiązanie najmniejszego sensu. No chyba, że do ładowania programów z serwera, ale to też sztuka dla sztuki. Co do 3D, w tym rozwiązaniu zasadniczo jest to możliwe lecz chyba też nietrafione. Co do pomysłu emulacji 65816 zamiast 6502 zgadzam się, to jest dobra sugestia.
A teraz przybliżę nieco moją koncepcję. Chodzi mi o uzyskanie efektu małym kosztem. Nie widzę sensu przyspieszania Atari np. 100 krotnie, lecz czasami są takie sytuacje kiedy brakuje mocy obliczeniowej np. w przerwaniach DLI. Przyspieszenie wykonania programu w tym momencie mogło by dać ciekawe efekty, przy czym zasadniczo uzyskane na sprzęcie Atari. Np. przy tym samym zegarze taktującym procesor wykonywanie rozkazów w 1 cyklu zegara przyspieszyło by wykonanie od 2 do 7 razy i uwalnia program od strony zerowej ( emulator mając kopię RAM-u w pamięci nie musi wykonywać cykli dostępu do pamięci Atari aby pobrać rozkaz i argumenty do wykonania ). Jestem ciekawy co by się dało wtedy wycisnąć. Po wykonaniu przerwania procesor mógł by wracać do normalnego trybu pracy. Istotne jest to aby nowe możliwości wykorzystywać tylko wtedy gdy są potrzebne, a nie mieć komputer który działa 5 razy szybciej, ale już nic na nim nie działa. Dalsze możliwości są niejako skutkiem ubocznym, pomyślałem o emulowaniu Z80 w celu łatwiejszego przeportowania programów z ZX-a. Po co przepisywać procedury z Z80 na 6502 skoro można by przełączyć procesor na chwilę w inny tryb. Co do emulowania POKEY-a i SID-a. Procesor który chcę zastosować do emulowania 6502 ( jakiś z ARM-ów ) generalnie będzie "umierać z nudów". Tak więc POKEY i SID to taka trochę przyczepka. Bardziej mi się podoba emulowanie zamiast okaleczania. Równie dobrze procesor można wykorzystać jako akcelerator grafiki 3D czy cokolwiek by nie wymyślić. Można by jeszcze wykorzystać to rozwiązanie jako emulator blitera do wypełniania pamięci obrazu Atari. Możliwe jest zrobienie np. przybliżonej emulacji duchów z C64 ( problem z kolorami ). Podoba mi się to, że wyjmujemy jeden układ, zastępujemy płytką emulatora i możemy się trochę pobawić, bez przecinania ścieżek, bez lutowania, bez wiercenia otworów w obudowie ( oczywiście emulowanie układów dźwiękowych wymagać będzie dodatkowych połączeń ale to nieistotny szczegół ). Np. nowe rozkazy w połączeniu z nowymi rejestrami: - ustawiamy wskaźnik danych ducha - ustawiamy wskaźnik pamięci ekranu - ustawiamy ustawiamy rejestry pozycji - i jednym rozkazem ( nowym ) wrzucamy tam ducha I to wszystko po podmianie jednego układu.