Autor Wątek: AY 3-891x adresy portów  (Przeczytany 23412 razy)

coberr

  • ***
  • Wiadomości: 138
  • Miejsce pobytu:
    Gorzów Wlkp
AY 3-891x adresy portów
« dnia: 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?



ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: AY 3-891x adresy portów
« Odpowiedź #1 dnia: 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. :)
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: AY 3-891x adresy portów
« Odpowiedź #2 dnia: 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.

coberr

  • ***
  • Wiadomości: 138
  • Miejsce pobytu:
    Gorzów Wlkp
Odp: AY 3-891x adresy portów
« Odpowiedź #3 dnia: 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)

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: AY 3-891x adresy portów
« Odpowiedź #4 dnia: 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 :)

coberr

  • ***
  • Wiadomości: 138
  • Miejsce pobytu:
    Gorzów Wlkp
Odp: AY 3-891x adresy portów
« Odpowiedź #5 dnia: 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.

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: AY 3-891x adresy portów
« Odpowiedź #6 dnia: 2016.02.25, 18:08:58 »
O ile mnie pamięć nie myli, pierwszy schemat AY w Bajtku był błędny!

coberr

  • ***
  • Wiadomości: 138
  • Miejsce pobytu:
    Gorzów Wlkp
Odp: AY 3-891x adresy portów
« Odpowiedź #7 dnia: 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.

coberr

  • ***
  • Wiadomości: 138
  • Miejsce pobytu:
    Gorzów Wlkp
Odp: AY 3-891x adresy portów
« Odpowiedź #8 dnia: 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 ?




« Ostatnia zmiana: 2016.02.26, 15:24:04 wysłana przez coberr »

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4537
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: AY 3-891x adresy portów
« Odpowiedź #9 dnia: 2016.02.26, 15:21:26 »

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: AY 3-891x adresy portów
« Odpowiedź #10 dnia: 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ę.

coberr

  • ***
  • Wiadomości: 138
  • Miejsce pobytu:
    Gorzów Wlkp
Odp: AY 3-891x adresy portów
« Odpowiedź #11 dnia: 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?

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: AY 3-891x adresy portów
« Odpowiedź #12 dnia: 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.

coberr

  • ***
  • Wiadomości: 138
  • Miejsce pobytu:
    Gorzów Wlkp
Odp: AY 3-891x adresy portów
« Odpowiedź #13 dnia: 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.

pear

  • *****
  • Wiadomości: 5509
  • Miejsce pobytu:
    Będzin
  • Z80 only
Odp: AY 3-891x adresy portów
« Odpowiedź #14 dnia: 2016.02.26, 16:52:47 »
Może proście będzie wytworzyć przerwanie 50 Hz z zasilacza niż rozkopać player ?
ZX/Enterprise/CPC/Robotron/C128D