Mon code SIOC au complet

Voici la nouvelle version de mon code SIOC au complet. Certaines variables sont prévues mais non utilisé pour le moment car mon cockpit n'est pas terminé.
Présenté tel quel, sa lecture est fastidieuse mais je vous ai préparé quelques modules avec des explications.
Je suis preneur de toutes suggestions et je répondrai volontier à toutes les questions.

// *****************************************************************************
// * Config_SIOC ver 4.2   -     By Manuel Velez    -    www.opencockpits.com
// *****************************************************************************
// * FileName : sioc.txt
// * Date : 06/04/2013
// *
// * Merci à Claude Kieffer à qui j'ai tout piqué http://www.simucockpit.fr/
// * Merci aux deux Pierre et leurs idées originales http://www.simubaron.fr/
// *
// * Programme en chantier. Date de fin des travaux inconnue.
// * Certaines variables sont présentes mais non actives ou non terminées car je n'ai pas encore fabriqué ou fini les modules.
// *
// *
// * ORGANISATION :
// *
// * Var 0000           : Initialisation
// * Var de 0001 à 0199 : Variables FSUIPC ou Internes
// * vAR de 0200 à 0299 : Variables non classées (Key2mouse, temporisation...)
// * Var de 0300 à 0399 : Subrutine
// * Var de 0400 à 0499 : Variables Switch
// * Var de 0500 à 0599 : On se calme, j'en suis pas encore là !-)))
// * Var de 0600 à 0699 : Idem
// * Var de 0700 à 0799 : Variable OUT (Led, relais...)
// * Var de 1000 à 1499 : Servo-moteur


Var 0000, name iNITIALISATION
{
  &ACFT_ON_GND = 1   
  CALL &Init_inters     // Sub 0300
  CALL &FLAPS_SUB     // Sub 0345
  CALL &Init_voyants     // Sub 0399
  CALL &CROCHET_TRAIN     // Var 1011
}

Var 0001, name BATTERY, Link FSUIPC_INOUT, Offset $3102, Length 1     // Commande  de courant
{
  &BATTERY = &BATTERY_SW   
  CALL &train_left_SUB     // Sub 0338
  CALL &Train_righ_SUB     // Sub 0339
  CALL &Train_Nose_SUB     // Sub 0340
  IF &BATTERY = 1     // Si il y a du courant
  {
    IF &L_ENG_START = 0     // Et moteur gauche n'est pas démarré
    {
      IF &R_ENG_START = 0     // Et moteur droit n'est pas démarré
      {
        &INVERTER_LED = 1         // Les Leds suivantes s'allument
        &L_FUEL_PRE_LED = 1   
        &R_FUEL_PRE_LED = 1   
        &L_B_AI_FAI_LED = 1   
        &R_B_AI_FA_LED = 1   
        &L_DC_GEN_LED = 1   
        &R_DC_GEN_LED = 1   
        &RVS_NO_REA_LED = 1   
        &L_AIR_OFF_LED = 1   
        &R_AIR_OFF_LED = 1   
        &PROP_AMPS_SERV = DELAY 1023 ,100     // Initialisation de la gauge au démarrage
        &ZERO_PROP_AMPS = DELAY &ZERO_PROP_AMPS ,150     // Envoi vers Sub 1001 après 1.5 secondes
        &PNEUMATIC_SERV = DELAY 1023 ,75     // Var 1020
        &ZERO_PNEUMATIC = DELAY &ZERO_PNEUMATIC ,145     // Sub 1021
        &CABIN_AIR_SERV = DELAY 678 ,125     // Var 1040
        &ZERO_CABIN_AIR = DELAY &ZERO_CABIN_AIR ,140     // Sub 1041
        &CABIN_AIR = DELAY &CABIN_AIR ,260     // Var 1045
        &GYRO_SUCT_SERV = DELAY 248 ,75
        &ZERO_GYRO = DELAY &ZERO_GYRO ,150     // Sub 1031 Valeur à revoir
        &CROCHET_SERV = 893   
        &CROCHET_SERV = DELAY 0 ,35
      }
    }
  }
  ELSE
  {
    CALL &ZERO_PROP_AMPS     // 1001
    CALL &ZERO_CABIN_AIR     // 1041
    CALL &ZERO_PNEUMATIC     // 1021
    CALL &ZERO_GYRO     // 1031
  }
  CALL &Init_voyants     // Sub 0399
}

Var 0006, name PKG_BRAKE, Link FSUIPC_INOUT, Offset $0BC8, Length 2     // Frein de parking
{
  &PKG_BRAKE = &PKG_BRK_SW * 32767
}

Var 0007, name N_PKG_BRAKE     // Inverse la valeur de Park Brake SW 412
{
  CALL &EXT_POWER     // Sub 319
}

Var 0008, name FLAPS, Link FSUIPC_INOUT, Offset $0BDC, Length 4     // Commande des volets
{
  CALL &GEAR_ALARME     // Sub 0342
}

Var 0010, name GEAR, Link FSUIPC_INOUT, Offset $0BE8, Length 4     // Commande du train
{
  CALL &PROP_SYNC_ON     // Sub 0313
  CALL &RVS_NOT_READY     // Sub 0314
  CALL &GEAR_ALARME     // Sub 0342
  CALL &LDG_TAXI_LIGHT     // Sub 0327
}

Var 0011, name L_GEAR_POS, Link FSUIPC_IN, Offset $0BF4, Length 4     // Position du train gauche
{
  CALL &train_left_SUB     // Sub 0338
}

Var 0012, name R_GEAR_POS, Link FSUIPC_IN, Offset $0BF0, Length 4     // Position du train droit
{
  CALL &Train_righ_SUB     // Sub 0339
}

Var 0013, name N_GEAR_POS, Link FSUIPC_IN, Offset $0BEC, Length 4     // Position du train avant
{
  CALL &Train_Nose_SUB     // Sub 0340
}

Var 0014, name ACFT_ON_GND, Link FSUIPC_IN, Offset $0366, Length 2     // Avion au sol ou en l'air
{
  IF &ACFT_ON_GND = 1
  {
    &N_ACFT_ON_GND = 0   
  }
  ELSE
  {
    &N_ACFT_ON_GND = 1   
  }
  CALL &CROCHET_TRAIN     // Sub 1011
}

Var 0002, name N_ACFT_ON_GND     // Pour inverser la valeur ACFT ON GND
{
  CALL &EXT_POWER     // Sub 319
}

Var 0015, name AVIONIC, Link FSUIPC_INOUT, Offset $3103, Length 1     // Commande Avionic SW 0403
{
  CALL &AVIONIQUE     // Sub 0351
}

Var 0016, name L_ENG_TORQUE, Link FSUIPC_INOUT, Offset $08F4, Length 4     // Couple Moteur Gauche
{
  CALL &L_AUTO_IGN     // Sub 0330
  CALL &L_AUTOFEATHER     // Sub 0321
}

Var 0017, name R_ENG_TORQUE, Link FSUIPC_INOUT, Offset $098C, Length 4     // Couple Moteur Droit
{
  CALL &R_AUTO_IGN     // Sub 0334
  CALL &R_AUTOFEATHER     // Sub 0324
}

Var 0019, name L_ENG_START, Link FSUIPC_INOUT, Offset $0892, Length 2     // Allumage moteur gauche
{
  CALL &L_DC_GEN     // Call 0312 Voyant L DC GEN
}

Var 0020, name R_ENG_START, Link FSUIPC_INOUT, Offset $092A, Length 2     // Allumage moteur droit
{
  CALL &R_DC_GEN     // Sub 0315 Voyant  R DC GEN
}

Var 0021, name IAS_SPEED, Link FSUIPC_IN, Offset $02BC, Length 4     // Valeur vitesse Kts * 128

Var 0022, name L_PROP, Link FSUIPC_INOUT, Offset $088E, Length 2     // Valeur hélice gauche
{
  IF &L_PROP = 16288     // Réglage throttle Saitek pour 100%
  {
    &L_PROP = 16384   
  }
  IF &L_PROP = 95     // Réglage throttle Saitek pour 0%
  {
    &L_PROP = 0   
  }
  CALL &RVS_NOT_READY     // Sub 314
}

Var 0023, name R_PROP, Link FSUIPC_INOUT, Offset $0926, Length 2     // Valeur hélice droite
{
  IF &R_PROP = 16288     // Réglage throttle Saitek pour 100%
  {
    &R_PROP = 16384   
  }
  IF &R_PROP = 95     // Réglage throttle Saitek pour 0%
  {
    &R_PROP = 0   
  }
  CALL &RVS_NOT_READY     // Sub 314
}

Var 0024, name PROP_SYNC, Link FSUIPC_INOUT, Offset $2EC8, Length 1     // Commande PROP SYNC On/Off
{
  &PROP_SYNC = &PROP_SYNC_SW   
  CALL &PROP_SYNC_ON     // Sub 0313
}

Var 0025, name LIGHTS, Link FSUIPC_INOUT, Offset $0D0C, Length 2     // Commande Eclairage

Var 0027, name ENG_ANTI_ICE_L, Link FSUIPC_INOUT, Offset $08B2, Length 2     // Dégivrage moteur gauche
{
  &ENG_ANTI_ICE_L = &ENGIN_ICE_L_SW   
}

