Справочник программиста на персональном компьютере фирмы IBM. Таймеры и звук - Программирование генератора звука 76496 (только PCjr)

ОГЛАВЛЕНИЕ

     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 Дб.