Difference between revisions of "PROTRACKER372 AYFIX H"
From MSX MUSIC WIKI
(Created page with "AYFIX C��m��� г;Эта программа демонстрирует, сколько ;разных звуков можно получить на одной ;и т...") (Tags: Mobile edit, Mobile web edit) |
(Tags: Mobile edit, Mobile web edit) |
||
Line 1: | Line 1: | ||
− | AYFIX C��m��� г;Эта программа демонстрирует, сколько | + | AYFIX C��m��� г |
− | ;разных звуков можно получить на одной | + | |
− | ;и той же комбинации tone+env, варьируя | + | ;Эта программа демонстрирует, сколько |
− | ;фазу тональника | + | ;разных звуков можно получить на одной |
− | ;крутите фазу кнопками O,P! | + | ;и той же комбинации tone+env, варьируя |
+ | ;фазу тональника | ||
+ | ;крутите фазу кнопками O,P! | ||
ORG #6000 | ORG #6000 | ||
− | ;обнуляем все регистры AY | + | ;обнуляем все регистры AY |
LD DE,#E00 | LD DE,#E00 | ||
DEC D | DEC D | ||
CALL OUTAY | CALL OUTAY | ||
JR NZ,$-4 | JR NZ,$-4 | ||
− | LLL | + | LLL |
HALT | HALT | ||
LD DE,#7FF | LD DE,#7FF | ||
Line 16: | Line 18: | ||
LD DE,#800 | LD DE,#800 | ||
CALL OUTAY ;запрещаем огибающую | CALL OUTAY ;запрещаем огибающую | ||
− | ;тишина | + | ;тишина |
CALL 8020 ;BREAK | CALL 8020 ;BREAK | ||
RET NC | RET NC | ||
− | ;регулируем фазу (см.ниже) | + | ;регулируем фазу (см.ниже) |
LD HL,WAIT | LD HL,WAIT | ||
LD A,#DF | LD A,#DF | ||
Line 29: | Line 31: | ||
JR C,$+3 | JR C,$+3 | ||
DEC (HL) | DEC (HL) | ||
− | ;показываем фазу на экране | + | ;показываем фазу на экране |
LD B,(HL) | LD B,(HL) | ||
LD HL,#5800 | LD HL,#5800 | ||
Line 39: | Line 41: | ||
INC L | INC L | ||
JR NZ,$-3 | JR NZ,$-3 | ||
− | + | ||
− | ;обнуляем частоту тональника | + | ;обнуляем частоту тональника |
LD DE,#000 | LD DE,#000 | ||
CALL OUTAY | CALL OUTAY | ||
LD DE,#100 | LD DE,#100 | ||
CALL OUTAY | CALL OUTAY | ||
− | ;теперь счетчик тональника в фиксированном положении | + | ;теперь счетчик тональника в фиксированном положении |
− | ;флаг тональника в одном из 2 положений: "вкл" или "выкл" | + | ;флаг тональника в одном из 2 положений: "вкл" или "выкл" |
LD HL,#3C*8 ;период тональника | LD HL,#3C*8 ;период тональника | ||
LD D,#0 | LD D,#0 | ||
Line 54: | Line 56: | ||
LD E,H | LD E,H | ||
CALL OUTAY ;устанавливаем (ст.) | CALL OUTAY ;устанавливаем (ст.) | ||
− | ;делаем задержку для сдвига фазы тональника | + | ;делаем задержку для сдвига фазы тональника |
− | WAIT=$+1 | + | WAIT=$+1 |
LD B,1 | LD B,1 | ||
− | WAIT0 LD A,8 | + | WAIT0 LD A,8 |
DEC A | DEC A | ||
JR NZ,$-1 | JR NZ,$-1 | ||
DJNZ WAIT0 | DJNZ WAIT0 | ||
− | ;теперь тональник в выбранной нами фазе F | + | ;теперь тональник в выбранной нами фазе F |
− | ;но из-за непредсказуемости флага эта фаза может быть F+180° | + | ;но из-за непредсказуемости флага эта фаза может быть F+180° |
LD DE,#7FE | LD DE,#7FE | ||
CALL OUTAY ;разрешаем тональник | CALL OUTAY ;разрешаем тональник | ||
Line 71: | Line 73: | ||
LD DE,#D0E | LD DE,#D0E | ||
CALL OUTAY ;уст.тип огибающей (E) | CALL OUTAY ;уст.тип огибающей (E) | ||
− | ;теперь огибающая в начальной фазе. | + | ;теперь огибающая в начальной фазе. |
− | ;слушаем... | + | ;слушаем... |
LD B,3 | LD B,3 | ||
HALT | HALT | ||
DJNZ $-1 | DJNZ $-1 | ||
− | + | ||
JR LLL | JR LLL | ||
− | + | ||
− | OUTAY | + | OUTAY |
LD BC,#FFFD | LD BC,#FFFD | ||
OUT (C),D | OUT (C),D | ||
Line 85: | Line 87: | ||
OUT (C),E | OUT (C),E | ||
RET | RET | ||
− | + | ||
− | L8df4=$-2 | + | L8df4=$-2 |
− | module=#C000 | + | module=#C000 |
− | END | + | END |
ELSE | ELSE | ||
− | END | + | END |
− | module | + | module |
INCBIN "si*.m" | INCBIN "si*.m" | ||
ENDIF | ENDIF |
Latest revision as of 02:15, 1 March 2020
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