Это не "дура", это FMonster (Попытка создать ISA 8-bit плату со всеми синтезаторами)

Описания, советы, ремонт, эксплуатация старых IBM PC-совместимых ПК
scg
Full Member
Сообщения: 201
Зарегистрирован: 27.02.2017,23:35

Это не "дура", это FMonster (Попытка создать ISA 8-bit плату со всеми синтезаторами)

Сообщение scg » 06.07.2021,16:57

Fagear писал(а): 06.07.2021,01:10 На "2-м этаже":
1x ATmega1284P (MIDI host: Hard MPU)
Может я не разглядел, но у вас два разъема OUT MIDI. Обычно, один из них - THRU
https://www.sweetwater.com/insync/midi-thru/

Аватара пользователя
Fagear
Advanced Member
Сообщения: 1477
Зарегистрирован: 22.01.2010,11:23
Откуда: Москва, САО

Вклад в сообщество

Это не "дура", это FMonster (Попытка создать ISA 8-bit плату со всеми синтезаторами)

Сообщение Fagear » 06.07.2021,17:57

scg, именно два Out'а. Чтобы можно было две одинаковых ветки MIDI-синтов подключать.

scg
Full Member
Сообщения: 201
Зарегистрирован: 27.02.2017,23:35

Это не "дура", это FMonster (Попытка создать ISA 8-bit плату со всеми синтезаторами)

Сообщение scg » 27.07.2021,10:10

Fagear писал(а): 06.07.2021,17:57 scg, именно два Out'а. Чтобы можно было две одинаковых ветки MIDI-синтов подключать.
Для этого синтеаторы по цепочке подключают, через thru порты. Как-то так:
Изображение

Аватара пользователя
nimdasys_inbox_ru
Advanced Member
Сообщения: 3660
Зарегистрирован: 05.06.2019,18:58
Откуда: Черкесск

Вклад в сообщество

Это не "дура", это FMonster (Попытка создать ISA 8-bit плату со всеми синтезаторами)

Сообщение nimdasys_inbox_ru » 01.10.2022,01:50

Fagear писал(а): 05.07.2021,04:48 По Covox Sound Master (CSM).


