Курсовая работа: Программа воспроизведения произвольного звукового файла с использованием звукового адаптера (формат - wav)
Аналог команды 1Ch, но данные хранятся в 2-битном формате ADPCM с нулевым байтом. Длина блока рассчитывается так: длина = (число байтов + 3)/4 + 1 длина блока = (длина + 1)/2 - 1
20h: прямое чтение 8-битных данных из АЦП (SB)
Команда предназначена для чтения оцифрованного звука из внешнего источника. Используется следующая процедура:
1. Выполнить команду 20h.
2. Прочитать очередной байт.
3. Подождать необходимое время и вернуться к пункту 1
Проблемы с этой командой точно такие же, как и с 10h.
24h, LO, HI: чтение 8-битного РСМ через DMA (SB)
Аналог команды 14h, но выполняет не воспроизведение, а запись звука. Последовательность действий идентична случаю с 14h, но используемый режим DMA - 44h + номер канала.
2Ch: запись 8-бнтного РСМ через DМА с автоинициализацией (SB2) Аналог команды 1Ch, но выполняет не воспроизведении, а запись звука. Последовательность действий идентична случаю с 1Ch, но используемый режим DMA - 54h + номер канала.
30h: прямое чтение MIDI (SB)
Выполняет чтение очередного MIDI-события:
1. Выполнить команду З0h.
2. Прочитать MIDI-событие (до 64 байт).
31h: чтение MIDI с прерыванием (SB)
Включает генерацию прерывания от звуковой платы при поступлении нового
MIDI-события. Для этого необходимо:
1. Установить обработчик прерывания.
2. Выполнить команду 31h.
3. В обработчике прерывания: прочитать MIDI-событие.
4. В обработчике прерывания: подтвердить прерывание чтением из 22Eh и
записью 20h в контроллер прерываний.
5. Выполнить команду 31h еще раз, чтобы отменить генерацию прерывания.
32h: прямое чтение MIDI-события с дельта временем (SB)
Выполняет чтение очередного MJDI-события и 24-битного дельта времени, то есть времени в микросекундах, наступившего после предшествующего MIDI-события. (Считываются данные в следующем порядке: младший байт времени, средний байт времени, старший байт времени, MIDI-команда.) Именно в виде последовательности MIDI-событий, перед каждым из которых указано дельта-время, и записывается музыка в MIDI-файлах.
32h: чтение MIDI-события с дельта временем с прерыванием (SB). Включает/выключает генерацию прерываний от звуковой платы аналогично команде 31h, но при чтении MIDI-события передаются вместе с дельта временами, как в команде 32h.
34h: режим прямого доступа к UART (SB2).
Отключает DSP, после чего все команды записи/чтения в его порты (используя тот же механизм проверки готовности) рассматриваются как MIDI-события. Вывести DSP из этого режима можно только с помощью полной переинициализации.
37 h: режим прямого доступа к UART с прерыванием (SB2)