W końcu znalazłem trochę czasu, żeby opublikować wyniki moich zabaw z MCL64 sprzed ponad roku:
https://github.com/ytmytm/teensy64
Co działa:
- bez przyspieszeń to cycle exact emulator 6510, zastąpi zepsuty CPU
- firmware diagnostyczny:
https://github.com/MicroCoreLabs/Projec ... L64_Tester
- wybrany szybki tryb jest włączany przez bit 0 z $d030; tak samo, jak tryb 2MHz na C128; w $d0f0-f2 umieściłem prototyp rejestrów do sterowania: włączenie/wyłączenie przyspieszeń, emulacji REU itp
- ładowanie z kasety jest przechwycone: SHIFT+RUN/STOP ładuje browser do ładowania plików z karty SD, podobnie jak TapeCart. Browser jest wbudowany w firmware Teensy, na karcie wystarczy mieć same pliki. Ładowanie programów działa tak samo jak DMA z U2+ - bezpośrednio do RAM 1 bajt na cykl CPU
- na konsoli serial USB jest prototyp linii poleceń do zdalnej kontroli/debugowania
- jest też prosty emulator REU na 256K, do 512K trzeba by wlutować dodatkowy RAM na płytce Teensy
- czterokrotne szybkie wciśnięcie RESTORE też jest przechwycone przez firmware, docelowo to miałby być sposób na dostęp do menu i łatwej zmiany opcji z poziomu C64 bez używanie POKE
Co nie działa:
- port Tape - te piny nie są w ogóle wyprowadzone z Teensy
- Sonic
- rozpoznaje, że to nie C128 i nie próbuje korzystać z szybkiego trybu oraz nie ładuje się do końca - coś nie działa w emulatorze REU
Nie wiem jak szybkie to jest - wiele zależy od wyboru opcji w Arduino IDE i samego programu na C64. Zgaduję, że powinno być 10-20x szybsze od C64 w najszybszym trybie, czyli rzędu SCPU. Ograniczeniem jest też dostęp do I/O. Np. koloru ramki nie można zmieniać częściej niż co cykl i Teensy zatrzyma program aż faktycznie zapis się dokona:
- mode2.jpg (263.8 KiB) Przejrzano 1363 razy
Tu wygląda jak 1/2 cykle na czarny i biały kolor - ciężko stwierdzić czy Teensy nie nadąża czy mój dziadowski grabber robi deinterlace.
Oryginalny kod nie używa przerwań do synchronizacji z szyną C64 - w szybkich trybach działa więc wolniej niż gdyby kolejkował zapisy/odczyty, gubi cykle i potrafi się zawiesić. Planowałem to przepisać i to był główny powód przez który na razie porzuciłem ten projekt.
Jeśli ktoś chce spróbować to powinienem mieć jeszcze 2-3 gotowe płytki z elementami SMD. Do przylutowania będą piny i podstawka pod Teensy.