Программирование на Ассемблере
Этот
регистр служит для управления звуковыми режимами Paula, а также для работы
с диском (на Amiga такие \"комбинированные\" регистры встречаются довольно
часто). В связи с этим запись в adcon осуществляется так же, как и в
регистр управления DMA. А именно, происходит наложение битовой маски в
режиме, определяемом битом 15, причем нулевые биты маски не влияют на
регистр. Как мы уже говорили, это позволяет задавать значения нужных нам
битов, не опасаясь за другие биты регистра.
Младшие восемь битов регистра adcon определяют режимы модуляции каналов.
Правда существует одно ограничение: любой канал может использоваться для
модуляции только следующего (по номеру) канала. Именно поэтому в
приведенном примере мы использовали канал 0 для модуляции частоты канала 1.
По этой же причине канал 3 не может использоваться для модуляции никакого
другого канала. Следующая таблица показывает назначение битов 0-7 регистра adcon: Бит Функция
----------------------------------------------------
0 Канал 0 модулирует амплитуду канала 1
1 Канал 1 модулирует амплитуду канала 2
2 Канал 2 модулирует амплитуду канала 3
3 Канал 3 выключен
4 Канал 0 модулирует частоту канала 1
5 Канал 1 модулирует частоту канала 2
6 Канал 2 модулирует частоту канала 3
7 Канал 3 выключен
В примере с сиреной мы устанавливаем бит 4, включая тем самым режим
частотной модуляции канала 1 каналом 0.
При использовании режимов модуляции некоторые параметры канала приобретают
иной смысл. Например, параметр громкости канала, задающего модуляцию,
вообще не используется. Также меняется смысл звуковой таблицы модулирующего
канала, элементы которой теперь интерпретируются как 16-битные слова.
Скорость выборки этих элементов по-прежнему определяется параметром частоты
(периода) канала.
При использовании одновременно частотной и амплитудной модуляций элементы
таблицы модулирующего канала задаются парами: сначала указывается громкость,
а затем частота модулируемого канала. 5.5.
|