
Witam
Chciałem przedstawić moją konstrukcję odtwarzacza plików SID. Jest to moje protopywowe urządzenie zbudowane na dwóch
płytkach uniwersalnych.Wszystkie połączenia są wykonane kabelkami.Sercem układu jest ATmega32 który jest prostym
emulatorem procesora z C64 6502.Oryginalny układ SID'a został wymontowany z C64.Ogólnie moje założenia były takie,aby
napisać program który będzie odtwarzał pliki SID.W internecie można znaleźć dużo projektów emulacji 6502.Jednak ja wolałem
dla swoich potrzeb i sprawdzenia siebie samego napisać wszystko od zera.Program powstał w Bascomie.Jak się później okazało
miało też to swoje minusy.Gdyż nawet przy prędkości zegara 20 Mhz,przy bardziej "zapętlonych" playerach SID'a daje się
odczuć zwolnienie odtwarzania utworu.Jest to spowodowane również tym że praca zmiennych mojego emulatora opiera się nie
rejestrach ale na pamięci ram ATmega.A i większość instrukcji 6502 napisanych jest w Bascomie a nie w czystym
asemblerze.Owszem są wstawki asemblerowe,w newralgicznych punktach.Tam gdzie to było potrzebne. np: zapis/odczyt ramu.W
pierwszej fazie projektowania miałem jeden plik SID który był dołączony do programu za pomocą funkcji: $inc Później
dodałem obsługę kart SD.Program odczytuje pliki SID z: root albo z "pierwszych katalogów". Obecne funkcje odtwarzacza to:
szybkie przewijanie do przodu,pause,zmiana katalogów przód/tył,zmiana SID'ów wewnątrz katalogów przód/tył, zmiana SID'ów
wewnątrz plików SID.Mój emulator nie odtwarza SID'ów na przerwaniach CIA ani sampli.Poza tym dla przyśpieszenia jak na
Bascom, stos korzysta z ramu Atmega32 a nie z zewnętrznego RAM'u.Którym są dwie kości po 32 kilo połączone poprzez bufor
'573 z ATmega32.Układ przedwzmacniacza za SID'em został ściągnięty z oryginalnego schematu C64.Który jest podłączony do
radia samochodowego jako wzmacniacz AUX.Układ zasilany jest napięciem 12V. Stabilizator 5V dla ATmega32 zasilanie ogólne,
Stb.3,3V dla karty SD i Stb.9V dla SID'a jako drugie zasilanie.Dodatkowy rezonator 4Mhz poprzez układy 4011 i 4013 tworzy
generator zegara TTL potrzebny do ożywienia SID'a.Ogólnie chcę do tego zrobić ładną płytkę PCB i obudowę.Myślałem też o
zastosowaniu ATmega128 wtedy odpadło by parę kostek, a i przybyło parę portów do obsługi dodatkowych przycisków.Program
też by się troszkę uprościł.A żeby całość nie została zapomniana i zakurzona mam w planach wbudować zegar z datą i
Alarmem.Który o zadanej godzinie odtwarzał by wybrane pliki SID.Ale to już czas i chęci pokażą co będzie dalej z tym
projektem.
Pozdrawiam...


Tutaj poprawiony film,odtwarza się normalnie:
http://www.youtube.com/watch?v=fq9acOLkK_M
Niestety mój projekt nie ma konkretnego schematu.
Wszystko było rysowane na bieżąco w zeszycie,a później brałem się za lutowanie.
Całość była składana i testowana stopniowo.Przy podłączaniu ramu do atmega opierałem się na tym schemacie:
http://sklep.avt.pl/photo/_pdf/AVT270.pdf
z tym że tutaj sygnał CS ramu jest podłączony przez inwerter do jednego pinu.W moim projekcie każdy CS jest podłączony do osobnego pinu.Chodziło o to że port który jest podłączony do ramu, jest dzielony z SID'em

Wyjście audio,schemat przerysowany z oryginalnego C64

Układ generujący zegar dla SID'a.
oparty na tym schemacie:
http://www.edw.com.pl/pdf/k04/45_12.pdf

Plik z kodem w Bascom.
Program powstawał i był testowany kawałkami w kolejności:
-testowanie zlutowanej całości, czy w ogóle działa.poprawny zapis/odczyt ramu i zatrzasku '573
-testowanie SID'a, wydobycie z niego jakich kolwiek dźwięków,napisanie prostego programu na wzór Basicowych programów z C64 ale przełożonych na Bascom.Początkowo nie było generatora zegara dla SID'a, powstał on później.Zegar był "podkradany" z C64 z Expansion Port.
-w końcu mozolne opisanie wszystkich instrukcji 6502, zrozumienie ich działania,przetestowanie czy spełniają swoje zadanie.Nie obyło się bez błędów oczywiście.które dały o sobie znać później gdy jedne SID'y grały a inne nie.Lub gdy SID po paru sekundach grania zaczynał wydawać z siebie dziwne dźwięki lub milkł.przy usuwaniu błędów pomógł mi program:6502 Macroassembler & Simulator Michała Kowalskiego.
-dodanie generatora zegara SID
-Obsługa kart SD
Wyzwaniem było wykrycie plików SID które obsługują CIA lub sampli.
Do tej pory pozostaje jeszcze parę błędów.Niektóre SID'y zawieszają playera (pewnie jakaś pętla z której nie można wyjść),Niektóre SID'y się nie odtwarzają pomimo że czas upływa i widać że emulator pracuje.Mam nadzieje że znajdę czas i chęci na usunięcie tych błędów.
Obsługa karty SD była możliwa dzięki projektowi ze strony:
http://members.aon.at/voegel/
Początkowo pliki były czytane z root'a.Stopniowo dodawałem kod.
dlatego i on też był pisany w częściach.
Cool? Ranking DIY