AY/YM/TS test v0.2



Предлагаю вашему вниманию небольшой тест, написанный как для проверки работоспособности плат turbosound (NedoPC), так и самих чипов AY/YM. Думаю, он будет полезен не только владельцам/изготовителям TS, но и тем, кто сейчас приобретает YM-чипы из Китая.

Начиная с версии 0.2 добавлена проверка звучания beeper'a и магнитофонного порта, так что тест, возможно, окажется полезен ещё и организаторам demoparty для проверки звука перед показом музыкальных конкурсов:)

Предыстория

Я давно хотел обзавестись классическим турбосаундом, но в прошлом году, связавшись с CHRV (Роман Чунин, разработчик TS/TSfm) выяснил, что платы не производятся уже много лет, и даже свои личные остатки он давным-давно распродал/раздарил всем желающим. Не имея желания копаться в барахолке zxpk, после некоторых раздумий было принято решение скачать принципиальную и монтажную схемы, файл в формате PCAD для производства и заказать изготовление знакомым электронщикам. Скинувшись с несколькими заинтересованными спектрумистами (которые так же, как и я давно хотели обзавестись этим девайсом), мною были закуплены все необходимые детали, распаяны переходники и заказано изготовление самих устройств. Так появились на свет 10 плат классического TurboSound (revision C), нашедшие своих хозяев на минувшем Chaos Constructions'2017:)

Но прежде чем отдавать платы людям, их необходимо было как следует проверить. Признаться, я так и не смог найти ни одной программы, тестирующей TS на более серьёзном уровне, чем простая проверка на его наличие/отсутствие — а потому распахнул ноутбук, обложился справочниками и загрузил ассемблер. Результат перед вами.

Как с этим жить

Разумеется, долго и счастливо. Счастье наступает практически сразу после загрузки и запуска — первым делом предлагается выбрать устройство, которое будем тестировать:



Выбор осуществляется нажатием клавиши Enter, любая другая клавиша перемещает курсор.

TurboSound or AY/YM test

В этом пункте всё, в общем-то, осталось по-прежнему: вначале определяется звуковая конфигурация пользовательской машины. Имеется 5 вариантов:

    — есть TS, доступны оба чипа;
    — есть TS, доступен только первый (2nd chip is disabled)
    — есть TS, доступен только второй (1st chip is disabled)
    — нет TS, на борту всего один чип (single AY/YM soundchip)
    — на компе вообще нет AY, либо есть TS, но оба чипа дохлые (отсутствуют) — no soundchip



В последнем случае программа дождётся нажатия на любую клавишу и вернётся в начало.

Первый тест довольно грубый, и основан на проверке содержимого нулевого (R0) регистра обоих чипов. Дальше, в зависимости от определённой ранее конфигурации, происходит тщательный подсчёт контрольных сумм каждого регистра (причём только тех битов, которые реально отвечают за формирование звука):



Обратите внимание: в случае обнаружения TS проверка контрольных сумм будет произведена для обоих чипов вне зависимости от того, определился на первом тесте только один чип или оба — это сделано специально (мало ли, может у конкретного экземпляра сбоит только один бит одного регистра...)



Далее в каждый канал каждого найденного чипа будет последовательно выведен чистый тон, все 32 градации белого шума и два типа огибающей — C и E. Каналы подписаны как буквенно (ABC), так и по расположению в пространстве (Left, Right, Middle). Дабы не оглушить вас или ваших соседей (если вы забыли отрегулировать громкость на усилителе) для всего, чего возможно, сделан fade-in/fade-out:)



Начиная с версии 0.2 стало возможно «проматывать» каждый шаг этого теста нажатием любой клавиши. А удерживая её (клавишу) длительное время можно ускоренно пролистать весь тест.