Что касается шумного выхода - всё понятно и логично, ибо что все ОУ, что AY питались (как в оригинальной плате) напрямую с шины ISA, что есть прямой путь ко всем шумам.
Как уже стало привычно, приколхозил парочку КРЕНок с +12 В до +9 В (для аналоговой части с ОУ) и с +9 до +5 В (для AY и коммутатора выхода). Шум на выходе сразу стал значительно меньше.
Собрал и вставил таки платку с R2R ЦАПом, проверил, звук с ЦАПа есть!
Далее начал разбираться с микшером. Напомню, что на вход приходит стерео-пара с AY, моно-выход с AY и моно-выход с повторителя R2R ЦАП. Поставив просто эмиттерный повторитель на ЦАП в Covox получили слишком тихий сигнал, поэтому вместо того, чтобы усилить сигнал с ЦАП, они в 100 раз ослабили сигнал с AY. Чтобы совсем его потопить в шумах.
Я же попытался сделать более сбалансированный микшер, но для этого мне нужно было предварительно усилить сигнал с ЦАПа. А я в аналогово-транзисторной схемотехнике ни в зуб ногой... Короче и так резисторы ставил, и сяк, и второй каскад добавлял, даже, в конце концов, просто заменил на буфер-усилитель на ОУ... Но такого же звучания, как у исходной платы, получить не удалось: оригинал даёт больше баса. Пока что остановился на варианте со слегка изменённой схемой на одном транзисторе. Надо ещё ставить эксперименты.
Но, в итоге, уровень ЦАПа удалось поднять, микшер заработал без сильного перекоса, общее усиление ещё приподнял, чтобы финальный выход был похож на уровни оригинальной платы.
Обнаружил, что далеко не во всех играх плата видится. CSM явно поддерживает авто-определение и часть игр явно не могла в моей реплике увидеть "оригинал". Дело оказалось в том, что я использовал AY8910 (и, ранее, YM2149), в то время как на оригинальной плате стоял AY8930. К счастью, в этот раз у меня на руках уже был свой 8930-й чип, я его поставил в свою реплику и проблемы с определением реплики исчезли.
Также я написал пару DOS-утилит и "пошарился" по регистрам AY всякими недокументированными способами. Заодно, научился программно различать AY8910, AY8930, YM2149 и KC89C72 (чипы, что есть у меня на руках). И да, явно те игры, которые ранее не определяли реплику, использовали расширенные регистры AY8930 для определения наличия CSM. То есть для "настоящей реплики" все остальные чипы не подходят, нужен именно AY8930.
Если опустить детекцию в некотором софте, то и остальные чипы будут работать в реплике, но с оговорками. У 8930 есть ещё дополнительные делители тактовой частоты и они используются в CSM. У остальных чипов такой опции нет, поэтому они звучат не в той же тональности. Вопрос можно решить, если добавить ещё одну 74HC74 в роли делителя на 2, но свободных элементов на плате нет, а присирание ещё одного DIP-14 явно потратит аутентичность вида.
Плюс ещё есть проблемы конкретно с YM2149, вернее с извращённым способом генерации DMA-запросов для ЦАПа на CSM. Этим тут занимается чип-синтезатор: канал C отключается от аудио-выхода и через транзистор подаётся в логику, которая генерирует DRQ на шине ISA. Так вот, если у AY8910 и AY8930 выход в состоянии тишины находится на нуле и при наличии генерации поднимается в сторону +5 В, то у YM2149 по умолчанию выход "висит" в районе 2,5 В и колеблется около них. То есть, с точки зрения того буферного каскада для DMA, у YM2149 выход всегда находится в состоянии "1", никакую генерацию он никогда не "увидит" и, соответственно, DRQ запросы формироваться не будут.
Возможно, можно как-то малой кровью модифицировать схему этого каскада, чтобы DMA заработал и с YM2149, пока не разбирался.
Некоторые игры с ЦАПом работают и без DMA, то есть просто записью в порт, CSM позволяет оба варианта.
Также я заменил разъёмы джойстиков (у меня с первого раза были впаяны не того "пола"), но не смог найти ни одну игру, которая бы поддерживала джойстики именно на CSM. Из тех игр, поддерживающих CSM, что были у меня, джойстик либо не поддерживался вообще, либо только обычный PC-совместимый (который на Game port'у висит).
Возможно, есть какие-то игры из десятков совместимых с CSM, которые поддерживают эти разъёмы... но у меня не было времени заниматься полным перебором. Поэтому точно утверждать, что джойстики работают точно как задумано в оригинале я не могу, ибо декодер адреса в GAL-чипе написан частично "по наитию" и адрес работы портов джойстиков может и отличаться.
Чтобы хотя бы проверить работу того, что прописал в GAL я, пришлось написать ещё одну DOS-софтину. Она показывает нажатия всех кнопок с обоих портов. Собрал макет геймпада и нашёл какой-то Atari-совместимый джойстик - с обоими оба порта на реплике (и на оригинальной плате с моим GAL'ом) работают.
Так что, в общем и целом, реплика живёт и допиливается. Уже можно задуматься о написании плеера музыки со Спектрумов на CSM.

great coder, что касается сборки SG0309, то для её замены я сделал мини-плату с 0805 резисторами. Найти GAL'ы вроде не проблема, их и в Китае много продают, да и Atmel'овский вариант, вроде, всё ещё производится.
Однако на предыдущей странице я давал фотографию платы, которая суть CSM переделанный на SMD. Там GAL "разобран" на чипы логики. Только в виде DIP это будет намного большая плата, никак не похожая на оригинал.
А можно ли приобрести эту новодельную плату ?! :rolleyes:

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Это не "дура", это FMonster (Попытка создать ISA 8-bit плату со всеми синтезаторами)

Сообщение Rio444 » 01.10.2022,12:11

nimdasys_inbox_ru,
Последнее посещение:18.08.2022,15:20
Я бы поискал другие контакты.
Электронка: Изображение копия Изображение

Аватара пользователя
nimdasys_inbox_ru
Advanced Member
Сообщения: 3660
Зарегистрирован: 05.06.2019,18:58
Откуда: Черкесск

Вклад в сообщество

Это не "дура", это FMonster (Попытка создать ISA 8-bit плату со всеми синтезаторами)

Сообщение nimdasys_inbox_ru » 01.10.2022,12:24

Rio444 писал(а): 01.10.2022,12:11 nimdasys_inbox_ru,
Последнее посещение:18.08.2022,15:20
Я бы поискал другие контакты.
Да я у него спросил на его канале в YouTube, там он уже вчера ответил...

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Это не "дура", это FMonster (Попытка создать ISA 8-bit плату со всеми синтезаторами)

Сообщение Rio444 » 01.10.2022,12:28

nimdasys_inbox_ru писал(а): 01.10.2022,12:24 Да я у него спросил на его канале в YouTube, там он уже вчера ответил...
Можно ссыль на ответ и на сам канал?
Электронка: Изображение копия Изображение

Аватара пользователя
nimdasys_inbox_ru
Advanced Member
Сообщения: 3660
Зарегистрирован: 05.06.2019,18:58
Откуда: Черкесск

Вклад в сообщество

Это не "дура", это FMonster (Попытка создать ISA 8-bit плату со всеми синтезаторами)

Сообщение nimdasys_inbox_ru » 01.10.2022,12:41

Rio444 писал(а): 01.10.2022,12:28
nimdasys_inbox_ru писал(а): 01.10.2022,12:24 Да я у него спросил на его канале в YouTube, там он уже вчера ответил...
Можно ссыль на ответ и на сам канал?
Канал

Ответ

Аватара пользователя
maxfox
Advanced Member
Сообщения: 547
Зарегистрирован: 22.08.2014,23:06
Откуда: С-Пб, Рамбов, Петергоф, Стрельна etc.

Это не "дура", это FMonster (Попытка создать ISA 8-bit плату со всеми синтезаторами)

Сообщение maxfox » 03.10.2022,10:51

Rio444, Вообще лучше да его Дискорд сервер зарегаться - Fagear Tech Corner, Макс там практически 24/7 и много людей увлечённых электроникой/программированием и около того. На его канале должна быть ссылка в описании под видео.
Вспомнил что забыл.

Аватара пользователя
Fagear
Advanced Member
Сообщения: 1477
Зарегистрирован: 22.01.2010,11:23
Откуда: Москва, САО

Вклад в сообщество

Это не "дура", это FMonster (Попытка создать ISA 8-bit плату со всеми синтезаторами)

Сообщение Fagear » 21.03.2023,00:24

Приветствую всех. Настало время для долгожданного обновления по проекту. ;)

Блок SN PSG в целом завершён (но мне всё же надо заказать последнюю плату для финальной проверки).

Блок CMS (Creative Music System) SAA был тщательно оттестирован и была найдена причина глюков в звуке: SAA1099 очень не любит, когда питание ей приходит с одной ветки, а референс у линий данных с другой. :rolleyes:
После небольшого мозгового штурма и тестов я переподключил питание SAA'шек напрямую к +5 В ISA, выкинул одну КРЕНку, а питание с оставшейся подал на выходные каскады (через пины Iref).
Отладка питания SAA1099
Отладка питания SAA1099
Больше никаких глюков, никакого дополнительного шума, меньше деталей и тепловыделение. Также пришлось вернуть ФНЧ в блок, ибо выход у SAA ШИМит и его надо фильтровать.
Сырой выход SAA1099
Сырой выход SAA1099
Технически, блок CMS также готов. :cool:

Блок AY также был оттестирован и отлажен. Любую из частот можно выбрать, все разновидности AY работают на одинаковой частоте (AY8930 работает без деления на 2). Выходной коммутатор работает. Для проверки всех фич пришлось отдельную DOS-софтину написать.
Обнаружилась странное поведение с AY-3-8910A, которое вызывало повисание системы при тестировании регистров моим софтом. При этом AY8930, YM2149, KC89C72 и даже AVR-AY работали нормально.
Проблема с AY8910 оказалась в слишком низком уровне "1", из-за которого 74HC245 срывалась в генерацию, заваливая шину ISA мусором.
Генерящая 74HC245
Генерящая 74HC245
Я добавил подтяжки на внутреннюю шину данных блока и проблема ушла.
Похоже, что блок CSM (Covox Sound Master) AY тоже готов работать.

Были проверены блоки ЦАП, стерео чип AD7528 не подходит для двойного моно, а вот AD7524 прекрасно работают.

Моя логика авто-детекта стерео работает хорошо, но возникла проблема с тем, что софт для Covox Speech Thing ищет адрес LPT1 в памяти CMOS, которого там нет, если в системе нет LPT контроллера, и софт работать отказывается.
Есть программный костыль: можно изменить данные в CMOS (через команды в debug.exe или специальной программой), записав 0x378 на место адреса порта LPT1 и тогда всё заработает, даже если LPT контроллера нет.
Но я хотел аппаратное решение и добавил немного чипов для "эмуляции" LPT-контроллера, чтобы процедура POST обнаруживала блок ЦАПа как "LPT контроллер".
Я сделал новую ревизию платы и всё заработало как надо. При установленной перемычке POST будет автоматически обнаруживать LPT1 на 0x378 и LPT2 на 0x278 для стерео ЦАП.
Стерео ЦАП также закончен и готов занять своё место на 2-м этаже FMonster.

Блок SID тоже был закончен и я воспользовался возможностью проверить крепеж на нём.
Крепёж
Крепёж
Но вот какая штука: на блоке SID весь задающий генератор. Я в нём использовал счётчики 74HC192 как наследие от проекта реплики SSI-2001. Сейчас всё ещё можно купить эти микросхемы, но они довольно нечастые и недешёвые.
Также, в процессе обновления блока AY я не смог получить нужный мне делитель на 74HC192. Это заставило меня поискать замену и я остановился на 74HC193, которая весьма похожа на 74HC192 и позволила сделать нужный делитель.
Я сделал новую схему делителей и для блока SID (заменил 192 на 193, чтобы не увеличивать список деталей), обновил и собрал платы блоков AY и SID. Всё работало как надо.
Отладочный блок SID (FMonster)
Отладочный блок SID (FMonster)
Но одна вещь меня продолжала беспокоить: 74HC193 также довольно трудно найти в продаже. Я попросил помощи у себя в Дискорде и мне порекомендовали взять 74HC393.
Этот счётчик сильно отличается, это двойной двоичный счётчик в слегка меньшем корпусе, но сделав некоторые расчёты и прикидки я решил, что я смогу везде заменить 74HC193 на 74HC393.
Попутно я выкинул несколько 74HC74 (в роли делителей на 2 и на 4) и добавил 74HC08 где нужны были нечётные делители. В итоге всё утряслось примерно в тех же габаритах, в слегка реорганизованном виде.
Но теперь моя схема использует дешёвые и легко доставаемые счётчики 74HC393. Так что блоки AY и SID были снова перетрассированы под них.
Также я обновил проект DuoSID новыми блоками. :cool:

Блок OPN2 (Sega MD) пока приносит только головную боль с высоким уровнем шума, низким уровнем сигнала и искажённым звуком. :help: Мне нужно углубиться в питание этого синта.

Блок OPL2 (Adlib) был единственным, который заработал "из коробки" и не доставил мне никаких проблем. Но то был моно вариант.
А я хочу стерео OPL2. И не хочу постоянно возиться с перемычками или слышать моно только из левого канала.
Благодаря ленивым разработчикам PAS это вполне себе проблема, ибо они решили использовать адрес "моно OPL2" в роли адреса "левый OPL2".
Я пытался выдумать какую-то хитрую логику, которая могла бы обнаруживать доступ к "правому" OPL2 чипу, но у OPL2 много регистров, каждая программа работает с ними по-своему и порядок и частота доступа сильно различаются. :05:
Я даже пытался мониторить сигнал до выходного ЦАПа на предмет тишины, но это оказалось очень сложно с жёсткой логикой, простой схемой не обойтись.
Так что на текущий момент я пришёл к комбинации логики и RC-задержки с триггером. Мне ещё надо посмотреть, насколько хорошо оно будет работать. И по-подбирать постоянную времени.
Если по-простому, то при любой записи в "правый OPL2" схема автоматически переключается в режим "стерео" и отправляет данные с 0x388 в левый чип, а с 0x38A - в правый.
RC-цепочка обеспечивает задержку примерно в ~1 с. Программы обычно опрашивают OPL2 с куда большей частотой, даже если ничего не меняется.
Когда задержка истекает, схема переключается в "моно" и копирует записи по порту 0x388 в оба чипа OPL2, а также (недавняя добавка) она замещает выход правого канала сигналом из левого.
Чтение из 0x388 всегда возвращает данные только из левого OPL2 в любом режиме. А доступ по портам "Sound Blaster" 0x220/0x222 всегда обращается к левому/правому чипам без микширования.
Блок перемычек видится примерно таким:
- 0x388/0x38A (Adlib, PAS с авто-стерео)
- 0x220/0x222 (SB Pro)
- 0x240/0x242 (SB Pro)
Первая перемычка может устанавливаться независимо от 2-й и 3-й. А 2-я и 3-я взаимоисключающие.
В общем, схема работает примерно как стерео-обнаружение для ЦАПов.

Блок OPL3 работает... типа. Он выдаёт звук, но есть проблемы с его обнаружением. OPL3 был довольно поздним синтом и преимущественно использовался на Sound Blaster и совместимых как дополнительный синт "по умолчанию", но не как отдельная плата.
Из-за этого многие игры и софт отказываются "видеть" OPL3, потому что не находят остальных частей Sound Blaster со всеми его дополнительными DSP, микшерами и регистрами.
Сделать "эмулятор Sound Blaster" для обнаружения видится довольно сложной задачей, да и OPL3 не сильно отличается от OPL2.
И есть факт того, что FMonster не даёт полноценного воспроизведения PCM звука, как может Sound Blaster.
Из всего этого вполне логично следует, что почти наверняка рядом с FMonster будет установлена какая-то плата, способная воспроизводить PCM-звук... и почти наверняка на борту этой платы будет чип OPL3.
На текущий момент я принял решение выпилить OPL3 из проекта FMonster целиком. Для него тут нет ни места, ни задач. :rolleyes:

Блок MIDI host (основанный на HardMPU) тоже протестирован. Работает хорошо и с WaveBlaster синтами, и с внешними через DIN5 (проверено с SC-55K, MU-90B и MT-32):

Работу с прерываний пока не проверял. Моя реализация программно совместима с HardMPU, но отличается аппаратно, чтобы вписаться в список деталей FMonster.

great coder
Advanced Member
Сообщения: 340
Зарегистрирован: 20.06.2020,22:40
Откуда: msk.ru

Это не "дура", это FMonster (Попытка создать ISA 8-bit плату со всеми синтезаторами)

Сообщение great coder » 21.03.2023,15:25

Fagear писал(а): 21.03.2023,00:24 переподключил питание SAA'шек напрямую к +5 В ISA
Только хотел спросить, а как в таком случае с помехами - а тут выяснилось, что вопрос даже не стоит:
Fagear писал(а): 21.03.2023,00:24 выход у SAA ШИМит и его надо фильтровать.
Но я думал, фильтр и так есть на каждом канале (на операционниках горизонтальной части микшера). Кстати, про замусоривание канала PC Speacker-а (уж он-то точно "грязнее некуда"!) есть идеи?
Fagear писал(а): 21.03.2023,00:24 в слишком низком уровне "1"
А с уровнем канала C (для работы DMA) боротся не стали (по причине отстутствия программной поддержки)? LM13600 (пусть не для FMonster, а для реплики)?
Fagear писал(а): 21.03.2023,00:24 0x378 на место адреса порта LPT1 и тогда всё заработает <...> Но я хотел аппаратное решение и добавил немного чипов для "эмуляции" LPT-контроллера,
На мой взгляд - это уже перебор. Конечно, вряд ли кто-то всерьез захочет печатать через настоящий LPT (одноврменно с наличием FMonster :) , тут скорее стоит опасатся OPL3LPT ) - и не сумеет пересадить встроенный - но потенциальное поле для лишнего глюкала есть.
Fagear писал(а): 21.03.2023,00:24 Я сделал новую схему делителей
2022-08-28 21.59.54.jpg
Тут пугает не столько 1gate-логика, сколько десяток транзисторов. Неужели несмотря на такую рассыпь BOM (c 393) таки уменьшился?
Fagear писал(а): 21.03.2023,00:24 Блок OPN2 (Sega MD) пока приносит только головную боль с высоким уровнем шума, низким уровнем сигнала и искажённым звуком.
Ни слова о программной поддержке! (ирония)
Fagear писал(а): 21.03.2023,00:24 OPL3 не сильно отличается от OPL2. <...> На текущий момент я принял решение выпилить OPL3
Ну не знаю, с такими проблемами с местом я бы скорее принял обратное решение - выпилить OPL2, потому что OPL3 стерео. Неужели 2OPL2 настолько лучше звучат, чем OPL3 (в их эмуляции), стоит ли оно того?

Ответить