Index: src/mlx/checks.py
===================================================================
--- src/mlx/checks.py	(revision 307)
+++ src/mlx/checks.py	(revision 314)
@@ -301,5 +301,6 @@
     def _changed(self, oldState, state):
         """Determine if the value has changed."""
-        return self._getValue(oldState)!=self._getValue(state)
+        currentValue = self._getValue(state)
+        return currentValue is not None and self._getValue(oldState)!=currentValue
 
 #---------------------------------------------------------------------------------------
@@ -759,15 +760,16 @@
     def isCondition(self, flight, aircraft, oldState, state):
         """Check if the fault condition holds."""
-        return (flight.stage==const.STAGE_BOARDING and \
-                state.landingLightsOn and state.onTheGround) or \
-               (flight.stage==const.STAGE_TAKEOFF and \
-                not state.landingLightsOn and not state.onTheGround) or \
-               (flight.stage in [const.STAGE_CLIMB, const.STAGE_CRUISE,
-                                 const.STAGE_DESCENT] and \
-                state.landingLightsOn and state.altitude>12500) or \
-               (flight.stage==const.STAGE_LANDING and \
-                not state.landingLightsOn and state.onTheGround) or \
-               (flight.stage==const.STAGE_PARKING and \
-                state.landingLightsOn and state.onTheGround)
+        return state.landingLightsOn is not None and \
+               ((flight.stage==const.STAGE_BOARDING and \
+                 state.landingLightsOn and state.onTheGround) or \
+                (flight.stage==const.STAGE_TAKEOFF and \
+                 not state.landingLightsOn and not state.onTheGround) or \
+                (flight.stage in [const.STAGE_CLIMB, const.STAGE_CRUISE,
+                                  const.STAGE_DESCENT] and \
+                 state.landingLightsOn and state.altitude>12500) or \
+                (flight.stage==const.STAGE_LANDING and \
+                 not state.landingLightsOn and state.onTheGround) or \
+                (flight.stage==const.STAGE_PARKING and \
+                 state.landingLightsOn and state.onTheGround))
                
     def logFault(self, flight, aircraft, logger, oldState, state):
Index: src/mlx/fs.py
===================================================================
--- src/mlx/fs.py	(revision 298)
+++ src/mlx/fs.py	(revision 314)
@@ -215,5 +215,7 @@
     - antiCollisionLightsOn: a boolean indicating if the anti-collision lights are on
     - strobeLightsOn: a boolean indicating if the strobe lights are on
-    - landingLightsOn: a boolean indicating if the landing lights are on
+    - landingLightsOn: a boolean indicating if the landing lights are on. If
+    the detection of the state of the landing lights is unreliable, and should
+    not be considered, this is set to None.
     - pitotHeatOn: a boolean indicating if the pitot heat is on
     - parking: a boolean indicating if the parking brake is set
@@ -225,6 +227,8 @@
     (float) 
     - altimeter: the altimeter setting in hPa (float)
-    - nav1: the frequency of the NAV1 radio in MHz (string)
-    - nav2: the frequency of the NAV1 radio in MHz (string)
+    - nav1: the frequency of the NAV1 radio in MHz (string). Can be None, if
+    the frequency is unreliable or meaningless.
+    - nav2: the frequency of the NAV1 radio in MHz (string). Can be None, if
+    the frequency is unreliable or meaningless.
     - squawk: the transponder code (string)
     - windSpeed: the speed of the wind at the aircraft in knots (float)
Index: src/mlx/fsuipc.py
===================================================================
--- src/mlx/fsuipc.py	(revision 298)
+++ src/mlx/fsuipc.py	(revision 314)
@@ -896,4 +896,7 @@
             return False
 
+        print "fsuipc.Simulator: new aircraft name and air file path: %s, %s" % \
+              (name, airPath)
+
         self._aircraftName = aircraftName
         needNew = self._aircraftModel is None