Var 0028, name ENG_ANTI_ICE_R, Link FSUIPC_INOUT, Offset $094A, Length 2     // Dégivrage moteur droit
{
  &ENG_ANTI_ICE_R = &ENGIN_ICE_R_SW   
}

Var 0029, name RPM, Link FSUIPC_IN, Offset $0898, Length 2

Var 0030, name L_TURBINE_N1, Link FSUIPC_IN, Offset $2010, Length 8, Numbers 2     // Valeur % turbine moteur G affich d
{
  IF &L_TURBINE_N1 < 1050
  {
    &L_ENG_START = &L_ENG_START_SW   
    CALL &L_DC_GEN     // Call 0312 Voyant L DC GEN
  }
  IF &L_TURBINE_N1 > 1050     // 2 IF sans Else si reset de L TURBINE N1
  {
    CALL &L_DC_GEN     // Eteint L DC GEN  Call 0312
  }
  IF &L_TURBINE_N1 <= 7000
  {
    CALL &AIR_CON_N1_LOW     // Sub 0323
  }
}

Var 0031, name R_TURBINE_N1, Link FSUIPC_IN, Offset $2110, Length 8, Numbers 2     // Valeur % turbine moteur D affich d
{
  IF &R_TURBINE_N1 < 1050
  {
    &R_ENG_START = &R_ENG_START_SW   
    CALL &R_DC_GEN     // Call 0315 Voyant R DC GEN
  }
  IF &R_TURBINE_N1 > 1050     // 2 IF sans Else si reset de R TURBINE N1
  {
    CALL &R_DC_GEN     // Eteint R DC GEN Call 0315
  }
  IF &R_TURBINE_N1 <= 7000
  {
    CALL &AIR_CON_N1_LOW     // Sub 0323
  }
}

Var 0032, name FUELPRESSURE, Link FSUIPC_IN, Offset $08F8, Length 4

Var 0033, name L_FUEL_FLOW, Link FSUIPC_IN, Offset $0918, Length 8, Numbers 2     // Débit de carburant gauche PPH x 100
{
  IF &L_FUEL_FLOW > 60     // Si pression fuel   >   6 PPH
  {
    &L_FUEL_PRE_LED = 0         // Alarme s'éteint
  }
  ELSE     // Si la pression retombe
  {
    IF &BATTERY_SW = 1     // On rallume l'alarme...
    {
      IF &L_ENGINCOMBUST = 0     // ..si le moteur est éteint pour éviter...
      {
        &L_FUEL_PRE_LED = 1         // ...le clignotement de l'alarme.
      }
    }
  }
}

Var 0034, name R_FUEL_FLOW, Link FSUIPC_IN, Offset $09B0, Length 8, Numbers 2     // Débit de carburant droit PPH x 100
{
  IF &R_FUEL_FLOW > 60     // Si pression fuel   >   6 PPH
  {
    &R_FUEL_PRE_LED = 0         // Alarme s'éteint
  }
  ELSE     // Si la pression retombe
  {
    IF &BATTERY_SW = 1     // On rallume l'alarme...
    {
      IF &R_ENGINCOMBUST = 0     // ..si le moteur est éteint pour éviter...
      {
        &R_FUEL_PRE_LED = 1         // ...le clignotement de l'alarme.
      }
    }
  }
}

Var 0035, name CONDITION_RIGH, Link FSUIPC_INOUT, Offset $3AF0, Length 8, Numbers 2     // Calibrage thorttle Saitek
{
  IF &CONDITION_RIGH = 1     // Réglage Thorttle Saitek pour 0%
  {
    &CONDITION_RIGH = 0   
  }
  IF &CONDITION_RIGH = 99     // Réglage Thorttle Saitek pour 100%
  {
    &CONDITION_RIGH = 100   
  }
}

Var 0036, name CONDITION, Link FSUIPC_INOUT, Offset $3A30, Length 8, Numbers 2     // Calibrage thorttle Saitek
{
  IF &CONDITION = 1     // Réglage Thorttle Saitek pour 0%
  {
    &CONDITION = 0   
  }
  IF &CONDITION = 99     // Réglage Thorttle Saitek pour 100%
  {
    &CONDITION = 100   
  }
  IF &MOTEUR_EN_ROUT <> 0     // Pour limiter le fonctionnement du ...
  {
    IF &CONDITION <= 44     // .... servo Prop Amps
    {
      CALL &PROP_AMPS     // Sub 1002
    }
    IF &CONDITION > 55
    {
      CALL &PROP_AMPS     // Sub 1002
    }
  }
}

Var 0037, name L_ENGINCOMBUST, Link FSUIPC_IN, Offset $0894, Length 2     // "1" si moteur gauche démarré
{
  IF &L_ENGINCOMBUST = 1     // Si le moteur Gauche démarre
  {
    &BATT_CHARGE = &BATT_CHARGE + 1     // Ajoute 1 au compteur BATT CHARGE - 0318
    &MOTEUR_EN_ROUT = &MOTEUR_EN_ROUT + 1
  }
  ELSE     // Si le moteur Gauche s'arrête
  {
    IF &R_ENGINCOMBUST = 0     // Et que le moteur Droit est déjà arrêté
    {
      &BATT_CHARGE = 0         // Remet compteur BATT CHARGE à zéro - 0318
    }
    &MOTEUR_EN_ROUT = &MOTEUR_EN_ROUT - 1
  }
  CALL &AVIONIQUE     // Sub 0351 Ecrans instrum. allumé/étient
  CALL &L_ICE_VANE_EXT     // Sub 0325
  CALL &L_BL_AIR_FAIL     // Sub 0309
}

Var 0038, name R_ENGINCOMBUST, Link FSUIPC_IN, Offset $092C, Length 2     // "1" si moteur droit démarré
{
  IF &R_ENGINCOMBUST = 1     // Si le moteur Droit démarre
  {
    &BATT_CHARGE = &BATT_CHARGE + 1     // Ajoute 1 au compteur BATT CHARGE - 0318
    &MOTEUR_EN_ROUT = &MOTEUR_EN_ROUT + 1
  }
  ELSE     // Si le moteur droit s'arrête
  {
    IF &L_ENGINCOMBUST = 0     // Et que le Gauche est déjà arrêté
    {
      &BATT_CHARGE = 0         // Remet compteur BATT CHARGE à zéro - 0318
    }
    &MOTEUR_EN_ROUT = &MOTEUR_EN_ROUT - 1
  }
  CALL &AVIONIQUE     // Sub 0351 Ecrans instrum. allumé/étient
  CALL &R_ICE_VANE_EXT     // Sub 0329
  CALL &R_BL_AIR_FAIL     // Sub 0311
}

Var 0039, name MOTEUR_EN_ROUT, Value 0     // Un des 2 moteur en route
{
  &MOTEUR_EN_ROUT = &L_ENGINCOMBUST + &R_ENGINCOMBUST
  CALL &PITOT_OFF     // Sub 346
  CALL &PROP_AMPS     // Sub 1002
}

Var 0040, name Sound, Link SOUND     // Joue les fichiers sons

Var 0043, Link FSUIPC_IN, Offset $2020, Length 8, Numbers 2

Var 0044, Link FSUIPC_IN, Offset $2028, Length 8, Numbers 2

Var 0045, Link FSUIPC_IN, Offset $2030, Length 8, Numbers 2

Var 0046, Link FSUIPC_IN, Offset $2038, Length 8, Numbers 2

Var 0047, Link FSUIPC_IN, Offset $204C, Length 8, Numbers 2

Var 0048, Link FSUIPC_IN, Offset $2060, Length 8, Numbers 2

Var 0050, Link FSUIPC_IN, Offset $2400, Length 8, Numbers 2

Var 0051, name MANIFOLDS, Link FSUIPC_IN, Offset $08C0, Length 2

Var 0052, name PRESSUR, Link FSUIPC_IN, Offset $08BC, Length 2

Var 0053, Link FSUIPC_IN, Offset $2000, Length 8, Numbers 2

Var 0054, name ROTOR_RPM, Link FSUIPC_IN, Offset $0908, Length 4

Var 0055, Link FSUIPC_IN, Offset $2008, Length 8, Numbers 2

Var 0056, Link FSUIPC_IN, Offset $2108, Length 8, Numbers 2

Var 0058, Link FSUIPC_IN, Offset $2018, Length 8, Numbers 2

Var 0059, Link FSUIPC_IN, Offset $206C, Length 8, Numbers 2     // Bleed Air Pressure moteur gauche

Var 0060, Link FSUIPC_IN, Offset $216C, Length 8, Numbers 2     // Bleed Air Pressure moteur droit

Var 0061, name Door, Link FSUIPC_IN, Offset $3367, Length 1     // Porte ouverte ou fermée
{
  CALL &DOOR_UNLOCKED     // Sub 303
}

Var 0200, name KEYS, Link KEYS     // kEYBOARD EMULATION

Var 0201, name WSHLD_TIMER, Value 9999     // Tempo pour alarme chauffage pare-brise
{
  IF &BATTERY_SW = 1
  {
    L0 = MOD &WSHLD_TIMER ,2
    IF L0 = 0
    {
      &WSHL_DEICE_LED = 0   
    }
    ELSE
    {
      &WSHL_DEICE_LED = 1   
    }
  }
  ELSE
  {
    &WSHL_DEICE_LED = 0   
  }
}

