PDA

Просмотр полной версии : "Народный" AY (YM) звук для УКНЦ (параллельный порт)



S_V_B
24.01.2020, 19:05
Начну тему чтобы не потерялась, буду выкладывать по мере продвижения:
схема от Ув. Titus
https://pic.maxiol.com/thumbs2/1579878841.630666996.20200124210951.png (https://pic.maxiol.com/?v=1579878841.630666996.20200124210951.png&dp=2)
инфа BB55
https://yadi.sk/i/NXKje_dOEVPU7w
инфа от RDC:
https://pic.maxiol.com/thumbs2/1581164801.630666996.ay38910doc542.png (https://pic.maxiol.com/?v=1581164801.630666996.ay38910doc542.png&dp=2)
распиновка параллельного порта:
https://yadi.sk/i/kKKXiWjXNKADZQ

- - - Добавлено - - -
Схема ЦАП на порт А:
https://pic.maxiol.com/thumbs2/1583416987.630666996.covox.png (https://pic.maxiol.com/?v=1583416987.630666996.covox.png&dp=2)
- - - Добавлено - - -

Видео "девайс в работе":
https://yadi.sk/i/fiMU2h9dZNBMwA

Titus
24.01.2020, 23:34
Вопрос к Ув. Titus, помнится вы говорили об оптимизаации записи.. (я не спешу, просто идет процесс накопления информации и укладывания в ячейки моей памяти )
А на БК как сделано, что первое обращение (177714) селект - регистр второе -данные, там какой-то аппаратный ксор воткнули? (Схему не смотрел, не просите, все равно не пойму).
Если нужно четыре операции.. вынесем в отдельную процедуру.

Я не знаю, как на БК, схему там не видел. Но у нас нет никаких аппаратных средств для сокращения числа записей в порт для засылки данных в каждый регистр. Ну может быть одну команду можно сократить.
Не надо выносить в отдельную процедуру, лучше ее сделать развернутой, чтобы не было лишних тормозов.

S_V_B
30.01.2020, 17:37
Поигрался со светодиодами:
1. Порт работает.
2. Запись словами.

Осталось допаять и вывод PSG доделать.

S_V_B
31.01.2020, 19:18
Процедура проигрывания PSG:


MUZA::
MOV R0,-(SP)
MOV PC,R0 ;Вычислить адрес программы обработки
ADD #Sndm-.,R0 ;прерываний от программируемого таймера
MOV R0,@#100 ;Загрузить этот адрес в вектор прерывания
MOV PC,R0 ;Вычислить адрес программы обработки
ADD #MUZON-.,R0 ;музыкой
MOV R0,BEGIN ;Загрузить этот адрес в ячейку BEGIN
MOV R0,ADRESS ;Загрузить этот адрес в ячейку ADRESS
MOV (SP)+,R0
RTS PC
BEGIN: .WORD 0 ;Ячейка хранения начального адреса массива
ADRESS: .WORD 0 ;Ячейка хранения текущего адреса

Sndm:
BIS #400,@#177054
MTPS #0 ; Разрешить все прерывания
MOV R0,-(SP)
MOV R1,-(SP)
MOV R2,-(SP)
MOV R3,-(SP)
MOV ADRESS, R1
MOV #177101, R2
MOV #177102, R3
1$:
CLR R0
BISB (R1)+,R0
CMPB R0 , #375 ;375
BNE 2$
MOV BEGIN,R1
BR 4$
2$:
CMPB R0, #377
BEQ 4$
3$:
MOV #177777, (R3); @#177102 COM #0 подготавливаем шину
COM R0
MOV R0, (R2) ;@#177101 ; передали № регистра
MOV #177774,(R3) ; @#177102 ; COM #3 записали № регистра
CLR R0
BISB (R1)+,R0
MOV #177777,(R3) ; @#177102 ; COM #0 подготавливаем шину
COM R0
MOV R0, (R2) ;@#177101 ; передали данные регистра
MOV #177775,(R3) ; @#177102 ; COM #2 записали данные регистра
BR 1$
4$:
MOV R1, ADRESS
MOV (SP)+,R3
MOV (SP)+,R2
MOV (SP)+,R1
MOV (SP)+,R0
MTPS #340 ; Запрет для гарантии окончания V100
BIC #400,@#177054 ; Включить сетевой таймер в ПП
RTI
MUZON:
.BYTE 377,0, 337, 1, 3, 2, 65, 4, 12, 5, 1, 7, 20, 10, 17, 11
.BYTE 13, 12, 17, 13, 120, 15, 14, 377, 1, 5, 2, 117, 4, 326, 5, 0
.BYTE 7, 70, 11, 14, 12, 16, 377, 1, 7, 2, 237, 4, 76, 5, 1, 10
.BYTE 16, 11, 15, 12, 15, 377, 1, 11, 4, 12, 10, 14, 377, 1, 1, 4
.BYTE 326, 5, 0, 7, 71, 10, 20, 12, 14, 377, 2, 236, 4, 76, 5, 1

