diff --git a/Preferences/Merlin Comments.tmPreferences b/Preferences/Merlin Comments.tmPreferences
new file mode 100644
index 0000000..4a5aa6a
--- /dev/null
+++ b/Preferences/Merlin Comments.tmPreferences
@@ -0,0 +1,30 @@
+
+
+
+
+ name
+ Merlin Comments
+ scope
+ source.asm.65816.merlin
+ settings
+
+ shellVariables
+
+
+ name
+ TM_COMMENT_START
+ value
+ *
+
+
+ name
+ TM_COMMENT_DISABLE_INDENT
+ value
+ yes
+
+
+
+ uuid
+ A2F150FF-2999-441F-81E5-B65646A26E4F
+
+
diff --git a/Preferences/Merlin Folding.tmPreferences b/Preferences/Merlin Folding.tmPreferences
new file mode 100644
index 0000000..108c73b
--- /dev/null
+++ b/Preferences/Merlin Folding.tmPreferences
@@ -0,0 +1,19 @@
+
+
+
+
+ name
+ Merlin Folding
+ scope
+ source.asm.65816.merlin
+ settings
+
+ foldingStartMarker
+ \b(?i:DUM|DO|IF|MAC|LUP)\b
+ foldingStopMarker
+ \b(?i:DEND|FIN)\b|<<<|--\^
+
+ uuid
+ 9DDC3C1F-C4A9-4888-BFBA-1CFF7448AC47
+
+
diff --git a/Syntaxes/Merlin.tmLanguage b/Syntaxes/Merlin.tmLanguage
new file mode 100644
index 0000000..5c69ab2
--- /dev/null
+++ b/Syntaxes/Merlin.tmLanguage
@@ -0,0 +1,370 @@
+
+
+
+
+ fileTypes
+
+ S
+
+ name
+ Merlin
+ patterns
+
+
+ include
+ source.asm.65816
+
+
+ include
+ source.asm.65816#long_mnemonics
+
+
+ include
+ source.asm.65816#hex_number
+
+
+ include
+ source.asm.65816#decimal_number
+
+
+ match
+ %[01][01_]*
+ name
+ constant.numeric.binary
+
+
+ match
+ \b(?i:TAS|TSA|SWA|TAD|TDA|BLT|BGE)\b
+ name
+ keyword.mnemonic.65816.alt
+
+
+ match
+ (?<=,)([xXyYsS])\b
+ name
+ variable.language.register
+
+
+ begin
+ "
+ end
+ "
+ name
+ string.quoted.double
+
+
+ begin
+ '
+ end
+ '
+ name
+ string.quoted.single
+
+
+ match
+ ^[*].*
+ name
+ comment.line
+
+
+ match
+ ;.*
+ name
+ comment.line
+
+
+ match
+ ^][0-~]*\b
+ name
+ entity.name.label.variable
+
+
+ match
+ ^:[0-~]*\b
+ name
+ entity.name.label.local
+
+
+ match
+ ^[:-~][0-~]*\b
+ name
+ entity.name.function
+
+
+ captures
+
+ 1
+
+ name
+ keyword.directive
+
+ 2
+
+ name
+ string.quoted.other.path
+
+
+ comment
+ eg: KEEP pathname
+ match
+ \b((?i)DSK|PUT|USE|SAV)\s+(\S*)
+ name
+ meta.path.directive
+
+
+ captures
+
+ 1
+
+ name
+ keyword.directive
+
+ 2
+
+ name
+ constant.language
+
+
+ comment
+ eg: KEEP pathname
+ match
+ \b((?i)CYC)\s+((?i)ON|OFF|AVE)\b
+ name
+ meta.cyc.directive
+
+
+ captures
+
+ 1
+
+ name
+ keyword.directive
+
+ 2
+
+ name
+ constant.language
+
+
+ comment
+ eg: KEEP pathname
+ match
+ \b((?i)EXP)\s+((?i)ON|OFF|ONLY)\b
+ name
+ meta.exp.directive
+
+
+ captures
+
+ 1
+
+ name
+ keyword.directive
+
+ 2
+
+ name
+ constant.language
+
+
+ comment
+ eg: KEEP pathname
+ match
+ \b((?i)LST)\s+((?i)ON|OFF|RTN)\b
+ name
+ meta.lst.directive
+
+
+ captures
+
+ 1
+
+ name
+ keyword.directive
+
+ 2
+
+ name
+ constant.language
+
+
+ comment
+ eg: KEEP pathname
+ match
+ \b((?i)LST)\s+((?i)OFF)\b
+ name
+ meta.lstdo.directive
+
+
+ captures
+
+ 1
+
+ name
+ keyword.directive
+
+ 2
+
+ name
+ constant.language
+
+
+ comment
+ eg: KEEP pathname
+ match
+ \b((?i)TR)\s+((?i)ON|OFF|ADR)\b
+ name
+ meta.tr.directive
+
+
+ captures
+
+ 1
+
+ name
+ keyword.directive.string
+
+ 2
+
+ name
+ string.delimited.begin
+
+ 3
+
+ name
+ string.delimited
+
+ 4
+
+ name
+ string.delimited.end
+
+ 5
+
+ name
+ keyword.operator
+
+ 6
+
+ name
+ constant.numeric.hexadecimal
+
+
+ comment
+ optional trailing hex data
+ match
+ \b((?i)ASC|DCI|INV|FLS|STR)\s+(\S)(.*?)(\2|$)(,([0-9A-Fa-f]+))?
+ name
+ meta.string.delimited
+
+
+ captures
+
+ 1
+
+ name
+ keyword.directive.string
+
+ 2
+
+ name
+ string.delimited.begin
+
+ 3
+
+ name
+ string.delimited
+
+ 4
+
+ name
+ string.delimited.end
+
+
+ match
+ \b((?i)REV)\s+(\S)(.*?)(\2|$)
+ name
+ meta.string.delimited.rev
+
+
+ begin
+ \b((?i)HEX)\b
+ captures
+
+ 1
+
+ name
+ keyword.directive.data
+
+
+ comment
+ HEX has a list of hex bytes w/o the $
+ end
+ $
+ name
+ meta.hex
+ patterns
+
+
+ match
+ \b[0-9A-Fa-f]{1,2}\b
+ name
+ constant.numeric.hex
+
+
+ match
+ ;.*$
+ name
+ comment.line
+
+
+ match
+ ,
+ name
+ keyword.operator
+
+
+ match
+ \S
+ name
+ invalid.illegal
+
+
+
+
+ match
+ \b(?i:DSK|EQU|EXT|ENT|ORG|REL|OBJ|PUT|USE|VAR|SAV|TYP|END|DUM|DEND|AST|CYC|DAT|EXP|LST|LSTDO|PAG|TTL|SKP|TR|CHK|ERR|KBD|LUP|--\^|MX|PAU|SW|USR|XC)\b
+ name
+ keyword.directive
+
+
+ match
+ \b(?i:DA|DW|DDB|DB|DFB|ADR|ADRL|HEX|DS|ASC|DCI|INV|FLS|REV|STR)\b
+ name
+ keyword.directive.data
+
+
+ match
+ \b(?i:DO|ELSE|IF|FIN)\b
+ name
+ keyword.control.conditional
+
+
+ match
+ \b(?i:MAC)\b|<<<
+ name
+ keyword.directive.macro
+
+
+ match
+ [-+/*^><|#\[\](),=.!&]
+ name
+ keyword.operator
+
+
+ scopeName
+ source.asm.65816.merlin
+ uuid
+ F978EA07-532B-4F41-A8D8-808CD855B3F7
+
+