Var 0300, name Init_inters, Link SUBRUTINE     // Initialisation des Inters
{
  &GEAR = &GEAR_BAS_SW * 16383
  &BATTERY = &BATTERY_SW   
  &AVIONIC = &AVIONIC_SW   
  &PKG_BRAKE = &PKG_BRK_SW * 32767
  &PROP_SYNC = &PROP_SYNC_SW   
  &ENG_ANTI_ICE_L = &ENGIN_ICE_L_SW   
  &ENG_ANTI_ICE_R = &ENGIN_ICE_R_SW   
}

Var 0301, name L_ENG_FIRE, Link SUBRUTINE     // Alarme L ENG FIRE

Var 0302, name INVERTER, Link SUBRUTINE     // Alarme INVERTER 0404
{
  IF &BATTERY_SW = 1
  {
    IF &INVERTER_SW = 1
    {
      &INVERTER_LED = 0   
    }
    ELSE
    {
      &INVERTER_LED = 1   
    }
  }
  ELSE
  {
    &INVERTER_LED = 0   
  }
}

Var 0303, name DOOR_UNLOCKED, Link SUBRUTINE     // Alarme DOOR UNLOCKED
{
  IF &BATTERY_SW = 1
  {
    L0 = TESTBIT &Door ,0
    IF L0 = 1
    {
      &DOOR_UNLOC_LED = 1   
    }
    ELSE
    {
      &DOOR_UNLOC_LED = 0   
    }
  }
}

Var 0304, name ALT_WARN, Link SUBRUTINE     // Alarme ALT WARN

Var 0305, name R_ENG_FIRE, Link SUBRUTINE     // Alarme R ENG FIRE

Var 0306, name L_FUEL_PRESS, Link SUBRUTINE     // Alarme L FUEL PRESS
{
  IF &BATTERY = 0
  {
    &L_FUEL_PRE_LED = 0   
  }
  ELSE
  {
    IF &L_FUEL_FLOW < 57     // Si débit de carburant insuffisant
    {
      IF &L_AUTO_IGN_SW = 0     // Evite allumage lors d'une auto-ingnition
      {
        &L_FUEL_PRE_LED = 1         // Alarme allumée
      }
    }
    ELSE
    {
      &L_FUEL_PRE_LED = 0   
    }
  }
}

Var 0307, name R_FUEL_PRESS, Link SUBRUTINE     // Alarme R FUEL PRESS
{
  IF &BATTERY = 0
  {
    &R_FUEL_PRE_LED = 0   
  }
  ELSE
  {
    IF &R_FUEL_FLOW < 57     // Si débit de carburant insuffisant
    {
      IF &R_AUTO_IGN_SW = 0     // Evite allumage lors d'une auto-ingnition
      {
        &R_FUEL_PRE_LED = 1         // Alarme allumée
      }
    }
    ELSE
    {
      &R_FUEL_PRE_LED = 0   
    }
  }
}

Var 0308, name AP_TRIM_FAIL, Link SUBRUTINE     // Alarme A/P TRIM FAIL

Var 0309, name L_BL_AIR_FAIL, Link SUBRUTINE     // Alarme BL AIR FAIL gauche
{
  IF &BATTERY = 1
  {
    IF &L_ENGINCOMBUST = 1     // Si Moteur gauche démarré
    {
      &L_B_AI_FAI_LED = &BLEED_L_OFF_SW         // Led allumée si inter en position Off
    }
    ELSE     // Si Moteur gauche éteint
    {
      &L_B_AI_FAI_LED = 1         // Led Allumée
    }
  }
  ELSE
  {
    &L_B_AI_FAI_LED = 0   
  }
}

Var 0310, name AP_FAIL, Link SUBRUTINE     // Alarme A/P FAIL

Var 0311, name R_BL_AIR_FAIL, Link SUBRUTINE     // Alarme BL AIR FAIL droite
{
  IF &BATTERY = 1
  {
    IF &R_ENGINCOMBUST = 1     // Si Moteur droit démarré
    {
      &R_B_AI_FA_LED = &BLEED_R_OFF_SW         // Led allumée si inter en position Off
    }
    ELSE     // Si Moteur droit éteint
    {
      &R_B_AI_FA_LED = 1         // Led Allumée
    }
  }
  ELSE
  {
    &R_B_AI_FA_LED = 0   
  }
}

Var 0312, name L_DC_GEN, Link SUBRUTINE     // Alarme L DC GEN
{
  IF &BATTERY = 0
  {
    &L_DC_GEN_LED = 0         // Alarme L DC GEN éteinte
  }
  ELSE
  {
    IF &L_GEN_SW = 0
    {
      &L_DC_GEN_LED = 1   
    }
    ELSE
    {
      IF &L_TURBINE_N1 > 1050
      {
        &L_DC_GEN_LED = 0   
        &L_ENG_START = 2   
      }
      ELSE
      {
        &L_DC_GEN_LED = 1   
      }
    }
  }
}

Var 0313, name PROP_SYNC_ON, Link SUBRUTINE     // Alarme PROP SYNC ON
{
  IF &PROP_SYNC = 1     // Prop Sync enclenché
  {
    IF &GEAR = 16383     // Et train sorti
    {
      &PRO_SYN_ON_LED = 1         // Alarme allumée
    }
    IF &GEAR = 0     // Train rentré
    {
      &PRO_SYN_ON_LED = 0         // Alarme éteinte
    }
  }
  ELSE     // Inter Prop Sync OFF
  {
    &PRO_SYN_ON_LED = 0   
  }
}

Var 0314, name RVS_NOT_READY, Link SUBRUTINE     // Alarme RVS NOT READY
{
  IF &GEAR = 16383     // Train sorti
  {
    L0 = &L_PROP + &R_PROP
    L1 = &CONDITION + &CONDITION_RIGH
    L2 = L0 + L1
    IF L2 = 32968
    {
      &RVS_NO_REA_LED = 0   
    }
    ELSE
    {
      IF &MOTEUR_EN_ROUT <> 0
      {
        &RVS_NO_REA_LED = 1   
      }
    }
  }
  ELSE
  {
    &RVS_NO_REA_LED = 0   
  }
}

Var 0315, name R_DC_GEN, Link SUBRUTINE     // Alarme R DC GEN
{
  IF &BATTERY = 0
  {
    &R_DC_GEN_LED = 0         // Alarme R DC GEN éteinte
  }
  ELSE
  {
    IF &R_GEN_SW = 0
    {
      &R_DC_GEN_LED = 1         // Alarme R DC GEN Allumée
    }
    ELSE
    {
      IF &R_TURBINE_N1 > 1050
      {
        &R_DC_GEN_LED = 0   
        &R_ENG_START = 2   
      }
      ELSE
      {
        &R_DC_GEN_LED = 1   
      }
    }
  }
}

Var 0316, name DUCT_OVERTEMP, Link SUBRUTINE     // Alarme DUCT OVERTEMP

Var 0317, name L_ICE_VANE, Link SUBRUTINE     // Calcul L ICE VANE voir sub 325
{
  &L_ICE_VANE = &L_ICE_VANE + &ENGIN_ICE_L_SW
}

Var 0318, name BATT_CHARGE, Link SUBRUTINE     // Alarme BATT CHARGE
{
  IF &BATTERY = 1
  {
    IF &BATT_CHARGE = 1     // Si Batt Charge n'a pas encore été allumé
    {
      &BATT_CHARG_LED = DELAY 1 ,300     // Alarme Batt Charge s'allume après 3"
      &BATT_CHARG_LED = DELAY 0 ,2500     // Et s'éteint après 25"
    }
  }
}

Var 0319, name EXT_POWER, Link SUBRUTINE     // Alarme EXT POWER
{
  L0 = &AVIONIC_SW + &INVERTER_SW
  L1 = &R_ENG_TORQUE + &R_GEN_SW
  L2 = L0 + L1
  L1 = &N_PKG_BRAKE - &N_ACFT_ON_GND     // Avion au sol et frein serré
  L0 = L1 + L2
  L1 = &L_ENG_TORQUE + &L_GEN_SW
  L2 = L0 + L1
  IF L2 = 0     // Si les 6 inters Off et moteurs arrêtés
  {
    &EXT_PWR_LED = &BATTERY_SW         // Led allumée si inter Batt ON
  }
  ELSE
  {
    &EXT_PWR_LED = 0   
  }
}

Var 0320, name R_ICE_VANE, Link SUBRUTINE     // Calcul R ICE VANE voir sub 0329
{
  &R_ICE_VANE = &R_ICE_VANE + &ENGIN_ICE_R_SW
}

Var 0321, name L_AUTOFEATHER, Link SUBRUTINE     // Alarme Autofeather Gauche
{
  IF &AUTOFEATHER_SW = 1     // Autofeather Armé
  {
    IF &L_ENG_TORQUE > 12000     // > 90% de N1
    {
      &L_FEATHER_LED = 1         // Alarme Autofeather allumé
    }
    ELSE
    {
      IF &L_ENG_TORQUE < 12000
      {
        &L_FEATHER_LED = 0   
      }
      IF &L_ENG_TORQUE < 2950
      {
        &L_PROP = -4096         // Mise en drapeau
      }
    }
  }
  ELSE     // Inter Off
  {
    &L_FEATHER_LED = 0   
  }
}