проверено - работает.

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

Структура PSG-формата

Offset Number of byte Description
+0 3 Identifier 'PSG'
+3 1 Marker “End of Text” (1Ah)
+4 1 Version number
+5 1 Player frequency (for versions 10+)
+6 10 Data

Data — последовательности пар байтов записи в регистр.
Первый байт — номер регистра (от 0 до 0x0F), второй — значение.
Вместо номера регистра могут быть специальные маркеры: 0xFF, 0xFE или 0xFD
0xFD — конец композиции.
0xFF — маркер начала прерывания.
0xFE — следующий байт показывает сколько раз выждать по 80 мс.

S_V_B
04.02.2020, 20:07
Схему собрал, только что-то пиликает когда пальцем AYка касаешься. Кварц не работает?

Titus
05.02.2020, 01:46
Схему собрал, только что-то пиликает когда пальцем AYка касаешься. Кварц не работает?
Осциллограф на CLK поможет это определить отцу русской демократии)

S_V_B
05.02.2020, 05:09
Был бы осциллограф.. не было бы вопросов :(

hobot
05.02.2020, 11:26
Был бы осциллограф..


https://youtu.be/9uuj8tI-4FU

Titus
05.02.2020, 11:28
Хобот, он не подойдет, он низкочастотный.

NEO SPECTRUMAN
05.02.2020, 12:47
Хобот, он не подойдет, он низкочастотный.
а "народные" умельцы не освоили пиляние стробирующих осциллографов из говна и палок?
тут можно было бы обойтись и одной звуковой картой

MM
05.02.2020, 15:26
микросхемы 74HC02
https://pic.maxiol.com/thumbs2/1580905369.531453796.15641.jpg (https://pic.maxiol.com/?v=1580905369.531453796.15641.jpg&dp=2)
Номиналы компонентов могут существенно отличаться от указанных на схеме.
Указанная 1564ЛЕ1 есть аналог 74HC02

S_V_B
05.02.2020, 16:39
А CLOCK с какой ноги берем? C 10й?

MM
05.02.2020, 16:48
А CLOCK с какой ноги берем? C 10й?
Да !

S_V_B
05.02.2020, 16:49
Заработало!!!
Спасибо ММ. (Действовал бессистемно, до кучи еще и кварц поменял и схему включения изменил)..
PSG поет (правда не все каналы - нужно микшер посмотреть, что-то напутал).. но уже дело сдвинулось :)
Первые "чарующие звуки" на УКНЦ.... :)

S_V_B
06.02.2020, 20:00
Нужен другой формат (pt2, pt3).. PSG сильно прожорливый - 2 минуты 30кб.

hobot
07.02.2020, 04:57
Нужен другой формат
https://www.ixbt.com/soft/track_editors.shtml

gid
07.02.2020, 10:14
Согласен с hobot, нафиг AY, трекеры рулят, на БК вон тоже ковоксной музыкой увлеклись.
Но если всё таки хочется AYшной музыки в pt2, pt3, то вот тут мои наработки: http://gid.pdp-11.ru/src/PT3.rar
В архиве исходники разных модулей воспроизведения с комментариями, естественно для БК, т.е. чтоб под RT-11 собрать, надо качественно переработать длинные имена меток в короткие 6 символьные.
Модуль SQT глючит, т.к. я так и не смог отловить место, где я там с знаковой/беззнаковой операцией сложения/вычитания облажался, когда переписывал с спековского асма на наш асм.

