  (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

                    ══ * ══
