// ==========================================
// ПРОВЕРКА ВХОДНОГО СИГНАЛА АКТИВАЦИИ (I 1.1)
// ==========================================
A I 1.1 // Проверяем вход запуска
SPB M001 // Если 1, идем играть
// Если вход 0: сбрасываем мелодию и выключаем выход
L 0
T "DB10".Step
SET
R "DB10".T_Note_Run
CLR
= "DB10".Out_Bit
= Q 1.0 // Отключаем физический выход Q 1.0
BEU // Завершаем выполнение FC
// ==========================================
// ШАГ 1: ПОШАГОВЫЙ АВТОМАТ МЕЛОДИИ
// ==========================================
M001: L "DB10".Step
L 0
==I
SPBN ST01
L W#16#0018 // Ля (~20 Гц)
T #Tmp_Freq
L S5T#500MS
T #Tmp_Duration
JU PLAY
ST01: L "DB10".Step
L 1
==I
SPBN ST02
L W#16#0018 // Ля
T #Tmp_Freq
L S5T#500MS
T #Tmp_Duration
JU PLAY
ST02: L "DB10".Step
L 2
==I
SPBN ST03
L W#16#0018 // Ля
T #Tmp_Freq
L S5T#500MS
T #Tmp_Duration
JU PLAY
ST03: L "DB10".Step
L 3
==I
SPBN ST04
L W#16#0030 // Фа (ниже по тону)
T #Tmp_Freq
L S5T#350MS
T #Tmp_Duration
JU PLAY
ST04: L "DB10".Step
L 4
==I
SPBN ST05
L W#16#0014 // До (выше по тону)
T #Tmp_Freq
L S5T#150MS
T #Tmp_Duration
JU PLAY
ST05: L "DB10".Step
L 5
==I
SPBN ST_E
L W#16#0018 // Ля
T #Tmp_Freq
L S5T#500MS
T #Tmp_Duration
JU PLAY
// --- Конец такта: сброс на круг ---
ST_E: L 0
T "DB10".Step
CLR
= Q 1.0
BEU
// ==========================================
// ШАГ 2: КОНТРОЛЬ ДЛИТЕЛЬНОСТИ НОТЫ
// ==========================================
PLAY: AN "DB10".T_Note_Run
L #Tmp_Duration
SE T 10
SET
S "DB10".T_Note_Run
A T 10
SPB GEN
// Конец ноты: шаг вперед
SET
R "DB10".T_Note_Run
L "DB10".Step
L 1
+I
T "DB10".Step
CLR
= Q 1.0 // Гасим пускатель между нотами
BEU
// ==========================================
// ШАГ 3: ГЕНЕРАЦИЯ ЧАСТОТЫ ЩЕЛЧКОВ
// ==========================================
GEN: AN "DB10".T_Freq_Run
L #Tmp_Freq
SD T 11
A T 11
= "DB10".T_Freq_Run
FP "DB10".M_Edge
SPBN OUT
AN "DB10".Out_Bit
= "DB10".Out_Bit
// Назначаем измененный физический выход Q 1.0
OUT: A "DB10".Out_Bit
= Q 1.0