Var 0322, name ELECT_TRIM_OFF, Link SUBRUTINE     // Alarme ELECT TRIM OFF

Var 0323, name AIR_CON_N1_LOW, Link SUBRUTINE     // Alarme AIR COND N1 LOW
{
  IF &BATTERY = 1
  {
    IF &CABIN_MODE_SW = 1
    {
      &AIR_COND_LED = 1   
    }
    ELSE
    {
      IF &L_TURBINE_N1 < 7000
      {
        &AIR_COND_LED = 1   
      }
      IF &R_TURBINE_N1 < 7000
      {
        &AIR_COND_LED = 1   
      }
      ELSE
      {
        &AIR_COND_LED = 0   
      }
    }
  }
  ELSE
  {
    &AIR_COND_LED = 0   
  }
}

Var 0324, name R_AUTOFEATHER, Link SUBRUTINE     // Alarme Autofeather Droite
{
  IF &AUTOFEATHER_SW = 1     // Autofeather Armé
  {
    IF &R_ENG_TORQUE > 12000     // > 90% de N1
    {
      &R_FEATHER_LED = 1         // Alarme Autofeather allumé
    }
    ELSE
    {
      IF &R_ENG_TORQUE < 12000     // Torque <90%
      {
        &R_FEATHER_LED = 0   
      }
      IF &R_ENG_TORQUE < 2950
      {
        &R_PROP = -4096   
      }
    }
  }
  ELSE     // Inter Off
  {
    &R_FEATHER_LED = 0   
  }
}

Var 0325, name L_ICE_VANE_EXT, Link SUBRUTINE     // Alarme verte & jaune ICE Vane moteur gau
{
  IF &L_ICE_VANE = 0     // L'Inter vient d'être basculé sur OFF...
  {
    &L_ICE_EXT_LED = DELAY 0 ,1400     // ...Led s'éteint après 14"
  }
  IF &L_ICE_VANE = 2     // L'Inter vient d'être basculé sur ON...
  {
    IF &L_ENGINCOMBUST = 1     // Si moteur démarré
    {
      L0 = RANDOM 400 ,2000     // Temps aléatoire entre 4 & 20"
      L1 = L0 + 500     // On ajoute 5" à L0
      &L_ICE_EXT_LED = DELAY 1 ,L0     // Led Verte s'allume après L0
      IF L0 > 1600     // Si L0 est plus grand que 16"
      {
        &L_ICE_VANE_LED = DELAY 1 ,1500     // Led défaut ICE VANE s'allume après 15"
        &L_ICE_VANE_LED = DELAY 0 ,L1     // et s'éteint 5" après allumage de la vert
      }
      &L_ICE_VANE = 0         // Remise à zéro du compteur
    }
  }
  ELSE     // Pour n'allumer l'alarme défaut...
  {
    IF &L_ICE_VANE = 1     // ...qu'au basculement de l'inter...
    {
      &L_ICE_EXT_LED = 1         // ... de la position Off à On.
    }
  }
}

Var 0326, name BRAKE_DEICE_ON, Link SUBRUTINE     // Alarme BRAKE DEICE ON

Var 0327, name LDG_TAXI_LIGHT, Link SUBRUTINE     // Alarme LDG/TAXI LIGHT
{
  &LDG_TAXI_LIGHT = &LAND_LIGHT_SW + &TAXI_LIGHT_SW
  IF &GEAR = 0     // Si le train est rentré
  {
    IF &LDG_TAXI_LIGHT <> 0
    {
      &LDGTAX_LIG_LED = 1   
    }
    ELSE
    {
      &LDGTAX_LIG_LED = 0   
    }
  }
  ELSE
  {
    &LDGTAX_LIG_LED = 0   
  }
}

Var 0328, name PASS_OXY_ON, Link SUBRUTINE     // Alarme PASS OXY ON

Var 0329, name R_ICE_VANE_EXT, Link SUBRUTINE     // Alarme verte & jaune ICE Vane moteur dro
{
  IF &R_ICE_VANE = 0     // L'Inter vient d'être basculé sur OFF...
  {
    &R_ICE_EXT_LED = DELAY 0 ,1400     // ...Led s'éteint après 14"
  }
  IF &R_ICE_VANE = 2     // L'Inter vient d'être basculé sur ON...
  {
    IF &R_ENGINCOMBUST = 1     // Si moteur démarré
    {
      L0 = RANDOM 400 ,2000     // Temps aléatoire entre 4 & 20"
      L1 = L0 + 500     // On ajoute 5" à L0
      &R_ICE_EXT_LED = DELAY 1 ,L0     // Led Verte s'allume après L0
      IF L0 > 1600     // Si L0 est plus grand que 16"
      {
        &R_ICE_VANE_LED = DELAY 1 ,1500     // Led défaut ICE VANE s'allume après 15"
        &R_ICE_VANE_LED = DELAY 0 ,L1     // et s'éteint 5" après allumage de la vert
      }
      &R_ICE_VANE = 0         // Remise à zéro du compteur
    }
  }
  ELSE     // Pour n'allumer l'alarme défaut...
  {
    IF &R_ICE_VANE = 1     // ...qu'au basculement de l'inter...
    {
      &R_ICE_EXT_LED = 1         // ... de la position Off à On.
    }
  }
}

Var 0330, name L_AUTO_IGN, Link SUBRUTINE     // Alarme moteur gauche 0409/0736
{
  IF &L_AUTO_IGN_SW = 1
  {
    IF &L_ENG_TORQUE < 2950     // Torque < 400
    {
      &L_IGNITION_LED = 1   
    }
    ELSE     // Torque > 400
    {
      &L_IGNITION_LED = 0   
    }
  }
  ELSE     // Inter OFF
  {
    IF &L_ENG_START_SW = 0     // évite extinction lors démarrage moteur
    {
      &L_IGNITION_LED = 0   
    }
  }
}

Var 0331, name L_BL_AIR_OFF, Link SUBRUTINE     // Alarme L BL AIR OFF
{
  IF &BATTERY = 1
  {
    IF &BLEED_L_ON_SW = 1
    {
      &L_AIR_OFF_LED = 0   
    }
    ELSE
    {
      &L_AIR_OFF_LED = 1   
    }
  }
  ELSE
  {
    &L_AIR_OFF_LED = 0   
  }
}

Var 0332, name FUEL_CROSSFEED, Link SUBRUTINE     // Alarme FUEL CROSSFEED

Var 0333, name R_BL_AIR_OFF, Link SUBRUTINE     // Alarme R BL AIR OFF
{
  IF &BATTERY = 1
  {
    IF &BLEED_R_ON_SW = 1
    {
      &R_AIR_OFF_LED = 0   
    }
    ELSE
    {
      &R_AIR_OFF_LED = 1   
    }
  }
  ELSE
  {
    &R_AIR_OFF_LED = 0   
  }
}

Var 0334, name R_AUTO_IGN, Link SUBRUTINE     // Alarme moteur Droit 0408/0740
{
  IF &R_AUTO_IGN_SW = 1
  {
    IF &R_ENG_TORQUE < 2950     // Torque < 400
    {
      &R_IGNITION_LED = 1   
    }
    ELSE     // Torque > 400
    {
      &R_IGNITION_LED = 0   
    }
  }
  ELSE     // Inter OFF
  {
    IF &R_ENG_START_SW = 0     // évite extinction lors démarrage moteur
    {
      &R_IGNITION_LED = 0   
    }
  }
}

Var 0335, name L_INGNITION, Link SUBRUTINE     // Alarme verte démarrage moteur gauche
{
  IF &L_ENG_START_SW = 1     // Si l'inter en position ON
  {
    &L_ENG_START = 1         // Démarrage Moteur et GEN 2 Off
    &L_IGNITION_LED = 1         // Led s'allume
    &L_FUEL_PRE_LED = DELAY 0 ,500     // Led s'éteint après 5"
  }
  ELSE
  {
    IF &L_ENGINCOMBUST = 1     // Si Moteur en route
    {
      &L_ENG_START = &L_GEN_SW * 2
    }
    ELSE
    {
      &L_ENG_START = 0   
    }
    IF &L_AUTO_IGN_SW = 0     // Si Auto Ingnition non Armé
    {
      &L_IGNITION_LED = DELAY 0 ,400     // Led s'éteint après 4"
    }
    CALL &L_FUEL_PRESS     // Sub 0306
  }
  &EXT_PWR_LED = 0         // Eteindre EXT PWR
}

Var 0336, name R_INGNITION, Link SUBRUTINE     // Alarme verte démarrage moteur droit
{
  IF &R_ENG_START_SW = 1     // Si l'inter en position ON
  {
    &R_ENG_START = 1         // Démarrage Moteur et GEN 1 Off
    &R_IGNITION_LED = 1         // Led s'allume
    &R_FUEL_PRE_LED = DELAY 0 ,600     // Led s'éteint après 6"
  }
  ELSE
  {
    IF &R_ENGINCOMBUST = 1     // Si Moteur en route
    {
      &R_ENG_START = &R_GEN_SW * 2
    }
    ELSE
    {
      &R_ENG_START = 0   
    }
    IF &R_AUTO_IGN_SW = 0     // Si Auto Ingnition non Armé
    {
      &R_IGNITION_LED = DELAY 0 ,300     // Led s'éteint après 3"
    }
    CALL &R_FUEL_PRESS     // Sub 0307
  }
  &EXT_PWR_LED = 0         // Eteindre EXT PWR
}

Var 0337, name Park_Break_Sub, Link SUBRUTINE     // Alarme Jaune Frein de parking
{
  IF &BATTERY = 0     // Inter batterie sur OFF
  {
    &PKG_BRAKE_LED = 0         // Alarme éteinte
  }
  ELSE
  {
    &PKG_BRAKE_LED = &PKG_BRK_SW         // Led allumée si le frein est serré
  }
}

Var 0338, name train_left_SUB, Link SUBRUTINE     // Voyant du train gauche
{
  IF &BATTERY = 0     // Inter batterie sur OFF
  {
    &L_GEAR_LED = 0         // Voyants éteints
    &L_GEAR_TRA_LED = 0   
  }
  ELSE
  {
    IF &L_GEAR_POS = 16383     // Si le train est sorti
    {
      &L_GEAR_TRA_LED = 0         // Led rouge éteinte
      &L_GEAR_LED = DELAY 1 ,120     // Led verte allumée délais 1,2"
    }
    ELSE
    {
      IF &L_GEAR_POS >= 1     // Si le train est en transit
      {
        &L_GEAR_TRA_LED = 1         // Led rouge allumée
        &L_GEAR_LED = 0         // Led verte éteinte
      }
      ELSE
      {
        IF &L_GEAR_POS = 0     // Si le train est rentré
        {
          &L_GEAR_TRA_LED = DELAY 0 ,90     // Led rouge éteinte délais 0,9"
          &L_GEAR_LED = 0         // Led verte éteinte
        }
      }
    }
  }
}

Var 0339, name Train_righ_SUB, Link SUBRUTINE     // Voyant du train droit
{
  IF &BATTERY = 0     // Inter batterie sur OFF
  {
    &R_GEAR_LED = 0         // Voyants éteints
    &R_GEAR_TRA_LED = 0   
  }
  ELSE
  {
    IF &R_GEAR_POS = 16383     // Si le train est sorti
    {
      &R_GEAR_TRA_LED = 0         // Led rouge éteinte
      &R_GEAR_LED = DELAY 1 ,40     // Led verte allumée délais 0,4"
    }
    ELSE
    {
      IF &R_GEAR_POS >= 1     // Si le train est en transit
      {
        &R_GEAR_TRA_LED = 1         // Led rouge allumée
        &R_GEAR_LED = 0         // Led verte éteinte
      }
      ELSE
      {
        IF &R_GEAR_POS = 0     // Si le train est rentré
        {
          &R_GEAR_TRA_LED = DELAY 0 ,30     // Led rouge éteinte délais 0,3"
          &R_GEAR_LED = 0         // Led verte éteinte
        }
      }
    }
  }
}

Var 0340, name Train_Nose_SUB, Link SUBRUTINE     // Voyant du train avant
{
  IF &BATTERY = 0     // Inter batterie sur OFF
  {
    &N_GEAR_LED = 0         // Voyants éteints
    &N_GEAR_TRA_LED = 0   
  }
  ELSE
  {
    IF &N_GEAR_POS = 16383     // Si le train est sorti
    {
      &N_GEAR_TRA_LED = 0         // Led rouge éteinte
      &N_GEAR_LED = 1   
    }
    ELSE
    {
      IF &N_GEAR_POS >= 1     // Si le train est en transit
      {
        &N_GEAR_TRA_LED = 1         // Led rouge allumée
        &N_GEAR_LED = 0         // Led verte éteinte
      }
      ELSE
      {
        IF &N_GEAR_POS = 0     // Si le train est rentré
        {
          &N_GEAR_TRA_LED = 0   
          &N_GEAR_LED = 0         // Led verte éteinte
        }
      }
    }
  }
}

Var 0342, name GEAR_ALARME, Link SUBRUTINE     // Alarme poignée config attérissage
{
  IF &ACFT_ON_GND = 1     // Si l'avion est au sol
  {
    IF &GEAR_BAS_SW = 0     // Et que la manette est levée
    {
      &GEAR_ALARM_LED = 1         // Alarme poignée allumée
    }
    ELSE
    {
      &GEAR_ALARM_LED = 0   
    }
  }
  ELSE     // Si l'avion est en vol
  {
    IF &GEAR = &FLAPS     // Train+volet totalement sortis ou rentrés
    {
      &GEAR_ALARM_LED = 0         // Alarme poignée éteinte
    }
    IF &FLAPS = 8191     // Si les volets position approche
    {
      &GEAR_ALARM_LED = 0         // Alarme éteinte
    }
    IF &FLAPS = 16383     // Si volets entièrements sortis
    {
      IF &GEAR = 0     // Et train rentré
      {
        &GEAR_ALARM_LED = 1         // Alarme allumée
      }
    }
    IF &GEAR = 16383     // Si le train est sorti
    {
      IF &FLAPS = 0     // Et les volets rentrés
      {
        &GEAR_ALARM_LED = 1         // Alarme allumée
      }
    }
  }
}

Var 0345, name FLAPS_SUB, Link SUBRUTINE     // Position des volets
{
  IF &FLAPS_UP_SW = 1     // Inter en position volets rentrés
  {
    &FLAPS = 0         // Valeur pour volets rentrés
  }
  ELSE
  {
    IF &FLAPS_DN_SW = 1     // Inter en position volets sortis
    {
      &FLAPS = 16383         // Valeur pour volets sortis
    }
    ELSE     // Si les deux inters à 0
    {
      &FLAPS = 8191         // Valeur pour position approche
    }
  }
}

Var 0346, name PITOT_OFF, Link SUBRUTINE     // Alarme jaune PITOT  0426
{
  IF &PITOT_SW = 1
  {
    &PITOT_OFF_LED = 0   
  }
  ELSE
  {
    IF &MOTEUR_EN_ROUT > 0
    {
      &PITOT_OFF_LED = 1   
    }
  }
}

Var 0348, name SURFACE_ICE, Link SUBRUTINE     // Alarme verte Surface Ice 0428
{
  IF &SURF_ICESIN_SW = 1
  {
    &SURFAC_ICE_LED = 1   
    &SURFAC_ICE_LED = DELAY 0 ,1000
  }
}

Var 0349, name MASTER_WARNING, Link SUBRUTINE     // Alarme MASTER WARNING
{
  IF &MASTER_WARNING > 1
  {
    &MASTER_WAR_LED = 1   
  }
}

Var 0350, name MASTER_CAUTION, Link SUBRUTINE     // Alarme MASTER CAUTION

Var 0351, name AVIONIQUE, Link SUBRUTINE     // Mise en route instrument si courant
{
  &AVIONIQUE = &L_ENGINCOMBUST + &R_ENGINCOMBUST
  IF &AVIONIQUE >= 1     // Si un des 2 moteurs en route
  {
    &AVIONIC = &AVIONIC_SW         // Ecrans allumés si inter ON
  }
  ELSE
  {
    &AVIONIC = 0         // Les 2 moteurs arrêtés = écrans éteints
  }
}

Var 0352, name WSHL_DEICE, Link SUBRUTINE     // Alarme verte WSHL DEICE
{
  IF &BATTERY_SW = 1
  {
    IF &WSHLD_ICE_SW = 1     // Voir le tuto de Claude
    {
      &WSHLD_TIMER = 1   
      &WSHLD_TIMER = TIMER 9999 ,1 ,1500
    }
    ELSE
    {
      &WSHLD_TIMER = 9999   
      &WSHL_DEICE_LED = 0   
    }
  }
  ELSE
  {
    &WSHL_DEICE_LED = 0   
  }
}

