PROTRACKER372 JP AYFIX H
From MSX MUSIC WIKI
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