Далее, если определился только один чип, вы вернётесь в начало. Если же всё прошло благополучно, вас ждёт последний тест — проверка номиналов выходных резисторов каждого чипа (для оценки баланса громкостей каждого канала). Проверяем «на слух» — для этого в каждый из трёх каналов (ABC) выводится чистый тон на максимальной громкости с попеременным переключением чипов. Если номиналы гуляют, один из чипов будет звучать тише:



На десерт прозвучит музыкальная композиция в формате turbosound. Начиная с версии 0.2 появилась возможность подгружать произвольные TS-треки, для этого соответствующий pt3-файл должен находиться на диске под именем "music.C". Поиск модулей внутри файла и выбор частотных таблиц полностью автоматизирован, при этом поддерживается как формат Vortex Tracker, так и классический ProTracker всех версий с учётом особенностей воспроизведения команд слайда/портаменто для каждой из них.

Внимание: размер файла music.C не должен превышать 16384 байт!

Если файла music.C на диске не окажется, прозвучит композиция Stellar one by Cj Splinter & MmcM (1 место с DiHalt'2011 ZX-Spectrum music compo).


Beeper/TapeOut

Тут всё просто. Играет музыка под beeper, о чём сигнализируют красные (бас) и синие (соло) полоски на бордюре. При нажатии на любую клавишу музыка начинает играть не через бипер, а в магнитофонный порт.



Для пущей наглядности переключение режимов сопровождается синей вспышкой на бордюре, текстовым комментарием и выводом соответствующей пиктограммы в формате specscii.



Кстати, за счёт вывода этих пиктограмм появилась почти бесплатная (всего за 6 байт:) возможность украсить главное меню программы произвольной картинкой/логотипом. Для этого вам необходимо разместить на диске файл "logo.C" (в версии 0.2 отсутствует), содержащий простую последовательность specscii (массив из текстовых и UDG-символов, токенов, управляющих кодов — всё как для оператора PRINT). Лого выводится сразу под менюшкой простым циклическим rst 16, признак окончания — два нулевых байта подряд (AT 0,0 не прокатит:)

Внимание: размер файла logo.C не должен превышать 4096 байт!



Спасибо всем, кто заинтересовался проектом, и самой идеей тестирования AY/YM-чипов. На текущий момент версия программы имеет номер 0.2, и почти все реализованные в ней тесты придуманы мной. Я реально не знаю как ещё можно проверить работоспособность turbosound и отдельных микросхем AY/YM, так что если у кого-то будут идеи на эту тему — смело пишите в комментарии, я постараюсь их реализовать.

В следующей версии планируется поддержка бОльшего количества чипов (по стандарту Spectrum Next, AYX-32 и т.п.), определение типа каждого чипа (AY или YM), проигрывание музыки для single chip и прочие мелкие мульки. Следите за обновлениями:)

Отдельное спасибо Диме Quiet за терпение, ожидание и поддержку! Изначально тест не предназначался к публикации и существовал в виде голого ассемблерного кода для личного пользования, но именно поддержка Димы подтолкнула меня к доведению его (теста) до ума:)

Скачать

42 комментария

avatar
Показано организаторам любой демопати где есть спектрум.
В обязательном порядке
Для решения извечного вопроса
  • Nuts_
  • +6
avatar
всё-таки проглядел ошибку в последнем тесте — центральный и правый каналы были перепутаны:) пофиксил, файл обновлён
  • bfox
  • +4
avatar
Все ок. Это жизнь :)
avatar
bfox, спасибо тебе огромное за проделанную работу! Очень нужный и важный тест! Надеюсь теперь на патях мы будем меньше встречаться с проблемой, когда какой-то из каналов не звучит. Отдельное спасибо за турбосаунды!!!
  • Quiet
  • +7
avatar
Ай, красавчик! Спасибо за тест!
  • Flexx
  • +1
avatar
  • Quiet
  • +3
avatar
кстати! а для патийного прогона туда бы еще тест бипера добавить. чтоб было всё-в-одном
  • nyuk
  • +3
