1 Ostatnio edytowany przez tOri (2014-09-09 22:02:25)

Witam!

Miło mi poinformować, że na ukończeniu jest projekt analogiczny do SlightSIDa. Niezbyt skomplikowany i oczywiście jak wszystko u mnie - Do It Yourself :). Po wprowadzeniu kilku modyfikacji schemat i opisy pojawią się na mojej stronie.

W obecnej chwili bezbłędnie odtwarza muzę z SID Playera Świętego (dzięki za soft!) i w zasadzie pozostała kosmetyka.

Całość została zbudowana na oldskulowych TTLach więc szału nie ma. Mimo, że obecnie przebywa na stronie $D5xx - docelowo mam zamiar zrobić wersje wewnętrzną i umieszczoną nad POKEYami w obszarze IO.

Załączam zdjęcie układu prototypowego.

Pozdrawiam

Post's attachments

IMG_1666.jpg 1.19 mb, liczba pobrań: 1 (od 2014-09-09) 

IMG_1667.jpg 1.27 mb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.
Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

2

.. to do działu Fabryka z definicji bardziej pasuje.

Kontakt: pin@usdk.pl

3

Aj tam - śpiący jestem ;) a moderatora poproszę w takim razie o przeniesienie wątku.

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

4

o kur...

5

Jakie fajne! Jak na teteelach, to i koszt znikomy. Jak będziesz robił płytkę, to od razu rób smd :)

A, niezła wieżyczka w komputerze. A mógłbyś jeszcze klawiaturę pokazać? Strasznie ciekawi mnie co jest po drugiej stronie tęczowego multikabelka.

6 Ostatnio edytowany przez mono (2014-09-10 09:49:44)

Pięknie!
1. Można prosić o jakąś specyfikację?
2. Jak to się zachowuje na szynie (czy rejestry są tylko W, czy są też R a jeśli nie to jak się zachowują)?
3. Czy można to jakoś wykryć?
4. Czy jest 8580R5 czy przewidziane są inne układy (ja wiem, że napięcia i takie tam)?
5. Czy przewidziana jest wersja z 2 (3?) SIDami?
6. Jaką częstotliwością jest taktowany SID?
Wbudowałbym support do mojego playerka...

Edit: Pytania.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

7

Co do portow, to mozna by zamapowac oba zakresy, tak jak to robi Evie. Autoamatycznie uzyskałbys kompatybilnosc ze slightSID i Evie, wiec całe tony softu, ktore juz niedługo powstana ( ;) ) beda to obsługiwac.

The problem is not the problem; the problem is your attitude about the problem

8

sprawdzales czy SIDari dziala z SlightSID Playerem 3.x http://xxl.atari.pl/?page_id=708

?

http://atari.pl/hsc/ad.php?i=1.

9 Ostatnio edytowany przez tOri (2014-09-10 10:40:03)

mono napisał/a:

Pięknie!
1. Można prosić o jakąś specyfikację?
2. Jak to się zachowuje na szynie (czy rejestry są tylko W, czy są też R a jeśli nie to jak się zachowują)?
3. Czy można to jakoś wykryć?
4. Czy jest 8580R5 czy przewidziane są inne układy (ja wiem, że napięcia i takie tam)?
5. Czy przewidziana jest wersja z 2 (3?) SIDami?
6. Jaką częstotliwością jest taktowany SID?
Wbudowałbym support do mojego playerka...

Edit: Pytania.

Teraz tak na szybkiego odpowiem a dokładne opisy pojawią się dosyć szybko na mojej www, po kolei:

1. Specyfikacja :) to SID standard więc wszystko co dla komody jest i tutaj

2. Rejestry są wyłącznie do zapisu co jest związane z tym, że niesłychanie trudno wykonać logice skok "w przyszłość" a dlaczego tak jest? Gdy układ nie jest połączony z systemem bezpośrednio wtedy zapis da się wykonać bez problemu ponieważ najpierw Atari wpisuje dane do rejestrów bufora wejściowego (z perspektywy SID) a w drugim kroku sprzęg wpisuje dane do SIDa i to działa (będzie to widać na schemacie) Gdy jednak chcemy odczytać dane - jeden cykl odczytu nie wystarczy ponieważ to dopiero wpisze dane do rejestrów bufora wyjściowego - DOPIERO PO WYKONANIU DRUGIEGO CYKLU uda się odczytać dane z bufora dla Atari - to poważnie komplikuje zarówno układ jak i software i ze względu na nikłe korzyści z tym związane odczyt rejestrów SIDa nie jest możliwy. Przy zastosowaniu mikroprocesora jest to możliwe - jednakże mikroprocesor musiałby wykonywać ciągły polling rejestrów SID aby nie zostać zaskoczonym przez "niespodziwany odczyt" hehe). Podsumowując - WRITE tak, READ nie.

