Освой компьютер
Основная часть, содержащая команды TRAP Первая часть содержит две команды: init:
move.l #trap0,$80 ;установить вектор для TRAP #0
rts Для написания подпрограммы trap0 воспользуемся примером, приведенным в
разделе 5 (воспроизведение короткого звукового сигнала). Изменим команду
RTS на RTE, а также модифицируем эту подпрограмму для воспроизведения звука
произвольной длительности: ;** Beep tone production after a TRAP #0 **
ctlw = $DFF096 ;управление DMA
c0thi = $DFF0A0 ;старший адрес таблицы звука
c0tlo = c0thi+2 ;младший адрес таблицы звука
c0tl = c0thi+4 ;размер таблицы
c0per = c0thi+6 ;частота
c0vol = c0thi+8 ;громкость trap0: ;* воспроизвести звуковой сигнал
move.l #table,c0thi ;начало таблицы
move #4,c0tl ;размер таблицы
move #300,c0per ;частота
move #40,c0vol ;громкость
move #$8201,ctlw ;старт DMA
loop:
subq.l #1,D0 ;счетчик - 1
bne.s loop ;цикл (задержка)
still
move #1,ctlw ;выключаем звук
rte ;возврат из обработчика исключений
table: ;таблица звука
dc.b -40,-70,-40,0,40,70,40,0 Убедитесь, что таблица table находится в chip-памяти, иначе чип Paula не
будет иметь доступа к звуковым данным.
И, наконец, тестовая часть нашей программы будет состоять из трех команд: test:
move.l #$2FFFF,D0 ;длительность звука
trap #0 ;возбуждаем исключение
rts Введите полученную программу в компьютер, оттранслируйте и запустите
подпрограмму инициализации (init). Ничего не произойдет.
Теперь запустите тестовую часть (test), и Вы услышите звуковой сигнал
длительностью около секунды.
AMIGA: ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ.
|