forum speccy.pl

Komputery z Z80 => POLSKIE KOMPUTERY => Wątek zaczęty przez: coberr w 2016.02.25, 02:10:25

Tytuł: AY 3-891x adresy portów
Wiadomość wysłana przez: coberr w 2016.02.25, 02:10:25
MAm pytanie - może ktoś przypadkiem byłby w stanie mi pomóc?

Kiedyś w Bajtku ukazał sie artykuł o układzie AY 3-8910 (wraz ze schematem).
W tej chwili nie jestem w stanie juz go wyszperać.
Czy ktos pamięta może - na jakich dokładnie portach siedzi AY w zx spectrum? (także 128/+2/+3)

Czy adresy w tym interfejsie z Bajtka byly te same? (wydaje mnie sie, że tak).
Ktos pamięta moze który to byl numer Bajtka?


Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: ZbyniuR w 2016.02.25, 07:29:27
Bajtki

11-89 s12 - schemat AY do ZX
3/4-90 s13 - płytka do AY w ZX
7/8-90 s30 - errata do powyższego oraz różnica między AY3-8910 a AY3-8912, tu jest nieco o pinach/nóżkach
9/10-90 s15-16 -  80K+AY w Spectrum --- 11-90s15 wersja do Timexa
7-92 s12 - opis rejestrów AY3 w klanie Amstrada

Tyle mi się udało znaleźć na szybko. :)
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: matofesi w 2016.02.25, 07:57:18
A standardowe porty dla AY w Spectrum 128 to $BFFD i $FFFD. Poza Unipolbritem/Timexem chyba wszystkie modele Spectrum i jego klony miały/mają AY na tych samych portach, żeby zapewnić zgodność z ZXS 128.
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: coberr w 2016.02.25, 15:25:49
Zbyniur, Matofesi - bardzo wam dziekuje - tyle mi w zupelności wystarczy :)

Będę miał niedlugo pewnie jeszcze kilka pytań ale dopiero jak podłączę ten wynalazek do swojej cobry :)

Tak przy okazji - mam AY3 -8913 - taki oto wynalazek mnie sie trafił. (mam nadzieje ,ze nie malowanka)
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: matofesi w 2016.02.25, 15:41:49
8913 nie ma wyprowadzonych portów równoległych. Jeśli będziesz tego używał tylko do dźwięku i nie jest malowanką to nie powinno być problemów :)
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: coberr w 2016.02.25, 18:04:47
docelowo on ma slużyć tylko i wyłącznie do dźwięku. Portów moja COBRA ma juz az zanadto :) (2x8255 - chyba wystarczy :D). Stąd tez m.in. wybór wersji  najuboższej.
A że zostało mi akurat miejsca na 24 pin - to jakos może wcisnę tam tego AY-greka .

Własnie chodziło mnie glownie o ten bajtkowy schemat wraz z opisem. - w sieci krąży skan samego schematu i tak cos mnie sie kojarzylo , ze to może byc to ale nie bylem pewien. Teraz juz jestem, że to bylo to.
Schemacik juz sobie przerobiłem i zaadaptowalem do swoich potrzeb.
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: trojacek w 2016.02.25, 18:08:58
O ile mnie pamięć nie myli, pierwszy schemat AY w Bajtku był błędny!
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: coberr w 2016.02.25, 18:39:08
tak jest - tak własnie było  ale to jest drugi - poprawiony( bajtek 11/89)
Zreszta tez przeprowadzilem sobie pełną analizę sygnałow na magistralach - powinno być o.k.
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: coberr w 2016.02.26, 15:10:22
No - po ciężkiej i nierównej walce AY ruszył mi na COBRZE. Po wpisaniu prostego programu w assemblerze (wartosci rejestrow z Bajtka) - układ generuje dźwięk wystrzału.

