Страница 11 из 19
2.2.1 Программирование генератора звука 76496 (только PCjr). PCjr снабжен 4-канальным генератором звука, в котором три канала генерируют тона, а четвертый служит для генерации шума для звуковых эффектов. Все четыре канала программируются независимо, причем каждый из них имеет свой регулятор громкости, а затем выход со всех них объединяется в единый звуковой сигнал. Исполь- зуется микросхема комплексного генератора звука TI SN76496N. Она имеет 8 регистров - 2 для каждого канала - и все они адресуются через один порт с адресом 0C0H. Этот порт служит только для запи- си; если подать инструкцию IN, то вся система будет заморожена. PCjr имеет также разъем для внешнего источника звука. При старте системы звуковой канал получает выходной сигнал от микрос- хемы таймера 8253. Но этот канал может быть переключен на микрос- хему генератора звука или любой из двух внешних звуковых входов. Это достигается изменением битов 5 и 6 порта B микросхемы интер- фейса с периферией 8255 (адрес порта 61H - см. [1.1.1]). Значение битов следующее:
Биты 6 и 5 Выбранная функция
00 микросхема таймера 8253 01 вход с кассетного магнитофона 10 вход канала ввода/вывода 11 генератор звука 76496
Для выбора источника звука в BIOS PCjr добавлена функция 80H прерывания 1AH. Поместите в AL номер кода от 0 до 3, в соответст- вии с вышеприведенной таблицей, и вызовите функцию. Возвращаемых регистров нет. Генератор звука 76496 должен использовать этот звуковой канал, поскольку он не может управлять внутренним дина- миком PCjr. В общем случае, когда байт данных посылается генератору звука, то биты 4-6 содержат код идентификации, сообщающий какому из восьми регистров предназначены данные. Эти коды такие:
Биты 6-4 Адресуемый регистр
000 Частота первого тона 001 Громкость первого тона 010 Частота второго тона 011 Громкость второго тона 100 Частота третьего тона 101 Громкость третьего тона 110 Частота четвертого тона 111 Громкость четвертого тона
В случае регистров частоты тонов требуются два байта. Значение битов при этом следующее:
байт 1: биты 0-3 младшие 4 бита частоты 4-6 код идентификации регистра 7 всегда равен 1 байт 2: биты 0-5 старшие 6 битов частоты 6 не используется 7 всегда равен 0
Для установки частоты тона в регистр посылается 10-битное значе- ние, которое после деления на 111 843 дает желаемую частоту в герцах. Таким образом, доступны частоты, начиная с 110 герц вверх (111 843/2^10). Как только регистр инициализирован (и соответст- венно установлен порт B микросхемы 8255), немедленно начинается звуковой сигнал и продолжается до тех пор, пока он не будет прек- ращен. Не обязательно для изменения частоты посылать новые два байта. Если послан только второй байт (старшие 6 битов частоты), то он автоматически заменяет соответствующие данные в канале, к которому была последняя адресация. Эта возможность позволяет плавно варьировать частоту. Генератору шума для программирования нужен только один байт. Значение битов для него следующее:
биты 0-1 плотность шума 2 качество шума 3 не используется 4-6 код идентификации регистра 7 всегда установлен в 1
Качество шума устанавливается на белый шум (постоянное шипение), когда бит 2 равен 1 и на периодический шум (волны звука), когда бит 2 равен 0. Плотность звука увеличивается при увеличении битов 0-1 от 00B до 10B; когда они установлены в 11B, то звук меняется в зависимости от выходного тона канала 3. Громкость каждого из четырех каналов изменяется ослаблением основного сигнала. Для этой установки требуется только один байт. Значение его битов следующее:
биты 0-3 ослабление сигнала 4-6 код идентификации регистра 7 всегда установлен в 1
Когда все 4 бита данных равны 0, то громкость максимальна. Когда все они равны 1, то звук полностью подавляется. Для получения звука промежуточной громкости может быть использована любая ком- бинация битов. Бит 0 ослабляет звук на 2 Дб (децибелла), бит 1 - на 4 Дб, бит 2 - на 8 Дб и бит 3 - на 16 Дб. Максимальное ослаб- ление равно 28 Дб.
|