Звуковые платы, совместимые с Sound Blaster, поддерживают стандартный интерфейс для общения с компьютером через порты 220h– 22Fh для воспроизведения оцифрованного звука. Кроме того, большинство звуковых плат поддерживает порты 0388h – 038Fh для совместимости с Adlib — одной из первых звуковых плат, в которой не было возможности вывода оцифрованного звука, а присутствовал только частотный синтез. Возможности частотного синтеза значительно расширились со времени появления Adlib, но речь не о ней, потому что средства MIDI-интерфейса позволяют получать более качественную музыку, a Sound Blaster — звук.
Базовый порт для звуковой платы может не быть равен 220h, в этом случае все следующие адреса надо изменить:
порт 220h для чтения: состояние левого канала FM
порт 220h для записи: индексный регистр левого канала FM
порт 221h: регистр данных левого канала FM
порт 222h для чтения: состояние правого канала FM
порт 222h для записи: индексный регистр правого канала FM
порт 223h: регистр данных правого канала FM
порт 224h для записи: индексный регистр микшера
порт 225h: регистр данных микшера
порт 226h: сброс и инициализация DSP
порт 228h для чтения: состояние FM
порт 228h для записи: индексный регистр FM
порт 229h для записи: регистр данных FM
порт 22Ah для чтения: чтение данных из DSP
порт 22Ch для записи: вывод данных/команд DSP
порт 22Ch для чтения: состояние буфера записи DSP (бит 7)
порт 22Eh для чтения: состояние буфера чтения DSP (бит 7)
Программирование современных звуковых плат — весьма сложное занятие, поэтому в качестве примера рассмотрим одну часто применяемую операцию — воспроизведение оцифрованного звука. С этой целью потребуется программировать только DSP, для которого и команды, и данные (которые фактически являются аргументами команд) посылают в один и тот же порт 22Ch. Кроме того, стандартный DSP вызывает одно аппаратное прерывание (чаще всего IRQ5) и использует один канал DMA (чаще всего канал 1). DMA — конструкция, позволяющая внешним устройствам работать с памятью компьютера без вмешательства центрального процессора, рассмотрена в следующей главе, а здесь остановимся на основных командах DSP и попробуем воспроизвести звук без использования DMA и IRQ.