S_V_B
07.02.2020, 11:44
нафиг AY, трекеры рулят
Чем же вам не угодил AY? По сравнению с штатной перделкой - это же откровение :)
Для COVOX на УКНЦ памяти маловато и расширений типа СМК-512 не предвидится.. + ресурсоемко и мало-применимо например в игрушках для фоновой музыки.
А проигрывание музыки ради музыки мне малоинтересно, мое желание добавить нормальный звук в игру, а не этот жуткий пердеж который имеет место быть.

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

ПП УКНЦ отлично подходит для проигрывания фоновой музыки. Ещё бы страничек памяти ..надцать и частоту >6МГц.. и было бы счастье:)

gid
07.02.2020, 12:25
Чем же вам не угодил AY?
Мне всем угодил, правда, когда уже наиграешься с ним, хочется чего-то большего. Это я на пост #16 (https://zx-pk.ru/threads/31310-quot-narodnyj-quot-ay-(ym)-zvuk-dlya-uknts-(parallelnyj-port).html?p=1044812&viewfull=1#post1044812) среагировал.
А исходники таки гляньте, вдруг пригодятся, они всё равно без дела валяются, никому не нужные.

S_V_B
07.02.2020, 13:05
Спасибо за исходники, конечно пригодятся :)
Правда кроме меток там много чего переделывать придется - УКНЦ довольно специфичная машинка.
Какой формат считаете более оптимальным или распространенным?

gid
07.02.2020, 13:27
переделывать там две вещи:
1) загрузка собственно музыкального модуля, или вообще выбрать свой способ подачи данных модулю воспроизведения
2) управление прерыванием по вектору 100 с бкшного на укнцшный
и выбрать тип работы: использовать прерывание только для синхронизации, а процессор занять циклом воспроизведения или вызов модуля воспроизведения в обработчике прерывания, чтобы звук в фоне работал.
В BK_STC_Player.ASM показано как, т.е. там закомментирован вариант с фоновым воспроизведением, мне для тестирования этот способ не подходил, поэтому я его и не использовал. Все модули сделаны по одной и той же схеме.

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

Оптимального нет, есть попроще, есть посложнее. Раньше более распространённый на БК был stc,stp, а сейчай без разницы, в интернете всех видов навалом.

S_V_B
07.02.2020, 13:42
Для Периферийного Процессора УКНЦ код должен быть перемещаемым. В ПП свой диспетчер процессов и логичнее использовать 100й вектор для вызова процедуры

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

ПП работает "фоном" относительно ЦП, и нужно процедуру воспроизведения сделать "фоном" в ПП да так чтобы не шибко его притормаживать иначе начнутся глюки с клавой и другие неприятности.
Тогда будет круто. Можно конечно ради воспроизведения колом все поставить но это не айс.

S_V_B
07.02.2020, 16:18
Вопрос к Ув. nzeemin, возможно ли прикрутить к UKNCBTL (опционально) эмулятор AY на параллельный порт? Исходники взять например у gid? (если он конечно не против).
Было бы здорово. А то утомительно каждый раз на реал перетаскивать.

hobot
07.02.2020, 21:22
А то утомительно каждый раз на реал перетаскивать.
готек, утомительно, с флопами бегали туда сюда по началу, а теперь флешку воткнуть переткнуть утомительно
- вот они программисты ) привыкли всё готовой по контрл-ф9 за пару секунд, изнежились )
https://yoursmileys.ru/msmile/compgame/m19097.gif
может эмулятор AY и не помешает конечно, но тогда и AZ-контроллер не помешал бы.
Вот, сейчас прочитает это Никита, и подумает, даже отвечать не стану - утомительно каждый раз ответ писать.

S_V_B
08.02.2020, 06:54
вот они программисты ) привыкли всё готовой по контрл-ф9 за пару секунд, изнежились )
Причем здесь нежность? Просто целесообразность.. скорость разработки увеличится. Скажите еще, что правильней в тетрадке отлаживать программу.

