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 за терпение, ожидание и поддержку! Изначально тест не предназначался к публикации и существовал в виде голого ассемблерного кода для личного пользования, но именно поддержка Димы подтолкнула меня к доведению его (теста) до ума:)
Скачать
43 комментария
В обязательном порядке
Для решения извечного вопроса
Тест классный и безусловно нужный, очень долго пытался найти подобный для C64, да так и не нашёл.
Я тоже попал на непонятки со звуком, и путём долгих манипуляций и телефонных звонков с кодингом на бейсике — выяснился ляп на плате под УМ.
Спасибо!
какая-то совместимость с другими расширениями?
тут вроде три AY народ делал… :)
а вот кстати тестировать таким образом эмуляторы — пригодится.
совместимости с другими расширениями пока нет, но я готов их добавить, если нужно. присылайте документацию:)
p.s: нашёлся ещё один (надеюсь, теперь уж точно последний) баг с выборкой номера неисправного чипа — на подходе новая версия
ZXM-Soundcard Extreme
И gs точнее наверное newgs
особенно редкими железками.
внимательно прочитал документацию — с точки зрения AY/TS эта карта полностью совместима с ТS от nedopc, так что проверить её (и микросхемы) можно уже сейчас. а вот поддержку FM, SAA и GS я делать всё-таки не буду, по крайней мере в рамках этого теста… на данном этапе мне интересно лишь классическое звучание AY/YM, так что если где-нибудь в Казани сделают плату на 49 микросхем — я с радостью проверю их все, а всяческие частотные модуляции, sid'ы, sound drive'ы и general sound'ы — это как-нибудь без меня:)
Так вот, первый и второй чип как бы перепутаны. Когда все 6 каналов сведены в стерео, попробуй догадайсО, какой чип звучит.
Авот когда выходы второго чипа отключены, и при этом первый молчит, а второй работает(судя по тесту) — тут я и задумываюсь, у меня ли перепутано или все же в сабже. На скорость конечно не влияйет, но все жЫ…
Плюсы:
— вставляется в панельку, отстутствует шлейф, приводящий шину данных з80 в состояние «кровь-кишки-говно-распидорасило»,
— занимает меньше места в пространстве.
Минусы:
— чуть габаритнее по высоте и совсем чучуть по ширине.
— чипы видимо придется запаивать — панельки особого смысла не имеют (как доставать нижний чип?).
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
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)
Можно добавлять 3-ий AY по стандарту.
Для эмуляторов нужны более другие тесты, мне кажется (типа проигрывания диги по MCC-методу, при котором сразу слышно кривую эмуляцию уровней).
Так, объясните, с какой стороны считать :(((((((((((
Автор считает 1chip — #FE, 2 chip -#FF / Так?
а как же тогда схема и надпись ввер ху?
«Принцип работы
Turbo Sound использует два звуковых чипа для вывод звука, но для программирования по портам доступен только один чип. Выбор текущего чипа происходит путем задания адреса внутреннего порта, неиспользуемого звуковым чипом.
#FE – выбор первого чипа; #FF – выбор второго чипа
»
Где правда, брат?!© На схеме косяк?? ну тогда значит некст по схеме собирали:)
ничего не понимаю… ©