0000 01FDFF    LD      BC,0FFFDH
0003 3E06      LD      A,06H
0005 ED79      OUT     (C),A
0007 01FDBF    LD      BC,0BFFDH
000a 3E1F      LD      A,1FH
000c ED79      OUT     (C),A
000e 01FDFF    LD      BC,0FFFDH
0011 3E07      LD      A,07H
0013 ED79      OUT     (C),A
0015 01FDBF    LD      BC,0BFFDH
0018 3E07      LD      A,07H
001a ED79      OUT     (C),A
001c 01FDFF    LD      BC,0FFFDH
001f 3E08      LD      A,08H
0021 ED79      OUT     (C),A
0023 01FDBF    LD      BC,0BFFDH
0026 3E10      LD      A,10H
0028 ED79      OUT     (C),A
002a 01FDFF    LD      BC,0FFFDH
002d 3E09      LD      A,09H
002f ED79      OUT     (C),A
0031 01FDBF    LD      BC,0BFFDH
0034 3E10      LD      A,10H
0036 ED79      OUT     (C),A
0038 01FDFF    LD      BC,0FFFDH
003b 3E0A      LD      A,0AH
003d ED79      OUT     (C),A
003f 01FDBF    LD      BC,0BFFDH
0042 3E10      LD      A,10H
0044 ED79      OUT     (C),A
0046 01FDFF    LD      BC,0FFFDH
0049 3E0C      LD      A,0CH
004b ED79      OUT     (C),A
004d 01FDBF    LD      BC,0BFFDH
0050 3E12      LD      A,12H
0052 ED79      OUT     (C),A
0054 01FDFF    LD      BC,0FFFDH
0057 3E0D      LD      A,0DH
0059 ED79      OUT     (C),A
005b 01FDBF    LD      BC,0BFFDH
005e 3E00      LD      A,00H
0060 ED79      OUT     (C),A
0062 C300C0    JP      0C000H                 

(ten skok na końcu - to skok jak przy wykonaniu RESET - odzyskuje kontrole nad tym wynalazkiem)

GEnerator - prosty 7404+RC  po wstawieniu elementow generuje przebieg o czestotliwości bodajże 1,8 lub 1,89MHz - już nie pamiętam.  (pewnie jest to nieco wyżej niz standard?)

Co prawda to nie ZX spectrum ale mam nadzieję, że mnie tu nie zlinczujecie  za tę małą profanację :)

mam pytanie - czy są dostępne jakieś playery np. plików AY lub innych w postaci samego modulu programowego?

DO dyspozycji mam pamieć o adresach 0...49151 oraz 53248...61439.
Sam moduł powinien jedynie odtwarzać plik i nie korzystać z żadnych innych zasobow sprzętowych  (np. grafika).
Nie wskazane również użycie przerwań - niech to pożera całą moc procesora nawet na NOPy ale niech odtwarza plik z prawidłową prędkoscią :)

Jest coś takiego ?




Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: Tygrys w 2016.02.26, 15:21:26
Tutaj jest coś na ten temat: http://speccy.pl/forum/index.php/topic,1226.15.html
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: matofesi w 2016.02.26, 15:31:46
@coberr Bez przerwań to chyba będziesz miał problem. W normalnych warunkach muzyczkę się odpala właśnie na przerwaniach (w ZXS 50Hz), stosowny player zjada jakieś 1000-3000 cykli procesora (zależnie od rodzaju playera/trackera) i resztę czasu masz na swój program. Będziesz musiał się jakoś synchronizować do zewnętrzengo źródła bo czas wykonania playera jest nierówny i samymi pętlami opóźniającymi ciężko będzie to zrobić dobrze. A zrobienie źle da ci brzydko grająca muzyczkę.
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: coberr w 2016.02.26, 15:40:17
no wlasnie tego sie kurcze obawiałem :)

Sęk w tym, ze cobra nie wykorzystuje przerwań :). ZObaczę - moze jakoś to z czasem przetrawie.

A może z innej mańki - czy którys z formatów plików na AY greka posiada jedynie same wartości  dla niego - ew. cale sekwencje rozkazow dla procesora -  przeznaczone bezpośrednio do "wyplucia" na sam scalak?
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: matofesi w 2016.02.26, 16:00:41
Ja nie znam nic takiego. Zakładając, że potrzebujesz 13 (o ile pamiętam) rejestrów na ramkę daje ci to 650 bajtów na sekundę czyli prawie 40 kilo na minutę muzyki. Właściwie każdy tracker to player do skompilowanej do jakiegoś p-code'u muzyki. Można by spróbować zrobić jakąś procedurę kompresji - o ile pamiętam Kaz w Shocku w części z paskami na cały ekran miał coś takiego, żeby muzyka zajmowała jak najmniej czasu. W ostateczności można też zrobić tak, że ładujesz muzyczkę do emulatora Spectrum, robisz programik w BASICU który inicjuje player a potem w pętelce woła odpalenie dla kolejnej ramki, odczytuje rejestry i pakuje je gdzieś do pamięci. A potem te dane sobie zgrywasz z emulatora i możesz próbować je odtwarzać u siebie.
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: coberr w 2016.02.26, 16:25:34
chyba będe musial przeryć dokumentacje plików AY. WYdaje się, że  to będzie chyba najlepszy pomysł w tej chwili :)
http://www.worldofspectrum.org/projectay/tech.htm

Twoje rozwiązanie  MAtofesi wydaje się być logiczne. Jednak narazie sobie odpuszczę te oryginalne playery na spectrum - własnie z uwagi na fakt - , że cobra nie ma obsługi przerwań. (obie linie procka sa wolne)

