Device-MegaSquirt

 view release on metacpan or  search on metacpan

doc/devdoc/ini/megasquirt-ii.ms2extra.alpha_3.0.3u_20100522.ini  view on Meta::CPAN


      ; The index of the selected EGO sensor as defined in the solutions section of the 
      ; ReferenceTable section of the ini, this may also be found in the ms2ReferenceTables.ini 
      ; file found in the inc dir of your TunerStudio installation.
      ego_calib_selection= scalar, U08, 1016,          "index",  1.0,  0.0, 0.0,  255, 0 ; * (  1 byte)
      ego_calib_volts    = array,  U08, 1017, [   3],  "Volts",  0.1,  0.0, 0.0,  5.0, 1 ; (3 bytes)
      ego_calib_afrs     = array,  U08, 1020, [   3],  "AFR",    0.1,  0.0, 5.0, 25.0, 1 ; (3 bytes)
      
page = 5
      veTable1        = array ,  U08,      0,      [16x16], "%",        1.00000,   0.00000,  0.00,  255.00,      0 ; * (144 bytes)
      veTable2	      = array ,  U08,      256,    [16x16], "%",        1.00000,   0.00000,  0.00,  255.00,      0 ;
      veTable3	      = array ,  U08,      512,    [16x16], "%",        1.00000,   0.00000,  0.00,  255.00,      0 ;

      frpm_table1     = array ,  U16,    768,    [   16], "RPM",      1.00000,   0.00000,  0.00,15000.00,      0 ; * ( 24 bytes)
      frpm_table2     = array ,  U16,    800,    [   16], "RPM",      1.00000,   0.00000,  0.00,15000.00,      0 ; * ( 24 bytes)
      frpm_table3     = array ,  U16,    832,    [   16], "RPM",      1.00000,   0.00000,  0.00,15000.00,      0 ; * ( 24 bytes)
      fmap_table1     = array ,  S16,    864,    [   16], "%",      0.10000,   0.00000,  0.00,  400.00,      1 ; * ( 24 bytes)
      fmap_table2     = array ,  S16,    896,    [   16], "%",      0.10000,   0.00000,  0.00,  400.00,      1 ; * ( 24 bytes)
      fmap_table3     = array ,  S16,    928,    [   16], "%",      0.10000,   0.00000,  0.00,  400.00,      1 ; * ( 24 bytes)

;same tables again but smaller - start in different places to 16x16
      veTable1dozen   = array ,  U08,      0,      [12x12], "%",        1.00000,   0.00000,  0.00,  255.00,      0 ; * (144 bytes)
      veTable2dozen   = array ,  U08,      144,    [12x12], "%",        1.00000,   0.00000,  0.00,  255.00,      0 ;
      veTable3dozen   = array ,  U08,      288,    [12x12], "%",        1.00000,   0.00000,  0.00,  255.00,      0 ;
      frpm_table1doz  = array ,  U16,    768,    [   12], "RPM",      1.00000,   0.00000,  0.00,15000.00,      0 ; * ( 24 bytes)
      frpm_table2doz  = array ,  U16,    792,    [   12], "RPM",      1.00000,   0.00000,  0.00,15000.00,      0 ; * ( 24 bytes)
      frpm_table3doz  = array ,  U16,    816,    [   12], "RPM",      1.00000,   0.00000,  0.00,15000.00,      0 ; * ( 24 bytes)
      fmap_table1doz  = array ,  S16,    864,    [   12], "%",      0.10000,   0.00000,  0.00,  400.00,      1 ; * ( 24 bytes)
      fmap_table2doz  = array ,  S16,    888,    [   12], "%",      0.10000,   0.00000,  0.00,  400.00,      1 ; * ( 24 bytes)
      fmap_table3doz  = array ,  S16,    912,    [   12], "%",      0.10000,   0.00000,  0.00,  400.00,      1 ; * ( 24 bytes)
      MAFFlow       = array, U16,    960,  [12], "g/sec", 0.01000,   0.00000,  0.00,   650.0,      1
      MAFCor        = array, U08,    984,  [12], "%", 1.00000,   0.00000,  0.00,   255.0,      0

page = 6
      veTrim2         = array ,  S08,      0,      [16x16], "%",   0.0976562500, 1024.0000,   87.60,  112.40,    1 ; * (256 bytes)
      veTrim3         = array ,  S08,      256,    [16x16], "%",   0.0976562500, 1024.0000,   87.60,  112.40,    1 ;
      veTrim4         = array ,  S08,      512,    [16x16], "%",   0.0976562500, 1024.0000,   87.60,  112.40,    1 ;

      frpm_trim2      = array ,  U16,    768,    [   16], "RPM",      1.00000,   0.00000,  0.00,15000.00,      0 ; * ( 32 bytes)
      frpm_trim3      = array ,  U16,    800,    [   16], "RPM",      1.00000,   0.00000,  0.00,15000.00,      0 ; * ( 32 bytes)
      frpm_trim4      = array ,  U16,    832,    [   16], "RPM",      1.00000,   0.00000,  0.00,15000.00,      0 ; * ( 32 bytes)
      fmap_trim2      = array ,  S16,    864,    [   16], "%",      0.10000,   0.00000,  0.00,  400.00,      1 ; * ( 32 bytes)
      fmap_trim3      = array ,  S16,    896,    [   16], "%",      0.10000,   0.00000,  0.00,  400.00,      1 ; * ( 32 bytes)
      fmap_trim4      = array ,  S16,    928,    [   16], "%",      0.10000,   0.00000,  0.00,  400.00,      1 ; * ( 32 bytes)

;same tables again but smaller - start in different places to 16x16
      veTrim2dozen    = array ,  S08,      0,      [12x12], "%",   0.0976562500, 1024.0000,   87.60,  112.40,    1 ; * (144 bytes)
      veTrim3dozen    = array ,  S08,      144,    [12x12], "%",   0.0976562500, 1024.0000,   87.60,  112.40,    1 ;
      veTrim4dozen    = array ,  S08,      288,    [12x12], "%",   0.0976562500, 1024.0000,   87.60,  112.40,    1 ;
      frpm_trim2doz   = array ,  U16,    768,    [   12], "RPM",      1.00000,   0.00000,  0.00,15000.00,      0 ; * ( 24 bytes)
      frpm_trim3doz   = array ,  U16,    792,    [   12], "RPM",      1.00000,   0.00000,  0.00,15000.00,      0 ; * ( 24 bytes)
      frpm_trim4doz   = array ,  U16,    816,    [   12], "RPM",      1.00000,   0.00000,  0.00,15000.00,      0 ; * ( 24 bytes)
      fmap_trim2doz   = array ,  S16,    864,    [   12], "%",      0.10000,   0.00000,  0.00,  400.00,      1 ; * ( 24 bytes)
      fmap_trim3doz   = array ,  S16,    888,    [   12], "%",      0.10000,   0.00000,  0.00,  400.00,      1 ; * ( 24 bytes)
      fmap_trim4doz   = array ,  S16,    912,    [   12], "%",      0.10000,   0.00000,  0.00,  400.00,      1 ; * ( 24 bytes)
      ITB_load_loadvals= array,  S16,     960,    [   10], "%",         0.10000,   0.000, 0,     100.00,      1
      ITB_load_switchpoints = array,S16,  980,    [   10], "%",         0.10000,   0.000, 0,     100.00,      1
      ITB_load_rpms = array,     U16,     1000,   [   10], "rpm",       1.0000,    0.000, 0,     16000,       0


[Menu]

   ;----------------------------------------------------------------------------
   ;  There are five pre-defined values that may be used to define your menus.
   ;  The first four allow access to the "standard" dialog boxes, the last one
   ;  merely draws a separator (horizontal line) in the menu.
   ;
   ;     std_constants
   ;     std_enrichments
   ;     std_realtime
   ;     std_warmup
   ;     std_accel
   ;
   ;     std_separator
   ;
   ;  Additionally, to support MegaSquirt-II firmware, there are two standard
   ;  dialogs to generate its three embedded tables.  The first of these acts
   ;  like Roger Enns' EasyTherm, but only works for MS-II.  The second one
   ;  generates the internal AFR table required for proper closed loop operation
   ;  in MS-II.  Use these without page numbers, as they will just be ignored
   ;  in any case.
   ;
   ;     std_ms2gentherm
   ;     std_ms2geno2
   ;
   ;  If you use any of the std_constants, std_enrichments or std_warmup
   ;  editors, they may be optionally suffixed with a page number (only
   ;  useful for multi-page code variants), which causes them to edit the
   ;  specified page.  If you leave off the page specifier, they edit logical
   ;  page one as specified in the Constants section.
   ;
   ;  There are four special menu names, which when used append to the standard
   ;  menus of the same name instead of creating a new one.  The menu names
   ;  are "File", "Communications", "Tools" and "Help".
   ;
   ;----------------------------------------------------------------------------

   menuDialog = main
      menu = "&Basic setup"
        subMenu = std_injection,   "Engine constants"
	subMenu = secondaryLoad,   "More Engine constants"
        subMenu = ITB_load_switchpoint_curve, "ITB load switchpoints", 0, { algorithm == 6 || algorithm2 == 6 || IgnAlgorithm == 6 || IgnAlgorithm2 == 6 || afrload == 6 || eaeload == 6 }
        subMenu = ITB_load_loadvals_curve, "ITB loads at switchpoints", 0, { algorithm == 6 || algorithm2 == 6 || IgnAlgorithm == 6 || IgnAlgorithm2 == 6 || afrload == 6 || eaeload == 6 }
        subMenu = injChars,        "I&njector Characteristics"
        subMenu = std_separator    ;----------------------------------------------
        subMenu = ignitionOptions, "Tach input/&Ignition settings", 0
	    subMenu = moreIgnitionOptions, "More Ignition Settings", 0, { spk_mode0 != 31 }
        subMenu = advign,          "Noise Filtering - EDIS", 0, { spk_mode0 < 2 }
        subMenu = noisefiltering,  "Noise Filtering", 0, {spk_mode0 > 1} 
        subMenu = NoiseFiltercurve, "Noise Filter Curve", 0, { NoiseFilterOpts & 1 }
        subMenu = triggerWheel,    "&Trigger Wheel Settings", 0, { (userlevel > 127) && (spk_mode0 == 4) }
        subMenu = RotaryTrailingSettings, "Rotary Settings", 0, { (spk_mode0 != 31) }
        subMenu = RotarySplitTbl,  "Rotary Split Table", 0, { RotarySplitModeOn && (spk_mode0 != 31) }
        subMenu = std_separator
        subMenu = veTable1Tbl,     "Fuel VE Table &1", 0,{ (feature4_0VEtblsize==0) }
        subMenu = veTable1Tbldoz,  "Fuel VE Table &1",0, { feature4_0VEtblsize }
        subMenu = afrTable1Tbl,    "A&FR Table 1",         0
        subMenu = ignitionTbl1,     "&Ignition Table1", 0, { (userlevel > 63) && (spk_mode0 != 31) }

        subMenu = veTable2Tbl,     "Fuel VE Table &2",          0, { ((dualTable && userlevel > 127) || (algorithm2 != 0)) && (feature4_0VEtblsize==0) }
        subMenu = veTable2Tbldoz,     "Fuel VE Table &2",          0, { ((dualTable && userlevel > 127) || (algorithm2 != 0)) && (feature4_0VEtblsize) }
        subMenu = afrTable2Tbl,    "AF&R Table 2",         0, { dualTable && userlevel > 127}
        subMenu = ignitionTbl2,     "Ignition Table2", 0, { (userlevel > 127) && (IgnAlgorithm2 !=0) && (spk_mode0 != 31)}
        subMenu = std_separator    ;----------------------------------------------
        subMenu = generalSettings, "&General, lags"
        subMenu = revlimiter, "Rev Limiter"
        subMenu = revlimiterBins, "CLT-Based Rev Limit", 0, { (RevLimCLTbased & 1) }
        subMenu = std_separator    ;----------------------------------------------
        subMenu = egoControl,      "&EGO Control"
        subMenu = userlevel, "Basic/Advanced user"

      menu = "&Startup/idle"
        subMenu = crsettings,      "Cranking settings",  0
        subMenu = primingPW,       "Pri&ming Pulse",       0
        subMenu = crankingPW,      "Cra&nking Pulse",      0
        subMenu = asePct,          "A&SE Percentage",      0
        subMenu = aseTaper,        "AS&E Taper",           0
        subMenu = idleControl,     "I&dle Control"
        subMenu = pwmidle_crank_dutyorsteps_dutycurve, "PWM idle cranking duty", 0, {IdleCtl == 4 || IdleCtl == 6}
        subMenu = pwmidle_crank_dutyorsteps_stepscurve, "IAC idle cranking steps", 0, {IdleCtl == 2 || IdleCtl == 3 || IdleCtl == 5 || IdleCtl == 7 || IdleCtl == 8}
        subMenu = iacBins,         "I&dle Steps",          0, { IdleCtl == 2 || IdleCtl == 3 || IdleCtl == 5 }
        subMenu = ipwset,         "Idle &PWM Settings",   0, { IdleCtl == 4 || IdleCtl == 6 }
        subMenu = ipwBins,         "I&dle PWM duty Table",0, { IdleCtl == 4 }
        subMenu = pwmidle_closedloop, "Closed-loop idle valve settings", 0, { IdleCtl == 6 || IdleCtl == 7 || IdleCtl == 8 }
	subMenu = pwmidle_PID, "Closed-loop idle PID settings", 0, { IdleCtl == 6 || IdleCtl == 7 || IdleCtl == 8 }
        subMenu = pwmidle_target_curve, "Closed-loop idle target rpm curve", 0, { IdleCtl == 6 || IdleCtl == 7 || IdleCtl == 8 }
        subMenu = warmup_curve,      "&Warmup Enrichment",       0


      menu = "Accel Enrich", { userlevel > 127 }
         subMenu = accelsettings,   "Accel Enrich settings"
         subMenu = std_accel,       "&Acceleration Wizard", 0
         subMenu = EAEBAWCcurve,   "EAE Adhere-to-walls constant", 0, {      EAEOption > 0 }
	 subMenu = EAEBSOCcurve,   "EAE Sucked-from-walls constant", 0, {EAEOption > 0}
	 subMenu = EAEAWNcurve,   "EAE Adhere-to-walls rpm correction", 0, {EAEOption > 0}
	 subMenu = EAESONcurve,   "EAE Sucked-from-walls rpm correction", 0, {EAEOption > 0}
         subMenu = EAEAWWcurve,   "EAE Adhere-to-walls CLT correction", 0, {EAEOption > 0}
         subMenu = EAESOWcurve,   "EAE Sucked-from-walls CLT correction", 0, {EAEOption > 0}
	 subMenu = EAElagcomp,    "EAE lag compensation settings", 0, {EAEOption == 3}

      menu = "&Extended", { userlevel > 127 }
         subMenu = std_port_edit,   "&Output port Settings"
         subMenu = barometerCorr,   "Barometric Correction"
         subMenu = coldAdvance,     "&Cold Advance", 0, { spk_mode0 != 31 }
         subMenu = matBasedRetard,  "MAT-&Based Timing Retard", 0, { spk_mode0 != 31 }
         subMenu = manifoldTempCorr,"MAT Correction table", 0
         subMenu = MATCorrval,      "MAT Correction value", 0
         subMenu = flexFuelSettings,"&Flex Fuel"
         subMenu = knockSettings,   "&Knock Sensor Settings"
         subMenu = overrun,        "Over Run Fuel cut"
	 subMenu = staging,        "Staged Injection"
         subMenu = stagedTable,    "Staged Injection Table", 0, { ((staged_first_param & 0x7) == 5) }
         subMenu = tacho,          "Tacho output"
         subMenu = launch,          "Launch Control"
         subMenu = tablesw,         "Table Switching control"
         subMenu = veTable3Tbl,     "Fuel VE Table 3", 0, {(feature4_0VEtblsize==0) && ((f5_0_tsf>0) || (seq_inj == 3)) && (userlevel > 127) }
         subMenu = veTable3Tbldoz,  "Fuel VE Table 3", 0, {(feature4_0VEtblsize==1) && ((f5_0_tsf>0) || (seq_inj == 3)) && (userlevel > 127) }
         subMenu = ignitionTbl3,     "Ignition Table3", 0, {(f5_0_tss>0) && (userlevel > 127)}
         subMenu = N2OSystem,    "&Nitrous System"
         subMenu = N2OSystem2,   "&Nitrous Stage 2",              0, { N2Oopt_2 && N2Oopt_3 }
	 subMenu = overboost,    "Overboost Protection"
         subMenu = idleAdvance,  "Idle Advance Settings"
         subMenu = idleAdvance_curve, "Idle Advance Timing",  0, { idleadvance_on }

      menu = "&Advanced", {userlevel > 191 }
         subMenu = dwellSettings,   "D&well battery correction", 0, { spk_mode0 != 31 }
;         subMenu = amcSettings,     "Automatic &Mixture Control", 0, { 1 == 0 } ; disabled
	 subMenu = boostctlSettings, "Boost Control Settings"
	 subMenu = boostctlDutys, "Boost Control Duty Table", 0, { (boost_ctl_settings_on) && (!boost_ctl_settings_cl) }
	 subMenu = boostctlTargs, "Boost Control Target Table", 0, { (boost_ctl_settings_on == 1) && (boost_ctl_settings_cl == 1) }
         subMenu = canparams, "CAN parameters"
         subMenu = rmt_port_edit,   "Remote Output port Settings", 0, { (can_poll == 3) && (enable_pollports) && (ports_dir) && (port_generic) }
         subMenu = std_separator    ;----------------------------------------------
         subMenu = experimental, "Experimental"
         subMenu = outputtest, "Output test mode"
         subMenu = iactest, "Idle valve test"
         subMenu = injseq, "Injector Sequence"
;      subMenu = userdefined, "User defined menu" ; uncomment this line to enable
         subMenu = std_separator    ;----------------------------------------------
         subMenu = mafdialog, "MAF Options", 0, { algorithm == 5 || algorithm2 == 5 }
         subMenu = MAFtable1, "MAF correction curve", 0, { algorithm == 5 || algorithm2 == 5 }
         subMenu = std_separator
         subMenu = seq_injection, "Sequential injection"
         subMenu = injTiming1Tbl, "Injection Timing Table 1", 0, { (seq_inj) && (injusetable) }
         subMenu = injTiming2Tbl, "Injection Timing Table 2", 0, { (seq_inj == 3) && (injusetable) && (injdualvalue) }
         subMenu = injTiming3Tbl, "Injection Timing Table 3", 0, { (seq_inj == 3) && (injusetable) }
#if INI_VERSION_2
         subMenu = veTrim1Tbl,     "Fuel VE Trim Table 1", 0,{ (feature4_0VEtblsize==0) && usevetrim }
         subMenu = veTrim1Tbldoz,  "Fuel VE Trim Table 1",0, { feature4_0VEtblsize && usevetrim }
         subMenu = veTrim2Tbl,     "Fuel VE Trim Table 2", 0,{ (feature4_0VEtblsize==0) && usevetrim }
         subMenu = veTrim2Tbldoz,  "Fuel VE Trim Table 2",0, { feature4_0VEtblsize && usevetrim }
         subMenu = veTrim3Tbl,     "Fuel VE Trim Table 3", 0,{ (feature4_0VEtblsize==0) && usevetrim && extrainj }
         subMenu = veTrim3Tbldoz,  "Fuel VE Trim Table 3",0, { feature4_0VEtblsize && usevetrim && extrainj }
         subMenu = veTrim4Tbl,     "Fuel VE Trim Table 4", 0,{ (feature4_0VEtblsize==0) && usevetrim && extrainj }
         subMenu = veTrim4Tbldoz,  "Fuel VE Trim Table 4",0, { feature4_0VEtblsize && usevetrim && extrainj }
#endif

   menuDialog = main
      menu = "&Tuning"
         subMenu = std_realtime,    "&Realtime Display"
         subMenu = std_separator    ;----------------------------------------------
         subMenu = std_accel,       "&Acceleration Wizard", 0
;16x16
         subMenu = veTable1Map,     "Fuel VE Table &1",0 { (feature4_0VEtblsize==0) }
         subMenu = veTable2Map,     "Fuel VE Table &2",  0, { ((dualTable && (userlevel > 127)) || (algorithm2 != 0)) && (feature4_0VEtblsize==0) }
         subMenu = veTable3Map,     "Fuel VE Table &3",  0, { (userlevel > 127) && (f5_0_tsf || (seq_inj == 3)) && (feature4_0VEtblsize==0) }
#if INI_VERSION_2
         subMenu = veTrim1Map,      "Fuel VE Trim Table 1",0 { (feature4_0VEtblsize==0) && usevetrim }
         subMenu = veTrim2Map,      "Fuel VE Trim Table 2",0 { (feature4_0VEtblsize==0) && usevetrim }
         subMenu = veTrim3Map,      "Fuel VE Trim Table 3",0 { (feature4_0VEtblsize==0) && usevetrim && extrainj }
         subMenu = veTrim4Map,      "Fuel VE Trim Table 4",0 { (feature4_0VEtblsize==0) && usevetrim && extrainj }
#endif
;12x12
         subMenu = veTable1Mapdoz,     "Fuel VE Table &1",0, { (feature4_0VEtblsize==1) }
         subMenu = veTable2Mapdoz,     "Fuel VE Table &2",0, { ((dualTable && (userlevel > 127)) || (algorithm2 != 0)) && (feature4_0VEtblsize==1) }
         subMenu = veTable3Mapdoz,     "Fuel VE Table &3",          0, { (userlevel > 127) && (f5_0_tsf || (seq_inj == 3)) && (feature4_0VEtblsize==1) }
#if INI_VERSION_2
         subMenu = veTrim1Mapdoz,      "Fuel VE Trim Table 1",0, { (feature4_0VEtblsize==1) && usevetrim }
         subMenu = veTrim2Mapdoz,      "Fuel VE Trim Table 2",0, { (feature4_0VEtblsize==1) && usevetrim }
         subMenu = veTrim3Mapdoz,      "Fuel VE Trim Table 3",0, { (feature4_0VEtblsize==1) && usevetrim && extrainj }
         subMenu = veTrim4Mapdoz,      "Fuel VE Trim Table 4",0, { (feature4_0VEtblsize==1) && usevetrim && extrainj }
#endif
         subMenu = afrTable1Map,    "A&FR Table 1",         0, { egoType >= 3              }
         subMenu = afrTable2Map,    "AF&R Table 2",         0, { egoType >= 3 && dualTable && (userlevel > 127) }
         subMenu = std_separator    ;----------------------------------------------
         subMenu = ignitionMap1,     "&Ignition Map1", 0, {(userlevel > 63) && (spk_mode0 != 31)}
         subMenu = ignitionMap2,     "&Ignition Map2", 0, {(userlevel > 127) && ((IgnAlgorithm2 != 0) || f5_0_tss) && (spk_mode0 != 31)}
	 subMenu = RotarySplitMap,   "Rotary Split Map", 0, {RotarySplitModeOn && (spk_mode0 != 31)}
	 subMenu = std_separator    ;----------------------------------------------
	 subMenu = boostctlDtyMap,   "Boost Control Duty Map", 0, {boost_ctl_settings_on && boost_ctl_settings_cl == 0}
	 subMenu = boostctlTargMap,  "Boost Control Target Map", 0, {boost_ctl_settings_on && boost_ctl_settings_cl}
	 subMenu = std_separator    ;----------------------------------------------
	 subMenu = injTiming1Map,   "Injection Timing Map 1", 0, { (seq_inj) && (injusetable) }
	 subMenu = injTiming2Map,   "Injection Timing Map 2", 0, { (seq_inj == 3) && (injusetable) && (injdualvalue) }
	 subMenu = injTiming3Map,   "Injection Timing Map 3", 0, { (seq_inj == 3) && (injusetable) }

   menuDialog = main
      menu = "Tools"
         subMenu = std_ms2gentherm, "Calibrate T&hermistor Tables..."
         subMenu = std_ms2geno2,    "Calibrate &AFR Table..."
         subMenu = sensorCal,       "&Sensor Calibration..."
         subMenu = std_trigwiz,     "Tri&gger Wizard...", 0,{ (spk_mode0 != 31) && (spk_mode0 != 4) }

      menu = "Communications"
         subMenu = setbaud, "Megasquirt baud rate", 0, { userlevel > 191}

      menu = "Help"
         subMenu = helpGeneral,     "MS-II Info"
         subMenu = sensorHelp,      "Sensor Calibration"


;-------------------------------------------------------------------------------

[UserDefined]

   dialog = mafdialog, "MAF Settings"
         field = "MAF port", MAFOption
         field = "Engine size", CID

   dialog = MATCorrval, "MAT correction value"
      field = "This value allows you to scale down the built in air"
      field = "density (MAT) correction. "
      field = "100% means that the PV=nRT ideal gas law is followed."
      field = "Lower values give less aggressive correction."
      field = "0% is not allowed as it ignores the physics completely."
      field = "(0% is interpreted as 100% for backwards compatability)"
      field = "This value and the table are used at the same time"
      field = "MAT correction scaling",              airden_scaling

   dialog = N2OSystem, "Nitrous System"
      field =   "Nitrous Control",                   N2Oopt_2
      field =   "Turn N2O on when above",            N2ORpm,        { N2Oopt_2 }
      field =   "And Coolant Temp above",            N2OClt,        { N2Oopt_2 }
      field =   "And TPS >",                         N2OTps,        { N2Oopt_2 }
      field = "Input location",                      N20remote_input, { N2Oopt_2 }
      field = "Enable input on:",                    N2Oopt_pins,   { N2Oopt_2 && !N20remote_input }
      field = "Enable input on:",                    N20remote_inport, { N2Oopt_2 && N20remote_input }
      field = "Output location",                     N20remote_output, { N2Oopt_2 }
      field = "Output pins for stage 1+2",           N2Oopt_pins2,  { N2Oopt_2 && !N20remote_output }
      field = "Output pins for stage 1+2",           N20remote_outport, { N2Oopt_2 && N20remote_output }
    ; field =   ""
      field =   "Additional Fuel PW @ N2O min rpm",  N2OPWLo,       { N2Oopt_2 }
      field =   "Max RPM",                           N2ORpmMax,     { N2Oopt_2 }
      field =   "Additional Fuel PW @ N2O Max RPM",  N2OPWHi,       { N2Oopt_2 }
      field =   "Enrich which bank in DualTable",    N2Oopt_01,     { N2Oopt_2 && dualTable }
    ; field =   ""
      field =   "If ST2 off Retard Ignition by"      N2OAngle,      { N2Oopt_2}
    ; field =   ""
      field =   "Nitrous delay after launch",        N2Odel_launch, { N2Oopt_2 && launch_opt_on    }
      field =   "Nitrous delay after flat shift",    N2Odel_flat,   { N2Oopt_2 && launch_opt_on    }
;not yet implemented field = "Nitrous fuel hold on", N2Oholdon,     { N2Oopt_2 }
      field =   ""

      field =   "Nitrous stage 2",                  N2Oopt_3,     { N2Oopt_2 }

   dialog = N2OSystem2, "Nitrous System stage 2"
      field = "Enable stage 2 above",             N2O2Rpm
      field = "Max RPM",                          N2O2RpmMax
      field = "delay after stage1",               N2O2delay
      field = "Retard Ignition by",               N2O2Angle
      field = "Additional Fuel PW @ N2O min rpm", N2O2PWLo
      field = "Additional Fuel PW @ N2O Max RPM", N2O2PWHi

    dialog = boostctlSettings, "Boost Control Settings"
      field = "Boost control Enabled",		  boost_ctl_settings_on
      field = "Solenoid Frequency",		  boost_ctl_settings_freq, { boost_ctl_settings_on && !boost_ctl_settings_remote }
      field = "Control Interval",                 boost_ctl_ms, {boost_ctl_settings_on}
      field = ""
      field = "Boost Control Location",           boost_ctl_settings_remote, { (boost_ctl_settings_on) && (can_poll == 3) && (enable_pollports) && (ports_dir) }



( run in 3.095 seconds using v1.01-cache-2.11-cpan-d7f47b0818f )