Курсовая работа: Программа воспроизведения произвольного звукового файла с использованием звукового адаптера (формат - wav)
22CН для записи: запись данных и команд DSP (начиная с SB)
Этот единственный порт используется для передачи всего множества команд DSP и для пересылки в него данных (аргументов команд). Процедура записи:
1. Выполнять цикл чтения порта 22Ch, пока бит 7 считываемого байта не окажется равным нулю.
2. Выполнить запись в порт 22Ch.
22Ch для чтения: готовность DSP для приема команды (SB)
Если при чтении из этого порта бит 7 сброшен в ноль - DSP готов к приему очередного байта в порт 22Ch на запись. Значение остальных битов не определено.
22Eh для чтения: готовность DSP для посылки данных (начиная с SB)
Если при чтении из этого порта бит 7 установлен в единицу - DSP готов к передаче через порт 22Ah очередного байта.
22Eh для чтения (тот же порт!): подтверждение обработки 8-битного прерывания (SB)
Обработчик прерывания, сгенерированного звуковой платой по окончании 8-битной операции, обязательно должен выполнить одно чтение из этого порта перед завершением (помимо обычной процедуры посылки сигнала EOI в соответствующий контроллер прерываний).
22Fh для чтения: подтверждение обработки 16-битного прерывания (SB16)
Обработчик прерывания, сгенерированного звуковой платой по окончании 16-битной операции, обязательно должен выполнить одно чтение из этого порта перед завершением (помимо обычной процедуры посылки сигнала ЕОI в соответствующий контроллер прерываний).
Теперь рассмотрим команды DSP. Все они пересылаются в звуковую плату через порт 22Ch, как описано выше. После команды могут следовать аргументы которые передаются таким же образом (включая ожидание готовности к приему команды).
Команды DSP
04h: состояние DSP (устаревшая) (SB2 - SBPro2)
Возвращает информацию о текущей операции DSP:
бит 0: динамик включен
бит 1: стерео АЦП включен
бит 2: всегда 0
бит 3: происходит прямое воспроизведение 8-битного РСМ
бит 4: происходит воспроизведение 2-битного ADPCM через DMA
бит 5: происходит воспроизведение 2, 6-битного ADPCM через DMA
бит 6: происходит воспроизведение 4-битного ADPCM через DMA
бит 7: происходит воспроизведение 8-битного РСМ через DMA
10h, NN: прямое воспроизведение 8-бйтного звука (SB)
Выводит очередной байт (NN) из несжатого 8-битного оцифрованного звука на воспроизведение. При использовании этого способа воспроизведения сама программа должна заботиться о том, чтобы новые данные всегда были наготове (то есть не считывать их с диска в ходе работы) и чтобы байты пересылались в DSP с необходимой частотой. (В этом режиме поддерживаются частоты до 23 кГц.) Процедура вывода проста:
1. Вывести в DSP команду 10h и очередной байт из оцифровки.
2. Подождать необходимое время и вернуться к пункту 1.
Чтобы выполнять пересылку байтов с заданной частотой, обычно перепрограммируют системный таймер. Но из-за ограничений по качеству звука и высокой ресурсоемкости такой способ воспроизведения практически не используется.