@@ -1661,4 +1664,5 @@
 
         return state
+
 #------------------------------------------------------------------------------
 
@@ -1696,4 +1700,33 @@
         """Get the name for this aircraft model."""
         return "FSUIPC/Generic Fokker 70"
+
+#------------------------------------------------------------------------------
+
+class DAF70Model(F70Model):
+    """Model for the Digital Aviation F70 implementation on FS9."""
+    @staticmethod
+    def doesHandle(aircraft, (name, airPath)):
+        """Determine if this model handler handles the aircraft with the given
+        name."""
+        return aircraft.type == const.AIRCRAFT_F70 and \
+               (airPath.endswith("fokker70_2k4_v4.1.air") or
+                airPath.endswith("fokker70_2k4_v4.3.air"))
+
+    @property
+    def name(self):
+        """Get the name for this aircraft model."""
+        return "FSUIPC/Digital Aviation Fokker 70"
+
+    def getAircraftState(self, aircraft, timestamp, data):
+        """Get the aircraft state.
+
+        Get it from the parent, and then invert the pitot heat state."""
+        state = super(DAF70Model, self).getAircraftState(aircraft,
+                                                         timestamp,
+                                                         data)
+        state.landingLightsOn = None
+        state.nav2 = None
+
+        return state
 
 #------------------------------------------------------------------------------
@@ -1881,4 +1914,5 @@
 AircraftModel.registerSpecial(PMDGBoeing737NGModel)
 AircraftModel.registerSpecial(DreamwingsDH8DModel)
-
-#------------------------------------------------------------------------------
+AircraftModel.registerSpecial(DAF70Model)
+
+#------------------------------------------------------------------------------
Index: src/mlx/gui/monitor.py
===================================================================
--- src/mlx/gui/monitor.py	(revision 300)
+++ src/mlx/gui/monitor.py	(revision 314)
@@ -191,4 +191,6 @@
 
         self.add(alignment)
+
+        self._previousState = None
 
         self.setData()
@@ -249,4 +251,5 @@
             self._antiCollisionLightsOn.set_sensitive(False)
             self._strobeLightsOn.set_sensitive(False)
+            self._landingLightsOn.set_text("LANDING")
             self._landingLightsOn.set_sensitive(False)
             self._pitotHeatOn.set_sensitive(False)
@@ -285,6 +288,6 @@
             self._altimeter.set_text("%.0f" % (aircraftState.altimeter,))
             self._squawk.set_text(aircraftState.squawk)
-            self._nav1.set_text(aircraftState.nav1)
-            self._nav2.set_text(aircraftState.nav2)
+            self._nav1.set_text("-" if aircraftState.nav1 is None else aircraftState.nav1)
+            self._nav2.set_text("-" if aircraftState.nav2 is None else aircraftState.nav2)
 
             fuelStr = ""
@@ -317,5 +320,14 @@
             self._antiCollisionLightsOn.set_sensitive(aircraftState.antiCollisionLightsOn)
             self._strobeLightsOn.set_sensitive(aircraftState.strobeLightsOn)
-            self._landingLightsOn.set_sensitive(aircraftState.landingLightsOn)
+
+            if self._previousState is None or \
+               ((self._previousState.landingLightsOn is None)!=
+                (aircraftState.landingLightsOn is None)):
+                if aircraftState.landingLightsOn is None:
+                    self._landingLightsOn.set_markup('<span strikethrough="true">LANDING</span>')
+                else:
+                    self._landingLightsOn.set_text("LANDING")
+            self._landingLightsOn.set_sensitive(aircraftState.landingLightsOn is True)
+            
             self._pitotHeatOn.set_sensitive(aircraftState.pitotHeatOn)
             self._parking.set_sensitive(aircraftState.parking)
Index: src/mlx/pyuipc_sim.py
===================================================================
--- src/mlx/pyuipc_sim.py	(revision 298)
+++ src/mlx/pyuipc_sim.py	(revision 314)
@@ -1330,5 +1330,23 @@
     def do_set(self, args):
         """Handle the set command."""
-        arguments = args.split()
+        arguments = []
+        inWord = False
+        inQuote = False
+        word = ""
+        for c in args:
+            if c.isspace() and not inQuote:
+                if inWord:
+                    arguments.append(word)
+                    word = ""
+                    inWord = False
+            elif c=='"':
+                inQuote = not inQuote
+            else:
+                inWord = True
+                word += c
+
+        if inWord:
+            arguments.append(word)
+            
         names = []
         data = []
Index: test/f70.vaflight
===================================================================
--- test/f70.vaflight	(revision 314)
+++ test/f70.vaflight	(revision 314)
@@ -0,0 +1,16 @@
+callsign=MA950
+date=2012-05-7
+dep_airport=LHBP
+dest_airport=LHDC
+planecode=F70
+planetype=Fokker F70
+tail_nr=HA-LON
+passenger=82
+crew=5
+bag=300
+cargo=875
+mail=125
+flight_route=NORAH L140 NARKA
+departure_time=08\:00\:00
+arrival_time=08\:40\:00
+foglalas_id=100098
Index: test/test2.txt
===================================================================
--- test/test2.txt	(revision 314)
+++ test/test2.txt	(revision 314)
@@ -0,0 +1,84 @@
+set airPath="C:\Program Files\Microsoft Games\FS9\Aircraft\Cessna\fokker70_2k4_v4.3.air"
+set lights=0
+set zfw=46741 hour=7 min=50
+set latitude=47.44 longitude=19.26
+set parking=no
+set gs=10 ias=10
+set flapsControl=37.5
+set gs=60 ias=60
+set lights=21
+set gs=80 ias=80
+set gs=90 ias=90
+set gs=100 ias=100
+set gs=120 ias=120
+set onTheGround=no
+set altitude=600
+set noseGear=0
+set altitude=2000
+set flapsControl=0
+set altitude=10000
+set lights=17
+set ias=400
+set altitude=22001
+set vs=-200
+set flapsControl=87.5
+set ias=130 gs=130
+set altitude=557
+set ias=125 gs=125
+set radioAltitude=3200
+set radioAltitude=3100
+set radioAltitude=3000
+set radioAltitude=2900
+set radioAltitude=2800
+set radioAltitude=2700
+set radioAltitude=2600
+set radioAltitude=2521
+set radioAltitude=2510
+set radioAltitude=2500
+set radioAltitude=2500
+set radioAltitude=2499
+set radioAltitude=2520
+set radioAltitude=2400
+set radioAltitude=2300
+set radioAltitude=2200
+set radioAltitude=2100
+set radioAltitude=2018
+set radioAltitude=1950
+set radioAltitude=1800
+set radioAltitude=1600
+set radioAltitude=1550
+set radioAltitude=1450
+set radioAltitude=1590
+set radioAltitude=1499
+set radioAltitude=1400
+set radioAltitude=1300
+set radioAltitude=1200
+set radioAltitude=1200
+set radioAltitude=1100
+set radioAltitude=1001
+set radioAltitude=912
+set radioAltitude=832
+set radioAltitude=705
+set radioAltitude=599
+set radioAltitude=501
+set radioAltitude=412
+set radioAltitude=331
+set radioAltitude=241
+set radioAltitude=102
+set radioAltitude=90
+set noseGear=100
+set radioAltitude=80
+set radioAltitude=70
+set radioAltitude=60
+set radioAltitude=51
+set radioAltitude=42
+set radioAltitude=29
+set radioAltitude=9
+set altitude=517
+set latitude=47.49 longitude=21.62
+set onTheGround=yes
+set ias=45 gs=45
+set ias=35 gs=35
+set ias=20 gs=20
+set ias=0 gs=0
+set parking=yes
