diff --git a/runtime/syntax/nqc.vim b/runtime/syntax/nqc.vim
new file mode 100644
index 0000000..0a3cd6b
--- /dev/null
+++ b/runtime/syntax/nqc.vim
@@ -0,0 +1,378 @@
+" Vim syntax file
+" Language:	NQC - Not Quite C, for LEGO mindstorms
+"		NQC homepage: http://www.enteract.com/~dbaum/nqc/
+" Maintainer:	Stefan Scherer <stefan@enotes.de>
+" Last Change:	2001 May 10
+" URL:		http://www.enotes.de/twiki/pub/Home/LegoMindstorms/nqc.vim
+" Filenames:	.nqc
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+" Statements
+syn keyword	nqcStatement	break return continue start stop abs sign
+syn keyword     nqcStatement	sub task
+syn keyword     nqcLabel	case default
+syn keyword	nqcConditional	if else switch
+syn keyword	nqcRepeat	while for do until repeat
+
+" Scout and RCX2
+syn keyword	nqcEvents	acquire catch monitor
+
+" types and classes
+syn keyword	nqcType		int true false void
+syn keyword	nqcStorageClass	asm const inline
+
+
+
+" Sensors --------------------------------------------
+" Input Sensors
+syn keyword     nqcConstant	SENSOR_1 SENSOR_2 SENSOR_3
+
+" Types for SetSensorType()
+syn keyword     nqcConstant	SENSOR_TYPE_TOUCH SENSOR_TYPE_TEMPERATURE
+syn keyword     nqcConstant	SENSOR_TYPE_LIGHT SENSOR_TYPE_ROTATION
+syn keyword     nqcConstant	SENSOR_LIGHT SENSOR_TOUCH
+
+" Modes for SetSensorMode()
+syn keyword     nqcConstant	SENSOR_MODE_RAW SENSOR_MODE_BOOL
+syn keyword     nqcConstant	SENSOR_MODE_EDGE SENSOR_MODE_PULSE
+syn keyword     nqcConstant	SENSOR_MODE_PERCENT SENSOR_MODE_CELSIUS
+syn keyword     nqcConstant	SENSOR_MODE_FAHRENHEIT SENSOR_MODE_ROTATION
+
+" Sensor configurations for SetSensor()
+syn keyword     nqcConstant	SENSOR_TOUCH SENSOR_LIGHT SENSOR_ROTATION
+syn keyword     nqcConstant	SENSOR_CELSIUS SENSOR_FAHRENHEIT SENSOR_PULSE
+syn keyword     nqcConstant	SENSOR_EDGE
+
+" Functions - All
+syn keyword	nqcFunction	ClearSensor
+syn keyword	nqcFunction	SensorValue SensorType
+
+" Functions - RCX
+syn keyword	nqcFunction	SetSensor SetSensorType
+syn keyword	nqcFunction	SensorValueBool
+
+" Functions - RCX, CyberMaster
+syn keyword	nqcFunction	SetSensorMode SensorMode
+
+" Functions - RCX, Scout
+syn keyword	nqcFunction	SensorValueRaw
+
+" Functions - Scout
+syn keyword	nqcFunction	SetSensorLowerLimit SetSensorUpperLimit
+syn keyword	nqcFunction	SetSensorHysteresis CalibrateSensor
+
+
+" Outputs --------------------------------------------
+" Outputs for On(), Off(), etc.
+syn keyword     nqcConstant	OUT_A OUT_B OUT_C
+
+" Modes for SetOutput()
+syn keyword     nqcConstant	OUT_ON OUT_OFF OUT_FLOAT
+
+" Directions for SetDirection()
+syn keyword     nqcConstant	OUT_FWD OUT_REV OUT_TOGGLE
+
+" Output power for SetPower()
+syn keyword     nqcConstant	OUT_LOW OUT_HALF OUT_FULL
+
+" Functions - All
+syn keyword	nqcFunction	SetOutput SetDirection SetPower OutputStatus
+syn keyword	nqcFunction	On Off Float Fwd Rev Toggle
+syn keyword	nqcFunction	OnFwd OnRev OnFor
+
+" Functions - RXC2, Scout
+syn keyword	nqcFunction	SetGlobalOutput SetGlobalDirection SetMaxPower
+syn keyword	nqcFunction	GlobalOutputStatus
+
+
+" Sound ----------------------------------------------
+" Sounds for PlaySound()
+syn keyword     nqcConstant	SOUND_CLICK SOUND_DOUBLE_BEEP SOUND_DOWN
+syn keyword     nqcConstant	SOUND_UP SOUND_LOW_BEEP SOUND_FAST_UP
+
+" Functions - All
+syn keyword	nqcFunction	PlaySound PlayTone
+
+" Functions - RCX2, Scout
+syn keyword	nqcFunction	MuteSound UnmuteSound ClearSound
+syn keyword	nqcFunction	SelectSounds
+
+
+" LCD ------------------------------------------------
+" Modes for SelectDisplay()
+syn keyword     nqcConstant	DISPLAY_WATCH DISPLAY_SENSOR_1 DISPLAY_SENSOR_2
+syn keyword     nqcConstant	DISPLAY_SENSOR_3 DISPLAY_OUT_A DISPLAY_OUT_B
+syn keyword     nqcConstant	DISPLAY_OUT_C
+" RCX2
+syn keyword     nqcConstant	DISPLAY_USER
+
+" Functions - RCX
+syn keyword	nqcFunction	SelectDisplay
+" Functions - RCX2
+syn keyword	nqcFunction	SetUserDisplay
+
+
+" Communication --------------------------------------
+" Messages - RCX, Scout ------------------------------
+" Tx power level for SetTxPower()
+syn keyword     nqcConstant	TX_POWER_LO TX_POWER_HI
+
+" Functions - RCX, Scout
+syn keyword	nqcFunction	Message ClearMessage SendMessage SetTxPower
+
+" Serial - RCX2 --------------------------------------
+" for SetSerialComm()
+syn keyword     nqcConstant	SERIAL_COMM_DEFAULT SERIAL_COMM_4800
+syn keyword     nqcConstant	SERIAL_COMM_DUTY25 SERIAL_COMM_76KHZ
+
+" for SetSerialPacket()
+syn keyword     nqcConstant	SERIAL_PACKET_DEFAULT SERIAL_PACKET_PREAMBLE
+syn keyword     nqcConstant	SERIAL_PACKET_NEGATED SERIAL_PACKET_CHECKSUM
+syn keyword     nqcConstant	SERIAL_PACKET_RCX
+
+" Functions - RCX2
+syn keyword	nqcFunction	SetSerialComm SetSerialPacket SetSerialData
+syn keyword	nqcFunction	SerialData SendSerial
+
+" VLL - Scout ----------------------------------------
+" Functions - Scout
+syn keyword	nqcFunction	SendVLL
+
+
+" Timers ---------------------------------------------
+" Functions - All
+syn keyword	nqcFunction	ClearTimer Timer
+
+" Functions - RCX2
+syn keyword	nqcFunction	SetTimer FastTimer
+
+
+" Counters -------------------------------------------
+" Functions - RCX2, Scout
+syn keyword	nqcFunction	ClearCounter IncCounter DecCounter Counter
+
+
+" Access Control -------------------------------------
+syn keyword     nqcConstant	ACQUIRE_OUT_A ACQUIRE_OUT_B ACQUIRE_OUT_C
+syn keyword     nqcConstant	ACQUIRE_SOUND
+" RCX2 only
+syn keyword     nqcConstant	ACQUIRE_USER_1 ACQUIRE_USER_2 ACQUIRE_USER_3
+syn keyword     nqcConstant	ACQUIRE_USER_4
+
+" Functions - RCX2, Scout
+syn keyword	nqcFunction	SetPriority
+
+
+" Events ---------------------------------------------
+" RCX2 Events
+syn keyword     nqcConstant	EVENT_TYPE_PRESSED EVENT_TYPE_RELEASED
+syn keyword     nqcConstant	EVENT_TYPE_PULSE EVENT_TYPE_EDGE
+syn keyword     nqcConstant	EVENT_TYPE_FAST_CHANGE EVENT_TYPE_LOW
+syn keyword     nqcConstant	EVENT_TYPE_NORMAL EVENT_TYPE_HIGH
+syn keyword     nqcConstant	EVENT_TYPE_CLICK EVENT_TYPE_DOUBLECLICK
+syn keyword     nqcConstant	EVENT_TYPE_MESSAGE
+
+" Scout Events
+syn keyword     nqcConstant	EVENT_1_PRESSED EVENT_1_RELEASED
+syn keyword     nqcConstant	EVENT_2_PRESSED EVENT_2_RELEASED
+syn keyword     nqcConstant	EVENT_LIGHT_HIGH EVENT_LIGHT_NORMAL
+syn keyword     nqcConstant	EVENT_LIGHT_LOW EVENT_LIGHT_CLICK
+syn keyword     nqcConstant	EVENT_LIGHT_DOUBLECLICK EVENT_COUNTER_0
+syn keyword     nqcConstant	EVENT_COUNTER_1 EVENT_TIMER_0 EVENT_TIMER_1
+syn keyword     nqcConstant	EVENT_TIMER_2 EVENT_MESSAGE
+
+" Functions - RCX2, Scout
+syn keyword	nqcFunction	ActiveEvents Event
+
+" Functions - RCX2
+syn keyword	nqcFunction	CurrentEvents
+syn keyword	nqcFunction	SetEvent ClearEvent ClearAllEvents EventState
+syn keyword	nqcFunction	CalibrateEvent SetUpperLimit UpperLimit
+syn keyword	nqcFunction	SetLowerLimit LowerLimit SetHysteresis
+syn keyword	nqcFunction	Hysteresis
+syn keyword	nqcFunction	SetClickTime ClickTime SetClickCounter
+syn keyword	nqcFunction	ClickCounter
+
+" Functions - Scout
+syn keyword	nqcFunction	SetSensorClickTime SetCounterLimit
+syn keyword	nqcFunction	SetTimerLimit
+
+
+" Data Logging ---------------------------------------
+" Functions - RCX
+syn keyword	nqcFunction	CreateDatalog AddToDatalog
+syn keyword	nqcFunction	UploadDatalog
+
+
+" General Features -----------------------------------
+" Functions - All
+syn keyword	nqcFunction	Wait StopAllTasks Random
+syn keyword	nqcFunction	SetSleepTime SleepNow
+
+" Functions - RCX
+syn keyword	nqcFunction	Program Watch SetWatch
+
+" Functions - RCX2
+syn keyword	nqcFunction	SetRandomSeed SelectProgram
+syn keyword	nqcFunction	BatteryLevel FirmwareVersion
+
+" Functions - Scout
+" Parameters for SetLight()
+syn keyword     nqcConstant	LIGHT_ON LIGHT_OFF
+syn keyword	nqcFunction	SetScoutRules ScoutRules SetScoutMode
+syn keyword	nqcFunction	SetEventFeedback EventFeedback SetLight
+
+" additional CyberMaster defines
+syn keyword     nqcConstant	OUT_L OUT_R OUT_X
+syn keyword     nqcConstant	SENSOR_L SENSOR_M SENSOR_R
+" Functions - CyberMaster
+syn keyword	nqcFunction	Drive OnWait OnWaitDifferent
+syn keyword	nqcFunction	ClearTachoCounter TachoCount TachoSpeed
+syn keyword	nqcFunction	ExternalMotorRunning AGC
+
+
+
+" nqcCommentGroup allows adding matches for special things in comments
+syn keyword	nqcTodo		contained TODO FIXME XXX
+syn cluster	nqcCommentGroup	contains=nqcTodo
+
+"when wanted, highlight trailing white space
+if exists("nqc_space_errors")
+  if !exists("nqc_no_trail_space_error")
+    syn match	nqcSpaceError	display excludenl "\s\+$"
+  endif
+  if !exists("nqc_no_tab_space_error")
+    syn match	nqcSpaceError	display " \+\t"me=e-1
+  endif
+endif
+
+"catch errors caused by wrong parenthesis and brackets
+syn cluster	nqcParenGroup	contains=nqcParenError,nqcIncluded,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcCommentSkip,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers
+if exists("nqc_no_bracket_error")
+  syn region	nqcParen	transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen
+  " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine
+  syn region	nqcCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcParen
+  syn match	nqcParenError	display ")"
+  syn match	nqcErrInParen	display contained "[{}]"
+else
+  syn region	nqcParen		transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen,nqcErrInBracket,nqcCppBracket
+  " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine
+  syn region	nqcCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInBracket,nqcParen,nqcBracket
+  syn match	nqcParenError	display "[\])]"
+  syn match	nqcErrInParen	display contained "[\]{}]"
+  syn region	nqcBracket	transparent start='\[' end=']' contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcCppParen,nqcCppBracket
+  " nqcCppBracket: same as nqcParen but ends at end-of-line; used in nqcDefine
+  syn region	nqcCppBracket	transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcParen,nqcBracket
+  syn match	nqcErrInBracket	display contained "[);{}]"
+endif
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match	nqcNumbers	display transparent "\<\d\|\.\d" contains=nqcNumber,nqcFloat
+" Same, but without octal error (for comments)
+syn match	nqcNumber	display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+syn match	nqcNumber	display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match	nqcFloat	display contained "\d\+f"
+"floating point number, with dot, optional exponent
+syn match	nqcFloat	display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match	nqcFloat	display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match	nqcFloat	display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+" flag an octal number with wrong digits
+syn case match
+
+syn region	nqcCommentL	start="//" skip="\\$" end="$" keepend contains=@nqcCommentGroup,nqcSpaceError
+syn region	nqcComment	matchgroup=nqcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@nqcCommentGroup,nqcCommentStartError,nqcSpaceError
+
+" keep a // comment separately, it terminates a preproc. conditional
+syntax match	nqcCommentError	display "\*/"
+syntax match	nqcCommentStartError display "/\*" contained
+
+
+
+
+
+syn region	nqcPreCondit	start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=nqcComment,nqcCharacter,nqcCppParen,nqcParenError,nqcNumbers,nqcCommentError,nqcSpaceError
+syn match	nqcPreCondit	display "^\s*#\s*\(else\|endif\)\>"
+if !exists("nqc_no_if0")
+  syn region	nqcCppOut		start="^\s*#\s*if\s\+0\>" end=".\|$" contains=nqcCppOut2
+  syn region	nqcCppOut2	contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=nqcSpaceError,nqcCppSkip
+  syn region	nqcCppSkip	contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=nqcSpaceError,nqcCppSkip
+endif
+syn region	nqcIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match	nqcInclude	display "^\s*#\s*include\>\s*["]" contains=nqcIncluded
+"syn match nqcLineSkip	"\\$"
+syn cluster	nqcPreProcGroup	contains=nqcPreCondit,nqcIncluded,nqcInclude,nqcDefine,nqcErrInParen,nqcErrInBracket,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcParen,nqcBracket
+syn region	nqcDefine	start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" contains=ALLBUT,@nqcPreProcGroup
+syn region	nqcPreProc	start="^\s*#\s*\(pragma\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@nqcPreProcGroup
+
+if !exists("nqc_minlines")
+  if !exists("nqc_no_if0")
+    let nqc_minlines = 50	    " #if 0 constructs can be long
+  else
+    let nqc_minlines = 15	    " mostly for () constructs
+  endif
+endif
+exec "syn sync ccomment nqcComment minlines=" . nqc_minlines
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_nqc_syn_inits")
+  if version < 508
+    let did_nqc_syn_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  " The default methods for highlighting.  Can be overridden later
+  HiLink nqcLabel		Label
+  HiLink nqcConditional		Conditional
+  HiLink nqcRepeat		Repeat
+  HiLink nqcCharacter		Character
+  HiLink nqcNumber		Number
+  HiLink nqcFloat		Float
+  HiLink nqcFunction		Function
+  HiLink nqcParenError		nqcError
+  HiLink nqcErrInParen		nqcError
+  HiLink nqcErrInBracket	nqcError
+  HiLink nqcCommentL		nqcComment
+  HiLink nqcCommentStart	nqcComment
+  HiLink nqcCommentError	nqcError
+  HiLink nqcCommentStartError	nqcError
+  HiLink nqcSpaceError		nqcError
+  HiLink nqcStorageClass	StorageClass
+  HiLink nqcInclude		Include
+  HiLink nqcPreProc		PreProc
+  HiLink nqcDefine		Macro
+  HiLink nqcIncluded		String
+  HiLink nqcError		Error
+  HiLink nqcStatement		Statement
+  HiLink nqcEvents		Statement
+  HiLink nqcPreCondit		PreCondit
+  HiLink nqcType		Type
+  HiLink nqcConstant		Constant
+  HiLink nqcCommentSkip		nqcComment
+  HiLink nqcComment		Comment
+  HiLink nqcTodo		Todo
+  HiLink nqcCppSkip		nqcCppOut
+  HiLink nqcCppOut2		nqcCppOut
+  HiLink nqcCppOut		Comment
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "nqc"
+
+" vim: ts=8
