Загрузка данных


// ==========================================
// ПРОВЕРКА ВХОДНОГО СИГНАЛА АКТИВАЦИИ (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