Spectrum Progress
#02
19 января 1997 |
|
Записи программиста - программирование музыкального процессора AY-8912/10.
(C) Денис Паринов, 1997. Музыкальный процессор включает в себя 16 ре- гистров. 14 из них используется для формирова- ния звука. Для того, чтобы поместить в регистр музы- кального сопроцессора какие либо данные, надо: 1) выбрать регистр для записи данных LD BC,#FFFD LD A,номер регистра 0 - 13 OUT (C),A 2) записать данные LD BC,#BFFD LD A,какoе либо число 0 - 255 OUT (C),A Для чтения данных из регистра надо: 1) выбрать регистр для записи данных LD BC,#FFFD LD A,номер регистра 0 - 13 OUT (C),A 2) считать данные IN A,(C) Первые шесть регистров используются для задания высоты звучания каждого канала из диапазона 0 - 4095. Регистры R0,R1 - частота звучания канала A. Регистры R2,R3 - частота звучания канала B. Регистры R4,R5 - частота звучания канала C. Регистр R6 - определяет частоту выводимого шума для трёх каналов из диапазона 0 - 31. Регистр R7 - управляет звуковыми каналами d7d6d5d4d3d2d1d0 x x │ │ │ │ │ └ запрещает звучание канала A. │ │ │ │ └── запрещает звучание канала B. │ │ │ └──── запрещает звучание канала C. │ │ └────── запрещает шум канала A. │ └──────── запрещает шум канала B. └────────── запрещает шум канала C. Следующие три регистра используются для задания громкости звука из диапазона 0 - 15. 4-й бит указывает на то, что громкость будет изменятся способом указанным в R13 и со скоростью указаной в R11/R12. Регистр R8 - определяет громкость канала A. Регистр R9 - определяет громкость канала B. Регистр R10 - определяет громкость канала C. Регистры R11, R12 - определяют скорость изменения громкости звука от 0 до 65535. (на практике изменение рег. R11 малоощутимо, поэтому достаточно задавать только рег. R12) Регистр R13 - упровляет формированием огибающей выходного сигнала: #0,#1,#2,#3,#9 - затухание, затем тихо; #4,#5,#6,#7,#F - нарастание, затем тихо; #B - затухание, затем громко; #D - нарастание, затем зромко; #8 - повторяющееся затухание; #C - повторяющееся нарастание; #E - повторяющееся нарастание и затухание; #A - повторяющееся затухание и нарастание; Ну, а теперь несколько примеров, демонстри- рующих сказаное. Перед обращением к программе в регистр A необходимо записать номер эффекта с 1 по 4. ; Вх: A - номер эффекта с 1 - 4. AY_EFF LD HL,EFFECT1 ;Вычисляем LD BC,#000E ;адрес начала NEFF ADD HL,BC ;эффекта следующего DEC A ;за выбранным. JP NZ,NEFF ; DEC HL ;HL на конец выбра- ;нного эффекта. LD A,#0D ;Начать с рег-ра R13 LD C,#FD ; NREG LD B,#FF ;Выбрать регистр AY OUT (C),A ;для записи данных. LD B,#BF ;Запись в регистр AY OUTD ;байта из (HL) и ;уменьшение HL на 1. DEC A ;Уменьшение номера ;регистра AY, если JP P,NREG ;он Є 0, продолжить. RET ;Иначе выйти. ; Эффект используется в различных boot'ах при ; запуске программ. EFFECT1 DEFW #0080,#0001,#0000 ;частота тона ;для каналов A, B, C DEFB #00 ;частота шума DEFB #38 ;00111000 выкл. шум. DEFB #10,#10,#10;громк. канал. A,B,C DEFW #1500 ;изменение громкости DEFB #01 ;затухание ; Эффект из программы Honey Commander. EFFECT2 DEFW #203C,#2064,#208C DEFB #00 DEFB #38 DEFB #10,#10,#10 DEFW #0810 DEFB #01 ; Эффект 2 из Honey Commander. EFFECT3 DEFW #2050,#2060,#2070 DEFB #01 DEFB #00 DEFB #10,#10,#10 DEFW #0400 DEFB #01 ; Эффект напоминающий вращение лопастей ; вертолёта. EFFECT4 DEFW #0000,#0000,#0000 DEFB #00 DEFB #07 DEFB #10,#10,#10 DEFW #0100 DEFB #0E В заключение, об одном неприятном моменте. Иногда при чтении с диска из динамиков слышен гул - это происходит из за того, что програм- мист не заглушает муз.процессор. Обычно для этого нужно ещё раз проинициализировать проиг- рователь мелодии. На всякий случай мы приводим программу заглу- шающую муз.процессор. RES_AY LD HL,#0D00 LD DE,#FFBF LD C,#FD RES_AY1 LD B,D OUT (C),H LD B,E OUT (C),L DEC H JP P,RES_AY1 RET ══ * ══
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября