Assembler - язык неограниченных возможностей


Команды DSP - часть 2



48h, SL, SH

Установить размер блока для DMA-вывода (SL — младший байт, SH — старший. SH:SL — число байт в блоке минус 1). По окончании каждого блока будет вызываться прерывание.

Команда впервые появилась на Sound Blaster 2.0.


D0h

Приостановить 8-битный DMA. Команда впервые появилась на Sound Blaster.


D4h

Продолжить 8-битный DMA после D0h. Команда впервые появилась на Sound Blaster.


DAh

Закончить 8-битный DMA (после окончания пересылки текущего блока). Команда впервые появилась на Sound Blaster 2.0.


B?h, BM, LL, LH

16-битный DMA-режим. Младшие четыре бита команды B?h выбирают тип режима:

бит 3: 1/0 — ввод/вывод

бит 2: 1/0 — обычный/с автоинициализацией

бит 1: 1/0 — FIFO включено/выключено

бит 0: 0

Команда ВМ выбирает вариант режима:

бит 5: 1/0 — стерео/моно

бит 4: 1/0 — данные рассматриваются как числа со знаком/без знака

LL — младший байт, LH — старший байт числа слов в блоке минус один.

Команда впервые появилась на Sound Blaster 16.


C?h, BM, LL, LH

8-битный DMA-режим.

Эти команды в точности совпадают с B?h, только они опиcывают 8-битную передачу данных и LH:LL — число байт, а не слов в блоке.

Команда впервые появилась на Sound Blaster 16.


D5h

Приостановить 16-битный DMA. Команда впервые появилась на Sound Blaster 16.


D6h

Продолжить 16-битный DMA после D5h. Команда впервые появилась на Sound Blaster 16


D9h

Закончить 16-битный DMA (по окончании пересылки текущего блока). Команда впервые появилась на Sound Blaster 16.


Итак, для вывода звука через звуковую плату может использоваться один из трех режимов. Прямой вывод (команда 10h), когда программа должна сама с нужной частотой посылать отдельные байты из оцифрованного звука в DSP; простой DMA-режим, когда выводится блок данных, после чего вызывается прерывание; и DMA с автоинициализацией, когда данные выводятся непрерывно и после вывода каждого блока вызывается прерывание. Именно в этом порядке увеличивается качество воспроизводимого звука. Так как мы пока не умеем работать с DMA, рассмотрим первый способ.




Начало  Назад  Вперед