avatar
это мысль. подумаю
avatar
точно нужно, как пострадавший гарантирую это.
avatar
Спасибо, Олег! Рад за всех, кто наконец обзавёлся турбосаундом ;)
Тест классный и безусловно нужный, очень долго пытался найти подобный для C64, да так и не нашёл.
avatar
Как только TSL вернёт мне Пентевку, сразу прогоню тест на AYX-32 :)
  • Flexx
  • +1
avatar
Спойлер: работает )
avatar
Если бы работало изначально, я бы не посылал пентеву TSL'у ))
avatar
Чувак, это мегакруто! Такой тест давно нужен!
Я тоже попал на непонятки со звуком, и путём долгих манипуляций и телефонных звонков с кодингом на бейсике — выяснился ляп на плате под УМ.
Спасибо!
  • VBI
  • +4
avatar
Угу! У меня такая же ситуация — когда искали багу в звуке, тоже приходилось писать тестовые строки на бейсике. Теперь жизнь станет легче :)
avatar
— нет TS, на борту всего один чип (single AY/YM soundchip)
то есть тест не только для турбосаунда? для обычного пентагона с AY подойдёт?
какая-то совместимость с другими расширениями?
тут вроде три AY народ делал… :)
avatar
Вроде бы больше двух на реальных чипах никто не делал же?
avatar
я не очень пристально слежу за разработками. может просто где-то слышал, или показалось.
а вот кстати тестировать таким образом эмуляторы — пригодится.
avatar
да, для любого компа с AY/YM подойдёт, даже фирменного. с той лишь разницей, что последний тест (ориентированный именно на turbosound) будет пропускаться (программа это учитывает)

совместимости с другими расширениями пока нет, но я готов их добавить, если нужно. присылайте документацию:)

p.s: нашёлся ещё один (надеюсь, теперь уж точно последний) баг с выборкой номера неисправного чипа — на подходе новая версия
avatar
в конце тогда вместо Stellar one добавь какой-нить трек для тех у кого один AY :)
avatar
Ну например спецом для dihalt была закуплена
ZXM-Soundcard Extreme
И gs точнее наверное newgs
avatar
не перегружайте bfox хотелками/железками так сразу.
особенно редкими железками.
avatar
Гитхаб :)
avatar
капец… чего только не придумают:)

внимательно прочитал документацию — с точки зрения AY/TS эта карта полностью совместима с ТS от nedopc, так что проверить её (и микросхемы) можно уже сейчас. а вот поддержку FM, SAA и GS я делать всё-таки не буду, по крайней мере в рамках этого теста… на данном этапе мне интересно лишь классическое звучание AY/YM, так что если где-нибудь в Казани сделают плату на 49 микросхем — я с радостью проверю их все, а всяческие частотные модуляции, sid'ы, sound drive'ы и general sound'ы — это как-нибудь без меня:)
avatar
Возможно ошибаюсь, у меня все жИ как бы не-настоящий TS, но зато хорошо отключать хоть чипы, хоть каналы по одному\оптом.
Так вот, первый и второй чип как бы перепутаны. Когда все 6 каналов сведены в стерео, попробуй догадайсО, какой чип звучит.
Авот когда выходы второго чипа отключены, и при этом первый молчит, а второй работает(судя по тесту) — тут я и задумываюсь, у меня ли перепутано или все же в сабже. На скорость конечно не влияйет, но все жЫ…
avatar
перепутано у меня: я нашёл этот баг ещё в прошлую среду, и уже исправил — но потом была судорожная подготовка к verve и безумные выходные, так что до публикации не дошло… сейчас доделываю версию с бипером + слегка доработал функционал, в этой версии уже будет всё ок.
avatar
Чото подумал, если все так хотят реальных чипов, чо б не сделать девайс в формате «бутерброда».
Плюсы:
— вставляется в панельку, отстутствует шлейф, приводящий шину данных з80 в состояние «кровь-кишки-говно-распидорасило»,
— занимает меньше места в пространстве.
Минусы:
— чуть габаритнее по высоте и совсем чучуть по ширине.
— чипы видимо придется запаивать — панельки особого смысла не имеют (как доставать нижний чип?).
  • tsl
  • +2