3. W obecnej postaci nie. Można oczywiście dodać pod wybranym adresem jeden rejestr do odczytu z konkretną wartością identyfikującą układ. Nie planowałem tego ale to żaden problem. Kwestia adresu i danej, która ma tam być (jako dana typu ROM)

4. Są pewne różnice odnośnie 6581 i 8580 - jedna to napięcie zasilania analog - 6581 - 12V, 8580 - 9V - co oczywiście zależy jak się zbuduje zasilacz, przetwornicę - to można zrobić stosunkowo łatwo, czyli zworką. Druga różnica to kondensatory filtrów - 6581 ma 2x 470 pF a 8580 ma 2x 22nF - myślę, że też ewentualnie mogłoby to być na zworkach ale się zastanawiam czy jest sens. Najlepiej zrobić pod konkretny układ. Wyboru zbyt dużego nie ma :)

5. Nie ma żadnego problemu z większą ilością SIDów poza miejscem w IO komputera. Układ wystarczy powielać w zależności od potrzeb - logika sprzęgu w sporej części nie może być wspólna niestety. Będzie schemat wszystko się wyjaśni.

6. Taktowanie SID jest identyczne jak w C64 PAL ponieważ zastosowałem oryginalny kwarc 17.73447 MHZ oraz układ 8701 i po podzieleniu DOT CLOCK 7.88 MHz przez 8 jest 985 Khz z możliwością delikatnej regulacji trymerem.

Chciałem zbudować układ przy pomocy takich scalaków jakie były stosowane w dawnych czasach :) Lubię oldskul...
Oczywiście można i da się wrzucić logikę w jakiś ukłąd CPLD tak jak w SLightSID. Zostawię to jakiemuś ochotnikowi - ja zajmę się być może kolejnym atarynkowym projektem. Chociaż nie przesądzam - chcę poćwiczyć CPLD - mam garść ispLSI LATTICE i może tam wrzucę interfejs?

Od strony Atari ten sprzęg będzie widoczny dokładnie tak jak SightSID więc wszystko co będzie dla SlightSIDa zadziała i tutaj.

To było na razie tyle

pozdrawiam

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

10

wieczor napisał/a:

Co do portow, to mozna by zamapowac oba zakresy, tak jak to robi Evie. Autoamatycznie uzyskałbys kompatybilnosc ze slightSID i Evie, wiec całe tony softu, ktore juz niedługo powstana ( ;) ) beda to obsługiwac.

To jest do przemyślenia - to w zasadzie tylko pytanie jak rozwiązać dekodowanie obszarów IO.

Osobiście planuję zrobienie sobie wewnętrznego dekodera 16x 16 adresów w obszarze $D2XX i stąd będę brał CHIP SELECT zarówno dla POKEYów jak i SIDów a także dla innych modułów dźwiękowych o ile będą. Evie też wpisuje się w ten schemat. Gorzej z mapowaniem pod $D5XX - to trochę wrażliwe miejsce jak na umieszczanie takich rozszerzeń.

Zobaczymy :)

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

11

Dzięki. Co do odczytów z rejestrów - SlightSID (możliwe, że Evie też) przy próbie odczytu z rejestrów SIDa zwraca wartość $33 - dałoby się to zrealizować? Łatwiej byłoby rozpoznawać czy SlightSID/SIDari jest na pokładzie i w jakiej ilości (2, 3, n układów).

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

12 Ostatnio edytowany przez tOri (2014-09-10 11:11:14)

mono napisał/a:

Dzięki. Co do odczytów z rejestrów - SlightSID (możliwe, że Evie też) przy próbie odczytu z rejestrów SIDa zwraca wartość $33 - dałoby się to zrealizować? Łatwiej byłoby rozpoznawać czy SlightSID/SIDari jest na pokładzie i w jakiej ilości (2, 3, n układów).

OK - w dalszej części projektu siądę nad tym - to jest proste do realizacji ale jeden scalak więcej dojdzie

Rozumiem, że pojedyńczy SID spod adresu $D500 ma dać odczyt $#33 a, np. dwa SIDy już $#34 (#$32 + 2) a takie coś najlepiej ustalić zworkami - coś w tym stylu :)

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

