PROTRACKER372 AYFIX H

From MSX MUSIC WIKI
Jump to: navigation, search

AYFIX C��m��� г

;Эта программа демонстрирует, сколько
;разных звуков можно получить на одной
;и той же комбинации tone+env, варьируя
;фазу тональника
;крутите фазу кнопками O,P!
       ORG #6000
;обнуляем все регистры AY
       LD DE,#E00
       DEC D
       CALL OUTAY
       JR NZ,$-4
LLL
       HALT 
       LD DE,#7FF
       CALL OUTAY ;запрещаем тональник
       LD DE,#800
       CALL OUTAY ;запрещаем огибающую
;тишина
       CALL 8020 ;BREAK
       RET NC
 ;регулируем фазу (см.ниже)
       LD HL,WAIT
       LD A,#DF
       IN A,(-2)
       RRA 
       JR C,$+3
       INC (HL)
       RRA 
       JR C,$+3
       DEC (HL)
;показываем фазу на экране
       LD B,(HL)
       LD HL,#5800
       LD (HL),255
       INC L
       DJNZ $-3
       JR Z,$+7
       LD (HL),0
       INC L
       JR NZ,$-3

;обнуляем частоту тональника
       LD DE,#000
       CALL OUTAY
       LD DE,#100
       CALL OUTAY
;теперь счетчик тональника в фиксированном положении
;флаг тональника в одном из 2 положений: "вкл" или "выкл"
       LD HL,#3C*8 ;период тональника
       LD D,#0
       LD E,L
       CALL OUTAY ;устанавливаем (мл.)
       LD D,#1
       LD E,H
       CALL OUTAY ;устанавливаем (ст.)
;делаем задержку для сдвига фазы тональника
WAIT=$+1
      LD B,1
WAIT0  LD A,8
      DEC A
      JR NZ,$-1
      DJNZ WAIT0
;теперь тональник в выбранной нами фазе F
;но из-за непредсказуемости флага эта фаза может быть F+180°
       LD DE,#7FE
       CALL OUTAY ;разрешаем тональник
       LD DE,#810
       CALL OUTAY ;разрешаем огибающую
       LD DE,#B1E
       CALL OUTAY ;устанавливаем период огибающей
       LD DE,#D0E
       CALL OUTAY ;уст.тип огибающей (E)
;теперь огибающая в начальной фазе.
;слушаем...
       LD B,3
       HALT 
       DJNZ $-1

       JR LLL

OUTAY
       LD BC,#FFFD
       OUT (C),D
       LD B,#BF
       OUT (C),E
       RET 

L8df4=$-2
module=#C000
END
      ELSE 
END
module
       INCBIN "si*.m"
      ENDIF 
       ORG tab_frq
      ;INCBIN "tb_ST
       DD F80E10