Var 0399, name Init_voyants, Link SUBRUTINE     // Initialisation des sorties
{
  IF &BATTERY = 0
  {
    &L_GEAR_TRA_LED = 0   
    &R_GEAR_TRA_LED = 0   
    &N_GEAR_TRA_LED = 0   
    &L_GEAR_LED = 0   
    &R_GEAR_LED = 0   
    &N_GEAR_LED = 0   
    &GEAR_ALARM_LED = 0   
    &L_ENG_FIRE_LED = 0   
    &INVERTER_LED = 0   
    &DOOR_UNLOC_LED = 0   
    &ALT_WARN_LED = 0   
    &R_ENG_FIRE_LED = 0   
    &L_FUEL_PRE_LED = 0   
    &R_FUEL_PRE_LED = 0   
    &AP_TRIM_FA_LED = 0   
    &L_B_AI_FAI_LED = 0   
    &AP_FAIL_LED = 0   
    &R_B_AI_FA_LED = 0   
    &L_DC_GEN_LED = 0   
    &PRO_SYN_ON_LED = 0   
    &RVS_NO_REA_LED = 0   
    &R_DC_GEN_LED = 0   
    &DUCT_OVER_LED = 0   
    &L_ICE_VANE_LED = 0   
    &BATT_CHARG_LED = 0   
    &EXT_PWR_LED = 0   
    &R_ICE_VANE_LED = 0   
    &L_FEATHER_LED = 0   
    &ELE_TRI_OF_LED = 0   
    &AIR_COND_LED = 0   
    &R_FEATHER_LED = 0   
    &L_ICE_EXT_LED = 0   
    &BRAKE_DEIC_LED = 0   
    &LDGTAX_LIG_LED = 0   
    &PASS_OXY_LED = 0   
    &R_ICE_EXT_LED = 0   
    &L_IGNITION_LED = 0   
    &L_AIR_OFF_LED = 0   
    &FUEL_CROSS_LED = 0   
    &R_AIR_OFF_LED = 0   
    &R_IGNITION_LED = 0   
    &MASTER_WAR_LED = 0   
    &MASTER_CAU_LED = 0   
    &PKG_BRAKE_LED = 0   
    &WSHL_DEICE_LED = 0   
    &PITOT_OFF_LED = 0   
    &SURFAC_ICE_LED = 0   
  }
  ELSE     // Si inter déjà sur"ON" à l'initialisation
  {
    CALL &INVERTER     // Sub 0302
    CALL &L_FUEL_PRESS     // Sub 0306
    CALL &R_FUEL_PRESS     // Sub 0307
    CALL &L_DC_GEN     // Sub 0312
    CALL &RVS_NOT_READY
    CALL &R_DC_GEN     // Sub 0315
    CALL &Park_Break_Sub     // Sub 0337
    CALL &L_INGNITION     // Sub 0330 réallume L INGNITION LED
    CALL &R_INGNITION     // Sub 0334 réallume R INGNITION LED
    CALL &EXT_POWER     // Sub 0319 réallume EXT PWR LED
    CALL &PROP_SYNC_ON     // Sub 0313
    CALL &L_ICE_VANE_EXT     // Sub 0325 L ICE VANE EXT led
    CALL &R_ICE_VANE_EXT     // Sub 0329 R ICE VANE EXT led
    CALL &L_AUTO_IGN     // Sub 0330
    CALL &R_AUTO_IGN     // Sub 0334
    CALL &L_AUTOFEATHER     // Sub 0321
    CALL &R_AUTOFEATHER     // Sub 0324
    CALL &LDG_TAXI_LIGHT     // Sub 0327
    CALL &PITOT_OFF     // Sub 0346
    CALL &AIR_CON_N1_LOW
    CALL &L_BL_AIR_FAIL     // Sub 0309
    CALL &R_BL_AIR_FAIL     // Sub 0311
    CALL &L_BL_AIR_OFF     // Sub 0331
    CALL &R_BL_AIR_OFF     // Sub 0333
  }
}

Var 0400, name FLAPS_UP_SW, Link IOCARD_SW, Input 68     // Volets position "Rentrés"  0008
{
  CALL &FLAPS_SUB     // Sub 345
}

Var 0401, name FLAPS_DN_SW, Link IOCARD_SW, Input 69     // Volets position "sortis"  0008
{
  CALL &FLAPS_SUB     // Sub 345
}

Var 0402, name GEAR_BAS_SW, Link IOCARD_SW, Input 15     // Inter poignée train baissée
{
  IF &GEAR_BAS_SW = 1     // Si poignée est entièrement baissée...
  {
    &GEAR = 16383         // ...le train est sorti
  }
  CALL &GEAR_ALARME     // Sub 0342
}

Var 0420, name GEAR_HAUT_SW, Link IOCARD_SW, Input 14     // Inter poignée train levée
{
  IF &GEAR_HAUT_SW = 1     // Si la poignée est entièrement levée...
  {
    &GEAR = 0         // ...le train est rentré
  }
  CALL &GEAR_ALARME     // Sub 0342
}

Var 0403, name AVIONIC_SW, Link IOCARD_SW, Input 11     // Inter Avionique 0015
{
  CALL &AVIONIQUE     // Sub 0351
  CALL &EXT_POWER     // Sub 0319 Eteindre EXT PWR
}

Var 0404, name INVERTER_SW, Link IOCARD_SW, Input 12     // Inter Inverter
{
  IF &INVERTER_SW = 1
  {
    &KEYS = 71         // génère un g pour Inverter ON
    &KEYS = 0   
  }
  ELSE
  {
    &KEYS = 71         // Génère un g pour Inverter OFF
    &KEYS = 0   
  }
  CALL &INVERTER     // Sub 0302 Alarme Inverter
  CALL &EXT_POWER     // Sub 0319 Eteindre EXT Power
}

Var 0405, name BATTERY_SW, Link IOCARD_SW, Input 13     // Inter batterie 0001
{
  &BATTERY = &BATTERY_SW   
  CALL &EXT_POWER
}

Var 0406, name L_GEN_SW, Link IOCARD_SW, Input 7     // Inter GEN 1
{
  IF &L_TURBINE_N1 > 1050     // 10,5 % de N1
  {
    &L_ENG_START = &L_GEN_SW * 2
  }
  ELSE
  {
    &L_ENG_START = 0   
  }
  CALL &EXT_POWER     // Sub 0319 Eteindre EXT PWR
}

Var 0407, name R_GEN_SW, Link IOCARD_SW, Input 1     // Inter GEN 2
{
  IF &R_TURBINE_N1 > 1050     // 10,5 % de N1
  {
    &R_ENG_START = &R_GEN_SW * 2
  }
  ELSE
  {
    &R_ENG_START = 0   
  }
  CALL &EXT_POWER     // Sub 0319 Eteindre EXT PWR
}

Var 0409, name L_AUTO_IGN_SW, Link IOCARD_SW, Input 16     // Inter Auto Ignition Gauche 0016/330
{
  IF &L_AUTO_IGN_SW = 1
  {
    &KEYS = 65         // Génère un a pour On
    &KEYS = 0   
  }
  ELSE
  {
    &KEYS = 65         // Génère un a pour Off
    &KEYS = 0   
  }
  IF &BATTERY_SW = 1
  {
    CALL &L_AUTO_IGN     // Sub 0330
  }
}

Var 0408, name R_AUTO_IGN_SW, Link IOCARD_SW, Input 10     // Inter Auto Ignition Droit 0017/0334
{
  IF &R_AUTO_IGN_SW = 1
  {
    &KEYS = 67         // Génère un c pour On
    &KEYS = 0   
  }
  ELSE
  {
    &KEYS = 67         // Génère un c pour Off
    &KEYS = 0   
  }
  IF &BATTERY_SW = 1
  {
    CALL &R_AUTO_IGN     // Sub 0334
  }
}

Var 0410, name ENGIN_ICE_L_SW, Link IOCARD_SW, Input 2     // inter anti ice moteur gauche
{
  &ENG_ANTI_ICE_L = &ENGIN_ICE_L_SW         // var 0027
  &L_ICE_VANE = &ENGIN_ICE_L_SW         // Sub 0317
  CALL &L_ICE_VANE_EXT     // Sub 0325 L ICE VANE EXT led
}

Var 0411, name ENGIN_ICE_R_SW, Link IOCARD_SW, Input 8     // inter anti ice moteur droit
{
  &ENG_ANTI_ICE_R = &ENGIN_ICE_R_SW         // var 0028
  &R_ICE_VANE = &ENGIN_ICE_R_SW         // Sub 0320
  CALL &R_ICE_VANE_EXT     // Sub 0329 R ICE VANE EXT led
}

Var 0412, name PKG_BRK_SW, Link IOCARD_SW, Input 4     // Inter de frein de parking
{
  &PKG_BRAKE = &PKG_BRK_SW * 32767     // Inter fermé = freins serrés
  IF &PKG_BRK_SW = 1
  {
    &N_PKG_BRAKE = 0         // Variable 0007 pour alarme EXT PWR 0319
  }
  ELSE
  {
    &N_PKG_BRAKE = 1         // Variable 0007 pour alarme EXT PWR 0319
  }
  CALL &Park_Break_Sub     // Sub 337
}

Var 0413, name L_ENG_START_SW, Link IOCARD_SW, Input 5     // Inter démarrage moteur gauche
{
  IF &BATTERY = 1     // Delay car lors bacule inter batt, inter
  {
    &L_INGNITION = DELAY &L_INGNITION ,10     // L ENG START SW bascule en "1" 10ms
  }
}

Var 0414, name R_ENG_START_SW, Link IOCARD_SW, Input 3     // Inter démarrage moteur droit
{
  IF &BATTERY = 1     // Delay car lors bacule inter batt, inter
  {
    &R_INGNITION = DELAY &R_INGNITION ,10     // L ENG START SW bascule en "1" 10ms
  }
}

/> Var 0415, name AUTOFEATHER_SW, Link IOCARD_SW, Input 0     // Inter Autofeather
{
  IF &AUTOFEATHER_SW = 1
  {
    &KEYS = 73         // Génère un i
    &KEYS = 0   
  }
  ELSE
  {
    &KEYS = 73   
    &KEYS = 0   
  }
  CALL &L_AUTOFEATHER     // Sub 0321
  CALL &R_AUTOFEATHER     // Sub 0324
}

Var 0416, name PROP_GOV_SW, Link IOCARD_SW, Input 6     // ////////////// NON ACTIF ///////////////

Var 0417, name PROP_SYNC_SW, Link IOCARD_SW, Input 17     // PROP SYNCRO sur inter MIC
{
  &PROP_SYNC = &PROP_SYNC_SW   
  IF &BATTERY = 1
  {
    CALL &PROP_SYNC_ON     // Sub 0313
  }
  ELSE     // Batterie éteinte
  {
    &PRO_SYN_ON_LED = 0         // Alarme éteinte
  }
}

Var 0418, name LAND_LIGHT_SW, Link IOCARD_SW, Input 26     // inter Landing Light Gauche et Droit
{
  IF &LAND_LIGHT_SW = 1
  {
    &LIGHTS = SETBIT 2
  }
  ELSE
  {
    &LIGHTS = CLEARBIT 2
  }
  CALL &LDG_TAXI_LIGHT     // Sub 327
}

Var 0419, name TAXI_LIGHT_SW, Link IOCARD_SW, Input 25     // Inter Taxi Light
{
  IF &TAXI_LIGHT_SW = 1
  {
    &LIGHTS = SETBIT 3
  }
  ELSE
  {
    &LIGHTS = CLEARBIT 3
  }
  CALL &LDG_TAXI_LIGHT     // Sub 327
}

Var 0421, name NAV_LIGHT_SW, Link IOCARD_SW, Input 22     // Inter feux NAV
{
  IF &NAV_LIGHT_SW = 1
  {
    &LIGHTS = SETBIT 0
  }
  ELSE
  {
    &LIGHTS = CLEARBIT 0
  }
}

Var 0424, name WSHLD_ICE_SW, Link IOCARD_SW, Input 24     // Inter Anti ice PARE BRISE
{
  CALL &WSHL_DEICE     // Sub 352
}

Var 0425, name PROP_ICE_SW, Link IOCARD_SW, Input 21     // Inter Dégivrage hélices
{
  IF &PROP_ICE_SW = 1
  {
    CALL &PROP_AMPS     // Sub 1002
  }
  ELSE
  {
    CALL &PROP_AMPS     // Sub 1002
  }
}

Var 0426, name PITOT_SW, Link IOCARD_SW, Input 19     // Inter Réchauffage Pitot
{
  CALL &PITOT_OFF     // Sub 0346
}

Var 0429, name SURF_ICESIN_SW, Link IOCARD_SW, Input 18     // Inter dégivrage surface single
{
  IF &MOTEUR_EN_ROUT > 0
  {
    CALL &SURFACE_ICE     // Sub 0348
  }
}

Var 0430, name SURF_ICEMAN_SW, Link IOCARD_SW, Input 20     // Inter dégivrage surface manuel
{
  IF &MOTEUR_EN_ROUT > 0
  {
    &SURFAC_ICE_LED = &SURF_ICEMAN_SW   
  }
}

Var 0435, name COFFEE_SW, Link IOCARD_SW, Input 35     // Inter machine à café
{
  IF &COFFEE_SW = 1
  {
  }
  ELSE
  {
  }
}

Var 0437, name NO_SMOKE_SW, Link IOCARD_SW, Input 30     // Inter No Smoke & FSB
{
  IF &BATTERY = 1
  {
    IF &NO_SMOKE_SW = 1
    {
      &Sound = 1   
      &Sound = 0   
    }
  }
}

Var 0439, name CABIN_MODE_SW, Link IOCARD_SW, Input 31     // Inter rotatif Cabin Mode
{
  CALL &AIR_CON_N1_LOW     // Sub 0323
}

Var 0440, name BLEED_L_OFF_SW, Link IOCARD_SW, Input 28     // Inter Bleed Air Instr & Envir Off gauche
{
  CALL &L_BL_AIR_FAIL     // Sub 0309
}

Var 0441, name BLEED_R_OFF_SW, Link IOCARD_SW, Input 33     // Inter Bleed Air Instr & Envir Off droit
{
  CALL &R_BL_AIR_FAIL     // Sub 0311
  CALL &PNEUMATIC_GYRO     // Sub 1025
}

Var 0442, name BLEED_L_ON_SW, Link IOCARD_SW, Input 34     // Inter Bleed Air Instr & Envir ON Gauche
{
  CALL &L_BL_AIR_OFF     // Sub 0331
}

Var 0443, name BLEED_R_ON_SW, Link IOCARD_SW, Input 27     // Inter Bleed Air Instr & Envir On Droit
{
  CALL &R_BL_AIR_OFF     // Sub 0333
}

Var 0444, name STALWAR_TESTSW, Link IOCARD_SW, Input 29     // Inter de test alarme décrochage
{
  IF &BATTERY = 1
  {
    IF &STALWAR_TESTSW = 1
    {
      &Sound = 3   
      &Sound = 0   
    }
  }
}

Var 0445, name CABIN_AIR_SW, Link IOCARD_SW, Input 32     // Inter tirette Cabin Air
{
  CALL &CABIN_AIR     // Sub 1045
}

Var 0498, Link IOCARD_SW, Input 9     // Entrée libre sur GND 2

Var 0499, Link IOCARD_SW, Input 23     // Entrée libre sur GND 3

Var 0700, name L_GEAR_TRA_LED, Link IOCARD_OUT, Output 17     // LED rouge train gauche en transit 0011

Var 0701, name R_GEAR_TRA_LED, Link IOCARD_OUT, Output 16     // LED rouge train droit en transit 0012

Var 0702, name N_GEAR_TRA_LED, Link IOCARD_OUT, Output 12     // Led rouge train avant en transit 0013

Var 0703, name L_GEAR_LED, Link IOCARD_OUT, Output 14     // LED verte train gauche sorti 0011

Var 0704, name R_GEAR_LED, Link IOCARD_OUT, Output 15     // LED verte train droit sorti 0012

Var 0705, name N_GEAR_LED, Link IOCARD_OUT, Output 13     // LED verte train avant sorti 0013

Var 0707, name GEAR_ALARM_LED, Link IOCARD_OUT, Output 11     // LED rouge poignée du train

Var 0708, name L_ENG_FIRE_LED, Link IOCARD_OUT, Output 208     // Alarme rouge L ENG FIRE
{
  &MASTER_WARNING = CHANGEBIT 0 ,&L_ENG_FIRE_LED     // Si alarme sur on change valeur Master Wa
}

Var 0709, name INVERTER_LED, Link IOCARD_OUT, Output 204     // Alarme rouge INVERTER

Var 0710, name DOOR_UNLOC_LED, Link IOCARD_OUT, Output 213     // Alarme rouge fermeture de porte

Var 0711, name ALT_WARN_LED, Link IOCARD_OUT, Output 203     // Alarme rouge ALT WARN

Var 0712, name R_ENG_FIRE_LED, Link IOCARD_OUT, Output 207     // Alarme rouge R ENG FIRE

Var 0713, name L_FUEL_PRE_LED, Link IOCARD_OUT, Output 206     // Alarme rouge L FUEL PRESS

Var 0714, name R_FUEL_PRE_LED, Link IOCARD_OUT, Output 211     // Alarme rouge R FUEL PRESS

Var 0715, name AP_TRIM_FA_LED, Link IOCARD_OUT, Output 209     // Alarme rouge A/P TRIM FAIL

Var 0716, name L_B_AI_FAI_LED, Link IOCARD_OUT, Output 210     // Alarme rouge BL AIR FAIL Gauche

Var 0717, name AP_FAIL_LED, Link IOCARD_OUT, Output 212     // Alarme rouge A/P FAIL

Var 0747, name R_B_AI_FA_LED, Link IOCARD_OUT, Output 205     // Alarme rouge BL AIR FAIL Droite

Var 0718, name L_DC_GEN_LED, Link IOCARD_OUT, Output 38     // Alarme Jaune L DC GEN

Var 0719, name PRO_SYN_ON_LED, Link IOCARD_OUT, Output 37     // Alarme Jaune PROP SYNC ON

Var 0720, name RVS_NO_REA_LED, Link IOCARD_OUT, Output 30     // Alarme Jaune RVS NOT READY

Var 0721, name R_DC_GEN_LED, Link IOCARD_OUT, Output 31     // Alarme Jaune R DC GEN

Var 0722, name DUCT_OVER_LED, Link IOCARD_OUT, Output 34     // Alarme Jaune DUCT OVERTEMP

Var 0723, name L_ICE_VANE_LED, Link IOCARD_OUT, Output 33     // Alarme Jaune L ICE VANE FAIL

Var 0724, name BATT_CHARG_LED, Link IOCARD_OUT, Output 20     // Alarme Jaune BATT CHARGE LED

Var 0725, name EXT_PWR_LED, Link IOCARD_OUT, Output 35     // Alarme Jaune EXTERNE Power LED

Var 0726, name R_ICE_VANE_LED, Link IOCARD_OUT, Output 22     // Alarme Jaune R ICE VANE FAIL

Var 0727, name L_FEATHER_LED, Link IOCARD_OUT, Output 21     // Alarme verte L AUTO FEATHER

