Программирование на Ассемблере
Для прямоугольного тона мы должны записать число 1 (длина нашей
таблицы - одно слово) в регистр $DFF0A4: move #1,$DFF0A4 ;длина таблицы амплитуд в словах Для остальных каналов адреса \"звуковых\" регистров получаются добавлением
x*$10, где x - номер канала. После этого мы должны определить, с какой скоростью данные должны
извлекаться из памяти и выводиться на динамик. Эта скорость будет задавать
частоту воспроизводимого тона. Однако в Amiga частота задается как бы
наоборот: чем больше значение регистра частоты, тем ниже сама частота
(фактически, задается период, умноженный на некоторый коэффициент).
Выберем, для примера, значение 600: move #600,$DFF0A6 ;скорость DMA И наконец зададим громкость генерируемого тона (значение громкости должно
лежать в диапазоне 0-65). Выберем, например, громкость 40: move #40,$DFF0A8 ;уровень громкости Мы предоставили чипу Paula всю информацию, однако никакого звука пока не
слышно. Последнее, что нам нужно сделать, это запустить собственно DMA.
Управлять каналами DMA можно с помощью специального регистра, адрес
которого равен $DFF096. Нам понадобятся только шесть бит этого регистра: Бит 15 ($8000) Если этот бит равен 1, то биты регистра,
соответствующие установленным битам записываемых
значений, будут устанавливаться, иначе эти биты будут
очищаться. Те биты регистра, которым соответствуют
нулевые биты записываемого слова, изменяться не будут.
Такой механизм обеспечивает дополнительную
безопасность при работе с регистром, так как он также
содержит информацию о дисковых операциях, которая не
должна изменяться пользователем.
Бит 9 ($200) Этот бит определяет, может ли Paula использовать DMA.
Для воспроизведения тона этот бит должен быть
установлен.
|