13

xxl napisał/a:

sprawdzales czy SIDari dziala z SlightSID Playerem 3.x http://xxl.atari.pl/?page_id=708

?

Nie sprawdzałem ale skoro SlightSID działa to i SIDari też musi działać. Będę miał chwilę do ogarnięcia się to i powinienem sprawdzić.

Pozdrawiam

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

14

Trzeba by zapytac Sebana, ale mi sie wydawało, ze kazdy SID zwraca $#33 na swoich portach.

The problem is not the problem; the problem is your attitude about the problem

15

Odczyt dowolnego rejestru SID-a ($d500..$d51f) zwraca wartość $33 niezależnie od ilości sidów. Inny SID jest przecież w inym obszarze adresowym więc tam zwraca swoje $33.

Jedna jeszcze rzecz. Jeśli to nie jest jakiś strasznie kosmiczny problem zachęcałbym do wyprowadzenia wejścia EXTIN na zewnątrz, bo to pozwoli na filtrowanie przez SID-a dowolnego sygnału - np. dźwięku z POKEY-a.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

16

wieczor napisał/a:

Trzeba by zapytac Sebana, ale mi sie wydawało, ze kazdy SID zwraca $#33 na swoich portach.

No - nie każdy ponieważ dla SIDari odczyt z obszaru $D5xx idzie "do lasu" i najpewniej powinno dać $#FF tak jakby nic tam nie było :) - no bo i z punktu widzenia logiki - nic nie ma do odczytu więc Atari zobaczy szynę danych podciągniętą do +VCC.

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

17

mono napisał/a:

Odczyt dowolnego rejestru SID-a ($d500..$d51f) zwraca wartość $33 niezależnie od ilości sidów. Inny SID jest przecież w inym obszarze adresowym więc tam zwraca swoje $33.

Jedna jeszcze rzecz. Jeśli to nie jest jakiś strasznie kosmiczny problem zachęcałbym do wyprowadzenia wejścia EXTIN na zewnątrz, bo to pozwoli na filtrowanie przez SID-a dowolnego sygnału - np. dźwięku z POKEY-a.

Tak zgadza się - nie zrozumiałem do końca :) uważałem, że sam odczyt z $D500 powinien dać od razu liczbę SIDów w obszarze ale to szczegół - ok wystarczy odpytać znane obszary i tyle.

EXTIN jest przewidziany do użycia tak jak w standardowej aplikacji SIDa

pozdrawiam

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

18

qbahusak napisał/a:

Jakie fajne! Jak na teteelach, to i koszt znikomy. Jak będziesz robił płytkę, to od razu rób smd :)

A, niezła wieżyczka w komputerze. A mógłbyś jeszcze klawiaturę pokazać? Strasznie ciekawi mnie co jest po drugiej stronie tęczowego multikabelka.

Po drugiej stronie tęczowego kabelka jest klawiatura 800XL w pustej obudowie :) Nic ekstrawaganckiego ale musiałem tak zrobić aby mieć jakiś kontakt z Atari. Planuję AKI i obudowę taką od MIDI wieży (43cm szerokości). Wieżyczka niezła i będzie jeszcze nieźlejsza, hehe. Właduję tam jeszcze kilka rzeczy. Mam około 7 centymetrów do wykorzystania w 3D...

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

19 Ostatnio edytowany przez drac030 (2014-09-10 13:41:17)

toriman1 napisał/a:

Przy zastosowaniu mikroprocesora jest to możliwe - jednakże mikroprocesor musiałby wykonywać ciągły polling rejestrów SID aby nie zostać zaskoczonym przez "niespodziwany odczyt" hehe).

A nie można wykorzystać patentu z YM/AY, że mamy specjalny rejestr, do którego program zapisuje nr rejestru I/O, który chce odczytać, a drugim rozkazem odczytuje z niego daną? To eliminuje problem "ciągłego pollingu", ale czy to przydatne, musiałby się np. mono wypowiedzieć.

KMK
? HEX$(6670358)

20

Tak to jest rozwiązane w SlightSID-zie. Z SID-a warte czytania są dosłownie 2 rejestry:
- 27(dec) OSC3/RANDOM
- 28(dec) ENV3
bo POTX i POTY się nam chyba nie przydadzą.
Namawiałem zarówno Sebana, jak i Pasia do ich implementacji, więc również namawiam i teraz przy okazji SIDari. Taki dokument mówi, że mogą być używane do uzyskania specyficznych softwareowych efektów. No i są używane do rozpoznania rodzaju SID-a.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