avatar
Как насчёт добавить в тест 3-ий AY… по схеме Spectrum Next?
avatar
я за. какая адресация у него?
avatar
переключения по стандарту TS:

ld a,#FF; AY 1
ld bc,#FFFD
out (c),a

ld a,#FE; AY 2
ld bc,#FFFD
out (c),a

ld a,#FD; AY 3
ld bc,#FFFD
out (c),a
avatar
Я попросил запустить на Next тест, где 3 AY, тест видит только 1. Второй не опрашивается, как у тебя детектится TS?
avatar
ld de,#ffbf
ld bc,#fffd
ld hl,#fe00

ei: halt: di
out (c),h ;chip1
out (c),L ;reg 0
ld b,e
out (c),c ;val #FD
ld b,d
out (c),b ;chip2
out (c),l ;reg 0
ld b,e
out (c),h ;val #FE
ld b,d
out (c),h ;chip1
out (c),L ;reg 0
in h,(c)
out (c),b ;chip2
out (c),L ;reg 0
in a,(c)

xor h
jr nz,gotcha
ld a,4
inc h
and h
gotcha

; 0 — no chip (FF FF)
; 4 — single AY (FE FE)
; 3 — double AY (FD FE)
; 1 — TS, no 1st (FF FE)
; 2 — TS, no 2nd (FD FF)
avatar
Разобрались, оказалось что они тупо забыли включить TS в настройках. Так что тест запустился и работает.
Можно добавлять 3-ий AY по стандарту.
avatar
грустно то, что у nedopc первый чип по #FE, второй по #FF, а у некста наоборот) но придумаю что-нибудь
avatar
Я уточню последовательность.
avatar
В общем, мне сказали, что порядок в Next не имеет значения. На звук это не влияет. Так что я полагаю, можешь нумеровать как проще для теста.
avatar
Тогда уж и четвёртый на AYX-32 :) Но есть ли смысл тестировать эмуляторы? Они либо работают, либо нет.
Для эмуляторов нужны более другие тесты, мне кажется (типа проигрывания диги по MCC-методу, при котором сразу слышно кривую эмуляцию уровней).
avatar
Я думаю автор допилит свой тест в будущем до дигитала.
avatar
Цитата из выше:
«грустно то, что у nedopc первый чип по #FE, второй по #FF, а у некста наоборот) но придумаю что-нибудь»

Так, объясните, с какой стороны считать :(((((((((((
Автор считает 1chip — #FE, 2 chip -#FF / Так?
а как же тогда схема и надпись ввер ху?
avatar
и там же в документации:
«Принцип работы
Turbo Sound использует два звуковых чипа для вывод звука, но для программирования по портам доступен только один чип. Выбор текущего чипа происходит путем задания адреса внутреннего порта, неиспользуемого звуковым чипом.
#FE – выбор первого чипа; #FF – выбор второго чипа
»
Где правда, брат?!© На схеме косяк?? ну тогда значит некст по схеме собирали:)
avatar
вот и я вначале сделал первый по #FF (после прочтения форумов), потом увидел официальную документацию, где первый по #FE — и поменял (но, как выяснилось, не везде, отчего и образовался баг с перепутанными чипами в предыдущей версии), а теперь, получается, нужно обратно менять?:)
ничего не понимаю… ©
avatar
я так, про себя)), думайю, что верно на схеме, а в описании очепятка, ибо по #FF по схеме выбирается первый чип, через триггер на вход А8. И значит в Uno\Next все верно, ну и у меня. А в тесте бы надо снова поменять, но правильно)/ imho
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.