S_V_B
08.02.2020, 12:46
Видео "девайс в работе":
https://yadi.sk/i/fiMU2h9dZNBMwA

Titus
08.02.2020, 12:54
Круто!

Опубликуй финальную схему.

Ты смикшировал стандартный звук, и звук AY вместе?

ALS
08.02.2020, 12:55
Навеяно "в тетрадке отлаживать программу" (с)
Как-то писал программу на одном ноутбуке, потом отсылал *.hex по сети на другой и уже на нем прошивал железяку.
Тестил, потом опять возвращался к первому, корректировал программу, ... и так весь день.
Все оттого, что на первом частично не работали USB, а на втором - слишком маленький дисплей.

S_V_B
08.02.2020, 13:00
Ты смикшировал стандартный звук, и звук AY вместе?
Нет не стал, мне спикер не нравится да еще на усилке. Кому нужно припаять не сложно (тем более без него плата без лишних макарон).

RESET можно на третий бит порта С повесить через транзистор. (хотя сбрасывать можно без него).

hobot
08.02.2020, 13:15
Нет не стал
на Зеленоградской поделке тех лет стоял биппер типа как в АОНах по размеру,
а звук в бортовом (на мат.плате) бипере сохраняется? Звук через обычный мини-джек
наружу идёт??? Это дискотека уже )

S_V_B
08.02.2020, 13:28
а звук в бортовом (на мат.плате) бипере сохраняется?
конечно, что ему будет :) Как я и говорил фишка в том, что компьютер курочить не нужно, воткнул в порт и радуйся.. цена вопроса 3$+2часа с паяльником :)

Titus
08.02.2020, 14:03
RESET можно на третий бит порта С повесить через транзистор. (хотя сбрасывать можно без него).
Зачем через транзистор?

S_V_B
08.02.2020, 14:29
RESET же на землю замыкать нужно?

Titus
08.02.2020, 14:53
RESET же на землю замыкать нужно?

Еще раз повторю вопрос - какова схема реализации ресета на транзисторе? )

S_V_B
08.02.2020, 15:21
какова схема реализации ресета на транзисторе?
см. Схему "AY-LPT", с которой собственно и началось...

Titus
08.02.2020, 16:00
см. Схему "AY-LPT", с которой собственно и началось...
Давай не отылать неизвестно куда)
Ты в теме, у тебя перед глазами схема.
Покажи ее. Где транзистор, чем управляется, как и зачем)

S_V_B
08.02.2020, 16:57
Вот,( резистор наверное ненужно):
https://pic.maxiol.com/thumbs2/1581169311.630666996.lptport.png (https://pic.maxiol.com/?v=1581169311.630666996.lptport.png&dp=2)

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

Отредактировал шапку, теперь все актуально.
1. ПП проигрывания PSG рабочая.
2. Включение кварца (в предлложенной схеме), рабочее (то что предложил ММ работает но нужно номиналы менять- частота высокая получилась).
3. Сссылка на видео там же.
4. Reset пока в воздухе, но на нормально собранной плате при включении AY не гудит.

Titus
08.02.2020, 17:09
Вот,( резистор наверное ненужно):
Там транзистор является инвертором. У тебя целая куча логических элементов в микросхеме генератора, которые можно использовать, как инверторы.

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


4. Reset пока в воздухе, но на нормально собранной плате при включении AY не гудит.
Важно, чтобы при пересбросе УКНЦ по ресету AY тоже сбрасывался.

S_V_B
08.02.2020, 19:08
У тебя целая куча логических элементов в микросхеме генератора, которые можно использовать, как инверторы.
Вам виднее :) Я в этом не силен. Может кто еще заинтересуется из просветленных.. и переделает схему.
Кстати порт А наверное можно под COVOX использовать.