21

drac030 napisał/a:
toriman1 napisał/a:

Przy zastosowaniu mikroprocesora jest to możliwe - jednakże mikroprocesor musiałby wykonywać ciągły polling rejestrów SID aby nie zostać zaskoczonym przez "niespodziwany odczyt" hehe).

A nie można wykorzystać patentu z YM/AY, że mamy specjalny rejestr, do którego program zapisuje nr rejestru I/O, który chce odczytać, a drugim rozkazem odczytuje z niego daną? To eliminuje problem "ciągłego pollingu", ale czy to przydatne, musiałby się np. mono wypowiedzieć.

Raczej nie bardzo da się to wykorzystać jak w YM/AY ale wygląda to zastanawiająco podobnie.

Proces odczytu rejestru powinien wyglądać mniej więcej tak:

Krok 1 - wysłanie cyklu odczytu spod adresu np. LDA $D51B - OSC3/Random - powoduje zapamiętanie adresu rejestru do odczytu ($1B) i uruchomienie logiki odczytu z SIDa, czyli na liniach adresowych SID już jest adres rejestru, generowany jest lokalny CHIP SELECT, R/~W jest równy 1 i na tylnym zboczu PHI2 SID logika sprzęgu wpisuje dane do rejestru do odczytu, np. 74HCT574. W tym kroku już wysyłam więc adres rejestru.

Krok 2 - mając już zapamiętane w lokalnym rejestrze dane wysyłamy drugi raz cykl odczytu spod adresu, LDA $D51B i wtedy odczytujemy dane blokując jednocześnie kolejny cykl odczytu z samego SIDA.

Nie da rady zrobić tego w jednym kroku. Rozwiązaniem jest mikroprocesor albo takie zbudowanie logiki aby wykonywała sprzętowy polling tych czterech rejestrów READ ONLY - $19, $1A, $1B, $1C w czasie wolnym. Gdyby jednak trafił się zapis lub odczyt - odpytywanie musiałoby zostać wstrzymane.

Jak widać - da się ale dosyć komplikuje i rozbudowuje układ no i czas dostępu do danych odczytanych staje się dosyć długi (ale to by za bardzo nie przeszkadzało mimo wszystko). Dalej uważam, że skórka jest niewarta wyprawki...Gdyby większa ilość muzyki używała OSC3/ENV3 no to trzeba by było zbudować takie rozwiązanie.

pozdrawiam

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

22 Ostatnio edytowany przez tOri (2014-09-10 15:08:53)

mono napisał/a:

Tak to jest rozwiązane w SlightSID-zie. Z SID-a warte czytania są dosłownie 2 rejestry:
- 27(dec) OSC3/RANDOM
- 28(dec) ENV3
bo POTX i POTY się nam chyba nie przydadzą.
Namawiałem zarówno Sebana, jak i Pasia do ich implementacji, więc również namawiam i teraz przy okazji SIDari. Taki dokument mówi, że mogą być używane do uzyskania specyficznych softwareowych efektów. No i są używane do rozpoznania rodzaju SID-a.

Na TTLach będzie kłopotliwie. Nie to, że się nie da ale duże będzie :)


pozdrawiam

P.S. Mono - a Evie i SlightSID odczytują te rejestry bo nie kojarzę???

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

23

No tak, bo teraz to miniaturka :D Dasz rade z tym zamknac obudowe? ;)

The problem is not the problem; the problem is your attitude about the problem

24

wieczor napisał/a:

No tak, bo teraz to miniaturka :D Dasz rade z tym zamknac obudowe? ;)

Miniaturka hehe

No i trzeba będzie CPLD użyć uf...

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

25 Ostatnio edytowany przez mono (2014-09-10 15:49:49)

toriman1 napisał/a:

a Evie i SlightSID odczytują te rejestry bo nie kojarzę???

Zarówno Evie, jak i SlightSID pozwalają na odczyt dowolnego rejestru SID-a. Ale każde z nich nieco inaczej :D:
- Evie: odczyt bezpośrednio przez adresowanie rejestru np.:

lda $D2C0+$1C

- SlightSID: za pośrednictwem rejestru adresującego np.:

lda #$1C
sta $D540
nop
nop
nop
lda $D540

analogicznie dla drugiego SID-a indeks $3C (drugi SID leży w $D520..$D53F, indeksy rejestrów zaczynają się od $20).

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje