diff --git a/Models/Instruments/MCDU1/MCDU1.xml b/Models/Instruments/MCDU1/MCDU1.xml
index 6bce3f67..186806bd 100644
--- a/Models/Instruments/MCDU1/MCDU1.xml
+++ b/Models/Instruments/MCDU1/MCDU1.xml
@@ -136,6 +136,28 @@
+
+ CLB
+ PERF/CLB/CLB.xml
+
+ 180
+ 180
+ 90
+
+
+
+
+ /systems/electrical/bus/ac1
+ 25
+
+
+ /MCDU[0]/page
+ CLB
+
+
+
+
+
DATA2
DATA2/DATA2.xml
diff --git a/Models/Instruments/MCDU1/PERF/CLB/CLB.xml b/Models/Instruments/MCDU1/PERF/CLB/CLB.xml
new file mode 100644
index 00000000..31e352b3
--- /dev/null
+++ b/Models/Instruments/MCDU1/PERF/CLB/CLB.xml
@@ -0,0 +1,539 @@
+
+
+
+
+
+
+ EMPTY.ac
+
+
+
+
+ page
+
+ -0.001
+ 0.0
+ 0.083
+
+ center-center
+ yz-plane
+ text-value
+ CLB
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ actmode
+
+ -0.001
+ -0.045
+ 0.0755
+
+ left-center
+ yz-plane
+ text-value
+ ACT MODE
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ actmode2
+
+ -0.001
+ -0.045
+ 0.0705
+
+ left-center
+ yz-plane
+ text-value
+ MANAGED
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ timedest
+
+ -0.001
+ -0.0
+ 0.0755
+
+ center-center
+ yz-plane
+ text-value
+ TIME DEST
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ timedest2
+
+ -0.001
+ -0.0
+ 0.0715
+
+ center-center
+ yz-plane
+ text-value
+ ---
+ false
+ helvetica_medium.txf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ efob
+
+ -0.001
+ 0.045
+ 0.0755
+
+ right-center
+ yz-plane
+ text-value
+ EFOB
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ efob2
+
+ -0.001
+ 0.045
+ 0.0715
+
+ right-center
+ yz-plane
+ text-value
+ ---
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ ci
+
+ -0.001
+ -0.045
+ 0.065
+
+ left-center
+ yz-plane
+ text-value
+ CI
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ ci2
+
+ -0.001
+ -0.045
+ 0.0605
+
+ left-center
+ yz-plane
+ text-value
+ ---
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+ ci3
+
+ -0.001
+ -0.045
+ 0.0605
+
+ left-center
+ yz-plane
+ text-value
+ %s
+ false
+ BoeingCDU-Large.ttf
+ /FMGC/internal/cost-index
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ select
+ ci2
+
+ /FMGC/internal/cost-index-set
+
+
+
+ select
+ ci3
+
+ /FMGC/internal/cost-index-set
+
+
+
+
+ managed
+
+ -0.001
+ -0.045
+ 0.0545
+
+ left-center
+ yz-plane
+ text-value
+ MANAGED
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ presel
+
+ -0.001
+ -0.045
+ 0.0435
+
+ left-center
+ yz-plane
+ text-value
+ PRESEL
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ presel2
+
+ -0.001
+ -0.045
+ 0.0385
+
+ left-center
+ yz-plane
+ text-value
+ *[ ]
+ false
+ helvetica_medium.txf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ previous
+
+ -0.001
+ -0.045
+ 0.0230
+
+ left-center
+ yz-plane
+ text-value
+ PREV
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+ phase2
+
+ -0.001
+ -0.045
+ 0.0190
+
+ left-center
+ yz-plane
+ text-value
+ <PHASE
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ next
+
+ -0.001
+ 0.041
+ 0.0230
+
+ right-center
+ yz-plane
+ text-value
+ NEXT
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+ phase
+
+ -0.001
+ 0.043
+ 0.0190
+
+ right-center
+ yz-plane
+ text-value
+ PHASE>
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+
+
+ material
+ page
+ actmode
+ managed
+ ci
+ efob
+ trans
+ next
+ phase
+ previous
+ phase2
+ timedest
+
+ 1
+ 1
+ 1
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+ 1
+ 1
+ 1
+
+
+
+
+
+ material
+ efob2
+ actmode2
+ timedest2
+
+ 0.2
+ 0.4
+ 0.2
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+ 0.2
+ 0.4
+ 0.2
+
+
+
+
+
+ material
+ presel2
+ ci2
+ ci3
+
+ 0
+ 0.5
+ 0.7
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0.5
+ 0.7
+
+
+
+
diff --git a/Models/Instruments/MCDU1/PERF/CLB/EMPTY.ac b/Models/Instruments/MCDU1/PERF/CLB/EMPTY.ac
new file mode 100644
index 00000000..4dd7e1f9
--- /dev/null
+++ b/Models/Instruments/MCDU1/PERF/CLB/EMPTY.ac
@@ -0,0 +1,3 @@
+AC3Db
+OBJECT world
+kids 0
diff --git a/Models/Instruments/MCDU1/PERF/CLB/bg.jpg b/Models/Instruments/MCDU1/PERF/CLB/bg.jpg
new file mode 100644
index 00000000..b6eece57
Binary files /dev/null and b/Models/Instruments/MCDU1/PERF/CLB/bg.jpg differ
diff --git a/Models/Instruments/MCDU2/MCDU2.xml b/Models/Instruments/MCDU2/MCDU2.xml
index f9522985..7b645a46 100644
--- a/Models/Instruments/MCDU2/MCDU2.xml
+++ b/Models/Instruments/MCDU2/MCDU2.xml
@@ -136,6 +136,28 @@
+
+ CLB
+ PERF/CLB/CLB.xml
+
+ 180
+ 180
+ 90
+
+
+
+
+ /systems/electrical/bus/ac1
+ 25
+
+
+ /MCDU[1]/page
+ CLB
+
+
+
+
+
DATA2
DATA2/DATA2.xml
diff --git a/Models/Instruments/MCDU2/PERF/CLB/CLB.xml b/Models/Instruments/MCDU2/PERF/CLB/CLB.xml
new file mode 100644
index 00000000..31e352b3
--- /dev/null
+++ b/Models/Instruments/MCDU2/PERF/CLB/CLB.xml
@@ -0,0 +1,539 @@
+
+
+
+
+
+
+ EMPTY.ac
+
+
+
+
+ page
+
+ -0.001
+ 0.0
+ 0.083
+
+ center-center
+ yz-plane
+ text-value
+ CLB
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ actmode
+
+ -0.001
+ -0.045
+ 0.0755
+
+ left-center
+ yz-plane
+ text-value
+ ACT MODE
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ actmode2
+
+ -0.001
+ -0.045
+ 0.0705
+
+ left-center
+ yz-plane
+ text-value
+ MANAGED
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ timedest
+
+ -0.001
+ -0.0
+ 0.0755
+
+ center-center
+ yz-plane
+ text-value
+ TIME DEST
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ timedest2
+
+ -0.001
+ -0.0
+ 0.0715
+
+ center-center
+ yz-plane
+ text-value
+ ---
+ false
+ helvetica_medium.txf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ efob
+
+ -0.001
+ 0.045
+ 0.0755
+
+ right-center
+ yz-plane
+ text-value
+ EFOB
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ efob2
+
+ -0.001
+ 0.045
+ 0.0715
+
+ right-center
+ yz-plane
+ text-value
+ ---
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ ci
+
+ -0.001
+ -0.045
+ 0.065
+
+ left-center
+ yz-plane
+ text-value
+ CI
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ ci2
+
+ -0.001
+ -0.045
+ 0.0605
+
+ left-center
+ yz-plane
+ text-value
+ ---
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+ ci3
+
+ -0.001
+ -0.045
+ 0.0605
+
+ left-center
+ yz-plane
+ text-value
+ %s
+ false
+ BoeingCDU-Large.ttf
+ /FMGC/internal/cost-index
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ select
+ ci2
+
+ /FMGC/internal/cost-index-set
+
+
+
+ select
+ ci3
+
+ /FMGC/internal/cost-index-set
+
+
+
+
+ managed
+
+ -0.001
+ -0.045
+ 0.0545
+
+ left-center
+ yz-plane
+ text-value
+ MANAGED
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ presel
+
+ -0.001
+ -0.045
+ 0.0435
+
+ left-center
+ yz-plane
+ text-value
+ PRESEL
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+
+ presel2
+
+ -0.001
+ -0.045
+ 0.0385
+
+ left-center
+ yz-plane
+ text-value
+ *[ ]
+ false
+ helvetica_medium.txf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ previous
+
+ -0.001
+ -0.045
+ 0.0230
+
+ left-center
+ yz-plane
+ text-value
+ PREV
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+ phase2
+
+ -0.001
+ -0.045
+ 0.0190
+
+ left-center
+ yz-plane
+ text-value
+ <PHASE
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ next
+
+ -0.001
+ 0.041
+ 0.0230
+
+ right-center
+ yz-plane
+ text-value
+ NEXT
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0040
+
+ 64
+ 64
+
+
+
+ phase
+
+ -0.001
+ 0.043
+ 0.0190
+
+ right-center
+ yz-plane
+ text-value
+ PHASE>
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+
+
+ material
+ page
+ actmode
+ managed
+ ci
+ efob
+ trans
+ next
+ phase
+ previous
+ phase2
+ timedest
+
+ 1
+ 1
+ 1
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+ 1
+ 1
+ 1
+
+
+
+
+
+ material
+ efob2
+ actmode2
+ timedest2
+
+ 0.2
+ 0.4
+ 0.2
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+ 0.2
+ 0.4
+ 0.2
+
+
+
+
+
+ material
+ presel2
+ ci2
+ ci3
+
+ 0
+ 0.5
+ 0.7
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0.5
+ 0.7
+
+
+
+
diff --git a/Models/Instruments/MCDU2/PERF/CLB/EMPTY.ac b/Models/Instruments/MCDU2/PERF/CLB/EMPTY.ac
new file mode 100644
index 00000000..4dd7e1f9
--- /dev/null
+++ b/Models/Instruments/MCDU2/PERF/CLB/EMPTY.ac
@@ -0,0 +1,3 @@
+AC3Db
+OBJECT world
+kids 0
diff --git a/Models/Instruments/MCDU2/PERF/CLB/bg.jpg b/Models/Instruments/MCDU2/PERF/CLB/bg.jpg
new file mode 100644
index 00000000..b6eece57
Binary files /dev/null and b/Models/Instruments/MCDU2/PERF/CLB/bg.jpg differ
diff --git a/Nasal/MCDU1.nas b/Nasal/MCDU1.nas
index 8ecb832f..2555ec07 100644
--- a/Nasal/MCDU1.nas
+++ b/Nasal/MCDU1.nas
@@ -17,20 +17,29 @@ var MCDU_reset = func {
}
var lskbutton = func(btn) {
- if (btn == "4") {
+ if (btn == "2") {
+ if (getprop("/MCDU[0]/page") == "INITA") {
+ PerfInput("L2");
+ }
+ } else if (btn == "4") {
if (getprop("/MCDU[0]/page") == "DATA") {
setprop("/MCDU[0]/page", "STATUS");
}
} else if (btn == "5") {
if (getprop("/MCDU[0]/page") == "INITA") {
initInputA("L5");
+ } else if (getprop("/MCDU[0]/page") == "CLB") {
+ PerfCLBInput("L5");
}
} else if (btn == "6") {
if (getprop("/MCDU[0]/page") == "INITA") {
initInputA("L6");
+ } else if (getprop("/MCDU[0]/page") == "CLB") {
+ PerfCLBInput("L6");
}
}
}
+
var initInputA = func(key) {
var scratchpad = getprop("/MCDU[0]/scratchpad");
@@ -79,8 +88,45 @@ var initInputA = func(key) {
}
}
+var PerfCLBInput = func(key) {
+ var scratchpad = getprop("/MCDU[0]/scratchpad");
+ if (key == "L5") {
+ if (scratchpad == "CLR") {
+ setprop("/FMGC/internal/cost-index", 0);
+ setprop("/FMGC/internal/cost-index-set", 0);
+ setprop("/MCDU[0]/scratchpad", "");
+ } else {
+ var ci = int(scratchpad);
+ var cis = size(scratchpad);
+ if (cis >= 1 and cis <= 3) {
+ if (cis >= 0 and cis <= 120) {
+ setprop("/FMGC/internal/cost-index", ci);
+ setprop("/FMGC/internal/cost-index-set", 1);
+ setprop("/MCDU[0]/scratchpad", "");
+ } else {
+ setprop("/MCDU[0]/scratchpad", "NOT ALLOWED");
+ }
+ } else {
+ setprop("/MCDU[0]/scratchpad", "NOT ALLOWED");
+ }
+ }
+ } else if (key == "L6") {
+ setprop("/MCDU[0]/page", "TO");
+ }
+}
+
+var PerfTOInput = func(key) {
+ if (key == "R6") {
+ setprop("/MCDU[0]/page", "CLB");
+ }
+}
+
var rskbutton = func(btn) {
- # LOL Nothing here :D
+ if (btn == "6") {
+ if (getprop("/MCDU[0]/page") == "TO") {
+ PerfTOInput("R6");
+ }
+ }
}
var arrowbutton = func(btn) {
diff --git a/Nasal/MCDU2.nas b/Nasal/MCDU2.nas
index 2615a390..307148db 100644
--- a/Nasal/MCDU2.nas
+++ b/Nasal/MCDU2.nas
@@ -17,17 +17,25 @@ var MCDU_reset = func {
}
var lskbutton = func(btn) {
- if (btn == "4") {
+ if (btn == "2") {
+ if (getprop("/MCDU[1]/page") == "INITA") {
+ PerfInput("L2");
+ }
+ } else if (btn == "4") {
if (getprop("/MCDU[1]/page") == "DATA") {
setprop("/MCDU[1]/page", "STATUS");
}
} else if (btn == "5") {
if (getprop("/MCDU[1]/page") == "INITA") {
initInputA("L5");
+ } else if (getprop("/MCDU[1]/page") == "CLB") {
+ PerfCLBInput("L5");
}
} else if (btn == "6") {
if (getprop("/MCDU[1]/page") == "INITA") {
initInputA("L6");
+ } else if (getprop("/MCDU[1]/page") == "CLB") {
+ PerfCLBInput("L6");
}
}
}
@@ -79,8 +87,45 @@ var initInputA = func(key) {
}
}
+var PerfCLBInput = func(key) {
+ var scratchpad = getprop("/MCDU[1]/scratchpad");
+ if (key == "L5") {
+ if (scratchpad == "CLR") {
+ setprop("/FMGC/internal/cost-index", 0);
+ setprop("/FMGC/internal/cost-index-set", 0);
+ setprop("/MCDU[1]/scratchpad", "");
+ } else {
+ var ci = int(scratchpad);
+ var cis = size(scratchpad);
+ if (cis >= 1 and cis <= 3) {
+ if (cis >= 0 and cis <= 120) {
+ setprop("/FMGC/internal/cost-index", ci);
+ setprop("/FMGC/internal/cost-index-set", 1);
+ setprop("/MCDU[1]/scratchpad", "");
+ } else {
+ setprop("/MCDU[1]/scratchpad", "NOT ALLOWED");
+ }
+ } else {
+ setprop("/MCDU[1]/scratchpad", "NOT ALLOWED");
+ }
+ }
+ } else if (key == "L6") {
+ setprop("/MCDU[1]/page", "TO");
+ }
+}
+
+var PerfTOInput = func(key) {
+ if (key == "R6") {
+ setprop("/MCDU[1]/page", "CLB");
+ }
+}
+
var rskbutton = func(btn) {
- # LOL Nothing here :D
+ if (btn == "6") {
+ if (getprop("/MCDU[1]/page") == "TO") {
+ PerfTOInput("R6");
+ }
+ }
}
var arrowbutton = func(btn) {