AFZ
09.02.2020, 06:38
может эмулятор AY и не помешает конечно, но тогда и AZ-контроллер не помешал бы.Ну, AZ, по крайней мере, уже устаканился. То есть, конечно, у нас с Максом в дальних планах еще есть сеть, но пока не до нее. А остальное... Я, правда, не вижу большого круга задач для применения AZ в эмуляторе УКНЦ. Нет, по-мелочи кое-что есть, но напрягать ради этого наших эмуляторщиков я бы не стал. Вот для AZ в эмуляторе ДВК работы много - можно будет запустить операционки, отличные от RT-11 (TSX-11). Тот же ДИАМС попробовать. Да, хотя бы, сочинить нормальную программу смены файл-образов в приводах AZ. Все-таки эмулятор для программирования гораздо удобнее, чем реал... Осталось уговорить Патрона, а то он что-то пропал. Неужели утратил интерес?..

S_V_B
11.02.2020, 19:19
Как на AY микшируют спецэффекты и фоновую музыку?

Titus
11.02.2020, 22:34
Как на AY микшируют спецэффекты и фоновую музыку?
Отключают один из каналов музыки на время игры эффекта.
Какой - выбирают исходя из обстоятельств. Т.е. без какого канала музыка меньше всего пострадает.

gid
12.02.2020, 10:58
Ещё можно микшировать методом квантования.
Чередуешь квант музыки, квант спецэффекта. Но так не всегда хорошо получается. И метод программно-трудоёмкий.

Titus
12.02.2020, 11:29
Ещё можно микшировать методом квантования.
Чередуешь квант музыки, квант спецэффекта. Но так не всегда хорошо получается. И метод программно-трудоёмкий.
Булькать будет и эффект и музыка)

S_V_B
12.02.2020, 11:32
Ув. Titus, может вы в своем эмуляторе сделаете поддержку AY на параллельному порту?
Тогда любой желающий мог бы посмотреть поделки с музыкой.. Стимул был бы больше что-либо писать.
А то пока я один счастливый обладатель :)

Titus
12.02.2020, 11:38
Ув. Titus, может вы в своем эмуляторе сделаете поддержку AY на параллельному порту?
Тогда любой желающий мог бы посмотреть поделки с музыкой.. Стимул был бы больше что-либо писать.
А то пока я один счастливый обладатель
Чтобы сделать поддержу AY, надо сперва сделать поддержку звука в эмуляторе в принципе. А у меня пока только ведутся исследовательские работы (https://zx-pk.ru/threads/21908-emustudio-zx.html?p=1044665&viewfull=1#post1044665) на эту тему. Если кратко, то стандартный подход к синхронизации видео и аудио, привязанный к нотификации аудиобуфера, меня не устраивает, т.к. он достаточно грубый. Обновление видео, привязанное к нему, не может быть достаточно плавным. Поэтому я исследую эту тематику на предмет точной универсальной синхронизации. Чтобы работала не только у меня или у Пети, а преимущественно у всех. Если получится, разумеется)

S_V_B
07.03.2020, 15:00
Собрал окончательную версию.
Добавил COVOX на порта А.
Сделал разъемное соединение шлейфа IDC40.
Корпус - 3D печать.

https://pic.maxiol.com/thumbs2/1583582370.630666996.ay.png (https://pic.maxiol.com/?v=1583582370.630666996.ay.png&dp=2)

https://pic.maxiol.com/thumbs2/1583582394.630666996.ay1.png (https://pic.maxiol.com/?v=1583582394.630666996.ay1.png&dp=2)

hobot
07.03.2020, 15:33
или у Пети,
ты знаком с Петей? Зови его в этот форум, срочно !
Он один из авторов в составе Зеленоградской "MAPLE"!

Titus
07.03.2020, 15:51
ты знаком с Петей? Зови его в этот форум, срочно !
Он один из авторов в составе Зеленоградской "MAPLE"!
Не знаком. Это абстрактный Петя.

S_V_B
07.03.2020, 16:22
Кстати красная кнопка это RESET. Как выяснилось необходимость в нем появляется только если перезапустить комп во время воспроизведения. Соответственно не составляет труда заткнуть его этой кнопкой. Взамен мы получаем абсолютно "безмакаронную" конструкцию :)

randomizer
17.06.2020, 23:00
Тоже собрал этот модуль, чтобы протестировать приехавшие AY-3-8913.