Playera nadeslanego przez Tygrysa chyba też na szybko nie dam rady rozpracować :)

Będe musiał jakiegos własnego prymitywa stworzyć - wszelkie BASICe odpadają :)
Jedynie assembler.
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: pear w 2016.02.26, 16:52:47
Może proście będzie wytworzyć przerwanie 50 Hz z zasilacza niż rozkopać player ?
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: coberr w 2016.02.26, 21:49:30
a już sobie tak myślalem nad tym - musialbym sie podpiąc  do sekcji generującej sygnał synchronizacji pionowej. Musialbym sprawdzić - jak szeroki jest impuls- ew. dopasować go do wymaganego minimum (maksimum) przez z80. Jest to do zrobienia.

Ew. wykorzystac sygnal wygaszania pionowego i zaadaptowac go do procesora

W dalszej kolejności musiałbym zmodyfikowac sam program monitora zaszytego w EPROM i dodac kilka instrukcji. (takze tych, które przenoszą częśc kodu bezpośrednio do RAM po starcie systemu).

Głowna różnica miedzy spectrum a CObrą jest taka - ze ZX startuje od adresu 0000h. Cobra zaś od C000h. W spectrum napoczatku 16KB to ROM - pozniej 16KB slow RAM zamulane przez ULA i na koncu 32KB "FAST" RAM.

Czyli adresy skoków po przyjeciu INT mamy juz w ROM (chyba ze inny tryb wybrano).

CObra ma inną organizacje pamieci - jest to w sumie czasem dośc wygodne (ze wzgl. na pisane programy - z reguly od adresu 0000h)

w zależnosci od konfiguracji - mamy 16 lub 32 lub 48KB RAM (0...49151)
DALEJ - 2KB EPROM (z możliwoscią  rozszerzenia do 4KB - na płycie "głownej" ) - czyli 49152...51199 - 2KB  (ew. 49152...53247 - 4KB)

Następnie 10KB wolnej przestrzeni ( na ew. zewn. EPROM - 53248 - 63487)
Ja juz u siebie zapakowałem 8KB EEPROM pod adresami 53248...61439.

Ze wzgl. na ten nietypowy obszar trzeba go było troche nietypowo adresować (zamiast liniami A15,A14 - Dekoder adresow siedzi na A15...A12. Zaś linia A12 EEPROM sterowana jest linią A13 systemu :) ) 

Ostatnie 2KB  pamiec wizji  - a odkładniej 768 bajtów z obszaru 63488...65535


Wpadł mi jeszcze jeden pomysł - a mianowicie - "podrasowanie" cobry do poziomu ZX 81.
Oba komputery wykorzystuja ten sam tryb - tekstowy. Nalezałoby dołożyć źródło przerwań, dopisac procedurę, która przenosi dane ekranu dla ZX 81 - do obszaru wizji cobry i na poczatek coś by moze było (pomijam obsługe klawiatury)

W takiej sytuacji byc moze udałoby sie bezpośrednio uruchomic jakiś player z ZX81 :)












Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: nietoperz w 2016.02.27, 22:22:00
Mam aplikacje do ładowania plików AY ale pod CP/M, działało to na sprzęcie samoróbce i nie potrzebowało przerwań - po prostu w pętli czekał odliczoną ilośc cykli aby wyszło 20ms i robił call pod int_addr (pole wyciągnięte z pliku ay) - jakoś to grało. Napisane w C (odczyt pliku i parsowanie) oraz asm (pętla). Jak chcesz to moge ci wyslać zródła (wyślij email na pw).

W przypadku cobry i plików ay obawiałbym się, że int_addr wskazywał powyżej 48K. Nie mam teraz jak na szybko odpalić tej aplikacji żeby to sprawdzić.
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: Gelip w 2016.03.20, 14:06:03
Czy w ZX Spectrum 48 AY jest na tych samych portach bo zamierzam podłączyć go do swojego klona?
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: trojacek w 2016.03.20, 14:13:43
A standardowe porty dla AY w Spectrum 128 to $BFFD i $FFFD. Poza Unipolbritem/Timexem chyba wszystkie modele Spectrum i jego klony miały/mają AY na tych samych portach, żeby zapewnić zgodność z ZXS 128.
Tytuł: Odp: AY 3-891x adresy portów
Wiadomość wysłana przez: Gelip w 2016.03.20, 15:00:26
Sprawdziłem w emulatorze ZXMAK2 emulację klona "Bajt" i w trybie zgodności z ZX Spectrum AY działa (działa nawet COVOX) :-) więc w realu też chyba powinno działać. W załączniku kawałek wideo z pracy emulatora.