Var 0728, name ELE_TRI_OF_LED, Link IOCARD_OUT, Output 32     // Alarme verte ELEC TRIM OFF

Var 0729, name AIR_COND_LED, Link IOCARD_OUT, Output 40     // Alarme verte AIR COND N1 LOW

Var 0730, name R_FEATHER_LED, Link IOCARD_OUT, Output 45     // Alarme verte R AUTO FEATHER

Var 0731, name L_ICE_EXT_LED, Link IOCARD_OUT, Output 27     // Alarme verte LEFT ICE VANE EXT

Var 0732, name BRAKE_DEIC_LED, Link IOCARD_OUT, Output 29     // Alarme verte BRAKE DEICE ON

Var 0733, name LDGTAX_LIG_LED, Link IOCARD_OUT, Output 18     // Alarme verte LDG/TAXI LIGHT

Var 0734, name PASS_OXY_LED, Link IOCARD_OUT, Output 24     // Alarme verte PASS OXY ON

Var 0735, name R_ICE_EXT_LED, Link IOCARD_OUT, Output 25     // Alarme verte R ICE VANE EXT

Var 0736, name L_IGNITION_LED, Link IOCARD_OUT, Output 28     // Alarme verte IGNITION Gauche

Var 0737, name L_AIR_OFF_LED, Link IOCARD_OUT, Output 26     // Alarme verte L BL AIR OFF LED

Var 0738, name FUEL_CROSS_LED, Link IOCARD_OUT, Output 43     // Alarme verte FUEL CROSSFEED

Var 0739, name R_AIR_OFF_LED, Link IOCARD_OUT, Output 41     // Alarme verte R BL AIR OFF

Var 0740, name R_IGNITION_LED, Link IOCARD_OUT, Output 42     // Alarme verte IGNITION Droit

Var 0741, name MASTER_WAR_LED, Link IOCARD_OUT, Output 62     // Alarme rouge clignotante MASTER WARNING

Var 0742, name MASTER_CAU_LED, Link IOCARD_OUT, Output 63     // Alarme jaune clignotante MASTER CAUTION

Var 0743, name PKG_BRAKE_LED, Link IOCARD_OUT, Output 36     // Alarme jaune frein de parking

Var 0744, name WSHL_DEICE_LED, Link IOCARD_OUT, Output 44     // Alarme Verte Dégivrage pare-brise

Var 0745, name PITOT_OFF_LED, Link IOCARD_OUT, Output 39     // Alarme Jaune Pitot Off

Var 0746, name SURFAC_ICE_LED, Link IOCARD_OUT, Output 19     // Alarme verte Surface ICE///REVOIR///

Var 0748, name BATT_DISCHARGE, Link IOCARD_OUT, Output 23     // Alarme jaune Batt Discharge

Var 1000, name PROP_AMPS_SERV, Link USB_SERVOS, Output 2, PosL 1, PosC 512, PosR 1023     // Gauge Prop Amps 1023 à 428

Var 1001, name ZERO_PROP_AMPS, Link SUBRUTINE     // Mise à 0 de PROP AMPS 1023 à 428
{
  &PROP_AMPS_SERV = TIMER 428 ,-20 ,1
  &PROP_AMPS_SERV = DELAY 0 ,80
}

Var 1002, name PROP_AMPS, Link SUBRUTINE     // Réglage Prop Amps 1023 à 428
{
  IF &BATTERY_SW = 1
  {
    IF &PROP_ICE_SW = 1
    {
      &PROP_AMPS_SERV = LIMIT 428 ,1023 ,0
      IF &MOTEUR_EN_ROUT <> 0
      {
        IF &CONDITION > 44
        {
          &PROP_AMPS_SERV = TIMER 813 ,2 ,1
        }
        ELSE
        {
          IF &PROP_AMPS_SERV < 700
          {
            &PROP_AMPS_SERV = TIMER 693 ,2 ,1
          }
          ELSE
          {
            &PROP_AMPS_SERV = TIMER 693 ,-2 ,20
          }
        }
      }
      ELSE
      {
        &PROP_AMPS_SERV = TIMER 693 ,2 ,1
      }
    }
    ELSE
    {
      &PROP_AMPS_SERV = TIMER 428 ,-2 ,1
      &PROP_AMPS_SERV = DELAY 0 ,350
    }
  }
}

Var 1010, name CROCHET_SERV, Link USB_SERVOS, Output 1, PosL 1, PosC 512, PosR 1023     // Servo du crochet de train 893

Var 1011, name CROCHET_TRAIN, Link SUBRUTINE     // Servo du crochet de train 893 à 516
{
  IF &BATTERY_SW = 1
  {
    IF &ACFT_ON_GND = 0     // Si l'avion à décollé
    {
      &CROCHET_SERV = 516         // Crochet ouvert
      &CROCHET_SERV = DELAY 0 ,35     // Alim servo coupée après 35 centièmes
    }
    ELSE
    {
      L0 = &BATTERY * 3000
      L1 = L0 + 50
      &CROCHET_SERV = DELAY 910 ,L0     // Crochet fermé après 30s
      &CROCHET_SERV = DELAY 0 ,L1     // Alim servo coupée après 50 centièmes
    }
  }
  ELSE
  {
    &CROCHET_SERV = 0   
  }
}

Var 1020, name PNEUMATIC_SERV, Link USB_SERVOS, Output 4, PosL 224, PosC 621, PosR 1023     // Servo de  Pneumatic 1023

Var 1021, name ZERO_PNEUMATIC, Link SUBRUTINE     // Mise à 0 de PNEUMATIC 1023 à 224
{
  &PNEUMATIC_SERV = TIMER 224 ,-20 ,1
  &PNEUMATIC_SERV = DELAY 0 ,150
}

Var 1025, name PNEUMATIC_GYRO, Link SUBRUTINE     // réglages Pneu & Gyro 1023/224 & 248/796
{
  IF &BATTERY = 1
  {
    IF &BLEED_R_OFF_SW = 0     // Si Inter sur On
    {
      IF &R_ENG_START = 2     // Si Moteur et génératrice droite en route
      {
        &PNEUMATIC_SERV = 224   
        &PNEUMATIC_SERV = TIMER 1023 ,3 ,1
        &GYRO_SUCT_SERV = 796   
        &GYRO_SUCT_SERV = TIMER 436 ,-3 ,1
      }
      ELSE
      {
        IF &PNEUMATIC_SERV > 930
        {
          &PNEUMATIC_SERV = TIMER 930 ,-3 ,1
        }
        ELSE
        {
          &PNEUMATIC_SERV = 224   
          &PNEUMATIC_SERV = TIMER 930 ,3 ,1
        }
        IF &GYRO_SUCT_SERV = 0
        {
          &GYRO_SUCT_SERV = 796   
          &GYRO_SUCT_SERV = TIMER 560 ,-3 ,1
        }
        IF &GYRO_SUCT_SERV < 436
        {
          &GYRO_SUCT_SERV = TIMER 560 ,3 ,1
        }
        ELSE
        {
          &GYRO_SUCT_SERV = 796   
          &GYRO_SUCT_SERV = TIMER 560 ,-3 ,1
        }
      }
    }
    ELSE
    {
      &PNEUMATIC_SERV = TIMER 224 ,-3 ,1
      &GYRO_SUCT_SERV = TIMER 796 ,3 ,1
    }
  }
  ELSE
  {
    CALL &ZERO_PNEUMATIC     // Sub 1021
    CALL &ZERO_GYRO     // Sub 1031
  }
}

Var 1030, name GYRO_SUCT_SERV, Link USB_SERVOS, Output 5, PosL 1, PosC 512, PosR 1023     // Servo de la gauge Gyro 248

Var 1031, name ZERO_GYRO, Link SUBRUTINE     // Mise à 0 de Gyro 796 à 248
{
  &GYRO_SUCT_SERV = 796   
  &GYRO_SUCT_SERV = DELAY 0 ,150
}

Var 1040, name CABIN_AIR_SERV, Link USB_SERVOS, Output 3, PosL 1, PosC 512, PosR 1023     // Servo gauge Cabin Air 678 à

Var 1041, name ZERO_CABIN_AIR, Link SUBRUTINE     // Mise à 0 gauge CABIN 678 à 160
{
  IF &CABIN_AIR_SERV <> 160
  {
    L0 = LIMIT 160 ,500 ,0
    L0 = 160   
    &CABIN_AIR_SERV = TIMER L0 ,-20 ,1
  }
  &CABIN_AIR_SERV = DELAY 0 ,75
}

Var 1045, name CABIN_AIR, Link SUBRUTINE     // Réglage gauge Cabin Air 678 à 160
{
  IF &BATTERY = 1
  {
    IF &CABIN_AIR_SW = 1
    {
      &CABIN_AIR_SERV = 160   
      &CABIN_AIR_SERV = TIMER 510 ,2 ,1
    }
    ELSE
    {
      &CABIN_AIR_SERV = TIMER 160 ,-2 ,1
      &CABIN_AIR_SERV = DELAY 0 ,195
    }
  }
  ELSE
  {
    CALL &ZERO_CABIN_AIR     // Sub 1041
  }
}

Var 1050, Link USB_SERVOS, Output 6, PosL 1, PosC 512, PosR 1023