Несколько замечаний по конструкции:
1) хорошо бы в шапке разместить собранную программу для проверки модуля, я не кусок кода
у меня например параллельный интерфейс оказался "битым" (бит 0, именно на порту B не работал как надо)
заведомо работающая программа сэкономила бы время
вот (https://www.dropbox.com/s/2vt1v3onfjiowx0/PAYT.SAV?dl=0) как вариант программа для теста)))
2) при номилах резисторов на выходе AY их схемы шапке, получается слишком высокий по амлитуде сигнал - у меня он перегружал вход монитора.
сопротивление резисторов подключенных к общему проводу стоим уменьшить до 510 Ом
3) центральный канал слишком громкий, получается, там стоит удвоить номиналы резисторов
4) AY и YM отличаются по звучанию, лучше всего на мой взгляд получается если их оба запараллелить)

И мучает вопрос насчет интерфейса:
Порты B и С нагружены резисторными делителями, с довольно низким сопротивлением, зачем?
Шина AY подключена тоже через резисторы, опять же зачем? В таком виде AY не сможет выдать данные в порт, только принимать.
И странность, нижнему уровню на выходе B и C соответстует напряжение в 1В. При том что для TTL 0.8В - 2В это серая зона. Тоже сбивает с толку.

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

"Last Mission" пока без звука?

S_V_B
19.06.2020, 07:17
Порты B и С нагружены резисторными делителями, с довольно низким сопротивлением, зачем?
Шина AY подключена тоже через резисторы, опять же зачем? В таком виде AY не сможет выдать данные в порт, только принимать.
И странность, нижнему уровню на выходе B и C соответстует напряжение в 1В. При том что для TTL 0.8В - 2В это серая зона. Тоже сбивает с толку.
Это вопрос к Титусу, он в этой теме главный "электрик", я так рядом постоял :)


"Last Mission" пока без звука?
Пока да, лень - лето, купаться охота - мозг не работает :)
И еще не придумал как делать SFX и совмещать их с музыкой (читать регистры ведь мы не можем)..

Titus
19.06.2020, 09:30
Это вопрос к Титусу, он в этой теме главный "электрик", я так рядом постоял
У меня под рукой схемы нет. Если есть вопрос, прикладывайте к нему скриншоты.

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


И еще не придумал как делать SFX и совмещать их с музыкой (читать регистры ведь мы не можем)..
Зачем тебе читать регистры, если ты сам в них пишешь?

S_V_B
19.06.2020, 09:31
Зачем тебе читать регистры, если ты сам в них пишешь?
Тыж сам говорил, чтобы узнать когда канал освободится.

Titus
19.06.2020, 09:36
Тыж сам говорил, чтобы узнать когда канал освободится.
Что за ерунда) Ты этого узнать не сможешь. Где я такое говорил?

S_V_B
19.06.2020, 09:38
Что за ерунда) Ты этого узнать не сможешь.
Как тогда узнать, что в данный момент происходит в AY и какой канал меньше "пострадает" от SFX?

Titus
19.06.2020, 09:56
Как тогда узнать, что в данный момент происходит в AY и какой канал меньше "пострадает" от SFX?
Никак) Только логически. Если ты знаешь, что у тебя за мелодия, ты знаешь, какой канал самым малозначительный, какой канал можно на время приостанавливать без большого ущерба для мелодии.

S_V_B
19.06.2020, 10:18
Катастрофически мало "чтива" по этому вопросу :(
Музычку проиграть пол беды, как это делать интерактивно....
Для SFX тоже свой формат придумывать нужно (не процедурно же они делаются) .. повторы, каналы итд.
Отдохнем, когда снова на карантин закроют.. будем думать. :)

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

Кстати, в чем и как делают паттерны, орнаменты, которые потом в мелодию собирают?
Только не говорите, что в голове :)

Titus
19.06.2020, 10:30
Кстати, в чем и как делают паттерны, орнаменты, которые потом в мелодию собирают?
Только не говорите, что в голове
В музыкальном редакторе. На сколько я понимаю, сейчас это Vortex Tracker.

S_V_B
19.06.2020, 12:08
На сколько я понимаю, сейчас это Vortex Tracker.
Как, научите... ссылку плз

Titus
19.06.2020, 13:02
Как, научите... ссылку плз
Не пользовался. Ищи по ключевым словам на форуме.