PDA

Просмотр полной версии : Подключение AY8910 к Корвету.



marinovsoft
12.07.2016, 20:26
Всем привет!
Идея подключить к Корвету на порт расширения музыкальный сопроцессор возникла уже давно, в апреле-мае удалось выкроить время на исследования в этой области. Сразу скажу, что на реале проверить так и не довелось.
Итак, для проигрывания STC-файлов понадобится:
1. Модифицированный конфиг 57579 для универсального эмулятора (http://bashkiria-2m.narod.ru/index/files/0-11).
2. Образ диска 57580 с программой stmview.com и примерами мелодий.

Шина данных AY подключается на порт A, BDIR и BC1 - на два бита старших порта B. Внимание! Подключение не совместимо с ExtROM (http://zx-pk.ru/threads/23651-korvet-extrom-open-source-extender.html), так как использует те же порты. Теоретически, после отладки и проверки на реале можно будет переделать. Но там еще одна тонкость есть в использовании разных режимов ВВ55 (ИМХОется, что без доработки ExtROM все равно не заработает).

Исходник 57581 представляет собой одноименную модифицированную программу с Вектора, котрая была дизассемблирована идой, подправлена, и собрана обратно TASM85. При дизасме мне очень помог архив STRMUZ Source.rar найденный в этой теме (http://zx-pk.ru/threads/8374-pk8000-podklyuchenie-k-kompyuteru-ay-(ay-3-8910).html). (Переделанный исходник под fasm g (http://flatassembler.net/fasmg.zip) 57582 пусть тоже будет здесь)

Проверенная на реале версия здесь
http://zx-pk.ru/threads/26761-podklyuchenie-ay8910-k-korvetu.html?p=925764&viewfull=1#post925764

marinovsoft
20.08.2017, 17:07
А на реале вот так - вместо музыки один шум (играет stracker.stc)
http://rgho.st/6vsR4RTGk
Камрады, подскажите, в чем косяк?

Mick
21.08.2017, 09:06
Камрады, подскажите, в чем косяк?

По файлу трудно определить.
Возможно ошибка в схеме, а возможно в коде программы.

marinovsoft
21.08.2017, 09:16
Ну схема там простая - AY на порт A ВВ55, BDIR,BC1 - на два старших бита порта B. Генератор 14МГц на ЛА3+делитель на 8 на ИЕ5.
В эмуле программа-плейер работает.

Mick
21.08.2017, 09:17
В эмуле программа-плейер работает.
В эмуляторе много чего работает, а запустишь на реале - а там что у тебя в файле.

marinovsoft
21.08.2017, 09:25
Ну так я и спрашиваю...

Mick
21.08.2017, 09:35
Ну так я и спрашиваю...

Ну тебе и отвечают, чудес не бывает. Либо что то в схемотехнике, либо в программе, либо сам AY дохлый. Смотри что у тебя на тактовый вход приходит (какая частота)

marinovsoft
21.08.2017, 09:40
Тактовая - гут, проверено. AY, а точнее YM проверен заменой.

Mick
21.08.2017, 09:50
Тактовая - гут, проверено. AY, а точнее YM проверен заменой.

А выходную часть как делал?

Как выводишь в AY (кусок кода), по прерываниям или просто в цикле?

marinovsoft
21.08.2017, 10:15
Выходную часть - это про резистивный микшер?

По прерываниям. Вот кусок кода из исходника (в первом сообщении)



loc_6E3: ; CODE XREF: sub_6D4+7j sub_6D4+2Aj
; out 15h
; out 6
; mov b, a
; mvi a, 6
; out 5
; xra a
; out 5
; mov a, m
; out 14h
; out 6
; mvi a, 4
; out 5
; xra a
; out 5
; dcx h
; mov a, b
; dcr a
push psw
push h
; lxi b,0FFFDh
; db 0EDh,79h ;out (c), a

; out 15h ;номер регистра AY - адрес в спектруме FFFDh
lxi h, 0fb08h
mov m, a
inr l
mvi m, 0c0h
pop h
mov a, m ;данные AY - адрес в спектруме BFFDh
; mvi b,0BFh
; db 0EDh,79h ;out (c), a
; out 14h
push h
lxi h, 0fb08h
mov m, a
inr l
mvi m, 080h
pop h
pop psw

dcx h
; dcr b ;перейдем к следующему регистру
dcr a
jp loc_6E3
ret

Mick
21.08.2017, 13:45
сдается мне что у тебя при записи номера регистра в AY нет строба по BDIR и BC1, тоесть ты сделав
mvi m, c0h пытаешься выставить опять данные в порте AY, тоесть в итоге тупо может абсолютно любая хрень писаться в номер регистра AY.

Вот тебе пример и компьютера Amstrad CPC, там AY тоже подключен через ВВ55 (импортный аналог)
шина данных - порт А (0F4h)
сигнал BDIR - бит 7 порт С (0F6h)
сигнал BС1 - бит 6 порт С (0F6h)



ld b, 0F4h - номер регистра в порт A (ВВ55)
out (c), a
ld b, 0F6h - строб BDIR и BC1 порт C (BB55)
in a, (c)
or 0C0h
out (c), a
and 3Fh
out (c), a
ld b, 0F4h ; 'ф'
out (c), c
ld b, 0F6h ; 'ц'
ld c, a
or 80h ; 'Ђ'
out (c), a
out (c), c
ret



Иными словами, после mvi m,c0h
сделай допустим -> nop (пауза), а затем mvi m,00h

marinovsoft
21.08.2017, 14:44
Тоже пришла такая мысль в голову после беглого прочтения
https://bulba.untergrund.net/ay8910-2.rar


Function BDIR BC1

Inactive 0 0
Read 0 1
Write 1 0
Latch address 1 1

Только еще и после


mvi m, 080h

делать аналогично.

marinovsoft
27.08.2017, 18:41
Предположение оказалось верным. Во вложении исходник, образ диска и схема.

Схема.
62100
Монтажка.
62099

Sancho45
22.06.2020, 21:16
А платки делались, готовые продает кто?

- - - Добавлено - - -

Конечно несовместимость с Extrom отталкивает. Думаю прикрутить внутрь корвета на порт io с z80 для совместимости...Но это как нибудь...

marinovsoft
22.06.2020, 21:34
Я платы не делал и мне такие случаи неизвестны, даже более - мне неизвестны случаи, чтобы еще кто-то подключал AY к Корвету.

- - - Добавлено - - -

Несовместимость с ExtRom малой кровью не победить.