Тестер/определитель настроек Sound Blaster'ов

Поиск, обмен ссылками, вопросы по устаревшему программному обеспечению.
Ответить
Mickle
Newbie
Сообщения: 84
Зарегистрирован: 16.08.2015,00:07
Откуда: г. Рыбинск
Благодарил (а): 13 раз
Поблагодарили: 2 раза

Тестер/определитель настроек Sound Blaster'ов

Сообщение Mickle » 03.04.2018,23:57

Небольшая программа для тестирования основной функциональности и автоматического определения базового порта, IRQ и DMA звуковых карт, совместимых с Sound Blaster. Запускать из под DOS.
Писал давно, но возможно, что и сейчас кому-нибудь пригодится. Исходники под TP7 в архиве.

SBTEST

Изображение

La Forge
Advanced Member
Сообщения: 5855
Зарегистрирован: 16.11.2012,17:29
Откуда: Рязань
Поблагодарили: 13 раз

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

Сообщение La Forge » 04.04.2018,00:02

Здорово :thumbup:

Аватара пользователя
alecv
Advanced Member
Сообщения: 6995
Зарегистрирован: 05.10.2004,11:13
Откуда: Санкт-Петербург
Поблагодарили: 2 раза
Контактная информация:

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

Сообщение alecv » 04.04.2018,00:09

Mickle А строку SET BLASTER проверяет ? (исходники еще не смотрел)

Аватара пользователя
GrifonLeo
Advanced Member
Сообщения: 380
Зарегистрирован: 06.11.2009,11:10
Откуда: Абакан, Республика Хакасия

Сообщение GrifonLeo » 04.04.2018,04:07

Спасибо. Скачал.
Нужная вещь.

Ekb
Advanced Member
Сообщения: 2699
Зарегистрирован: 15.06.2014,11:31
Поблагодарили: 5 раз

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

Сообщение Ekb » 04.04.2018,07:01

Mickle
Отлично. А можно попросить программу - Reset миди звуков?
Чтобы не оставалось долгое послезвучие, например, Дудки или синтезатора. Игрушку железно выкинул из памяти, вышел в Volcov Commander и на фоне остаются звуки. Противные. :)

Или в нее (sbtest.exe) зашить :)

Аватара пользователя
Alex_Vac
Advanced Member
Сообщения: 5204
Зарегистрирован: 25.03.2009,07:04
Откуда: Ростов-на-Дону

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

Сообщение Alex_Vac » 04.04.2018,09:12

Работает, определяет. Спасибо!

Mickle
Newbie
Сообщения: 84
Зарегистрирован: 16.08.2015,00:07
Откуда: г. Рыбинск
Благодарил (а): 13 раз
Поблагодарили: 2 раза

Сообщение Mickle » 04.04.2018,10:53

Не за что!
Поскольку программа писалась 20 лет назад и никакого readme к ней я сделать так и не удосужился, исправлюсь сейчас:

SET переменная для обнаружения не используется. Наличие на шине SB и Adlib/OPL устройств определяется независимо друг от друга.
Базовый порт SB ищется по стандартной процедуре в диапазоне от 210h до 280h с шагом 10h, для Adlib/OPL используется список [228h, 388h, 318h, 288h, 218h], после чего производится проверка на наличие отклика стерео синтезатора - порт 220h.
Если базовый порт SB найден, читается версия DSP и текстовая строка ID string (при наличии).
Номера каналов IRQ и DMA определяются тремя независимыми способами:
1) Самый опасный. Сохраняется состояние регистров масок контроллеров прерываний, затем маскируются все источники. Далее во вложенном цикле перебираются комбинации возможных IRQ [5,7,9,10,11,12,15,2,3] и DMA [1,3,0,2], временно снимается маска с выбранного канала IRQ и устанавливается обработчик-заглушка. Инициализируется блочная DMA пересылка длиной 2 сэмпла DSP командой 014h (DMA DAC, 8-bit) и в течении 10000 I/O циклов шины ожидается прерывание по завершении пересылки. Вне зависимости от того, пришло прерывание или нет, снимается обработчик IRQ, производится сброс регистров и инициализация SB. Если прерывание получено и счётчик DMA обнулён, восстанавливаются регистры масок контроллеров прерываний и возвращается флаг успеха поиска IRQ/DMA.
2) Позволяет получить только номер канала IRQ. Для этого воспроизводится такая же последовательность, как в п.1, только вместо инициализации DMA и запуска пересылки используются команды DSP 0F2h (IRQ Request, 8-bit) и 0F3h (IRQ Request, 16-bit), соответственно из подмножества команд SB1.0 и SB16.
3) Работает только на SB16-совместимых картах. Номера каналов IRQ/HiDMA/LoDMA читаются из регистра микшера по индексу 80h.
После этого этапа снова производится тест/инициализация регистров SB, проверяется наличие микшера и выводятся уставки первых трёх регуляторов.
В завершении работы программа сбрасывает флаг стерео-режима SBPro в регистре микшера 0Eh. Делать это конечно совсем не обязательно, но я постоянно сталкивался с ситуацией, когда изначально монофонический звук в некоторых играх "портился" из-за установленного флага чередования сэмплов между стерео каналами SBPro.

P.S. Не могу сказать точно, но припоминаю, что FM синтезатор затихал после запуска SBTEST, в случае, если игра его не де-инициализировала.

Ekb
Advanced Member
Сообщения: 2699
Зарегистрирован: 15.06.2014,11:31
Поблагодарили: 5 раз

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

Сообщение Ekb » 04.04.2018,11:06

Спасибо!
Копипастил и открыл файл Sbtest.txt и вписал в нее ваш топик. Пусть будет хоть это. :)
И заодно вписал ссылку на этот топик. Пусть страна знает своих героев :)

P.S. Можно перезалить в Rar архиве с sbtest.txt. Только нужно проследить, чтобы русская кодировка соответствовала DOS, а не Win.

Update:
К сожалению, Reset MIDI - не реализован. Звук на фоне VolcovComander остается. Программа в целом работает на ESS1868 :)
Анализ хороший :thumbup:

Ответить