summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Osheim <d_m@plastic-idolatry.com>2022-03-13 14:57:42 -0400
committerGitHub <noreply@github.com>2022-03-13 19:57:42 +0100
commit96eaebafc848c989e9fc081768e3156add3128fd (patch)
tree5d324aa2afea7b23f92ff03788739d40f3693e31
parent62dd19e9d3e0400fff0aeddabae490797425c87e (diff)
downloadpygments-git-96eaebafc848c989e9fc081768e3156add3128fd.tar.gz
Add lexer for parsing Uxntal assembly code. (#2086)
Uxn is a virtual machine which represents a personal computing playground, and is described here: https://100r.co/site/uxn.html Uxntal assembly language is described here: https://wiki.xxiivv.com/site/uxntal.html The demo code piano.tal is used with permission.
-rw-r--r--AUTHORS1
-rw-r--r--doc/languages.rst1
-rw-r--r--pygments/lexers/_mapping.py1
-rw-r--r--pygments/lexers/tal.py73
-rw-r--r--tests/examplefiles/tal/piano.tal559
-rw-r--r--tests/examplefiles/tal/piano.tal.output4465
6 files changed, 5100 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
index b9ce251c..307609df 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -16,6 +16,7 @@ Other contributors, listed alphabetically, are:
* Andreas Amann -- AppleScript lexer
* Timothy Armstrong -- Dart lexer fixes
* Jeffrey Arnold -- R/S, Rd, BUGS, Jags, and Stan lexers
+* Eiríkr Åsheim -- Uxntal lexer
* Jeremy Ashkenas -- CoffeeScript lexer
* José Joaquín Atria -- Praat lexer
* Stefan Matthias Aust -- Smalltalk lexer
diff --git a/doc/languages.rst b/doc/languages.rst
index f36d6fdc..55e8f6ea 100644
--- a/doc/languages.rst
+++ b/doc/languages.rst
@@ -181,6 +181,7 @@ Programming languages
* `Swift <https://swift.org/>`_
* `Swig <http://swig.org/>`_
* `SuperCollider <https://supercollider.github.io/>`_
+* `Tal <https://wiki.xxiivv.com/site/uxntal.html>`_
* `Tcl <https://www.tcl.tk/about/language.html>`_
* `Tera Term language <https://ttssh2.osdn.jp/>`_
* `TypeScript <https://www.typescriptlang.org/>`_
diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py
index 1aa2d146..3d90f447 100644
--- a/pygments/lexers/_mapping.py
+++ b/pygments/lexers/_mapping.py
@@ -474,6 +474,7 @@ LEXERS = {
'TNTLexer': ('pygments.lexers.tnt', 'Typographic Number Theory', ('tnt',), ('*.tnt',), ()),
'TOMLLexer': ('pygments.lexers.configs', 'TOML', ('toml',), ('*.toml', 'Pipfile', 'poetry.lock'), ()),
'Tads3Lexer': ('pygments.lexers.int_fiction', 'TADS 3', ('tads3',), ('*.t',), ()),
+ 'TalLexer': ('pygments.lexers.tal', 'Tal', ('tal', 'uxntal'), ('*.tal',), ('text/x-uxntal',)),
'TasmLexer': ('pygments.lexers.asm', 'TASM', ('tasm',), ('*.asm', '*.ASM', '*.tasm'), ('text/x-tasm',)),
'TclLexer': ('pygments.lexers.tcl', 'Tcl', ('tcl',), ('*.tcl', '*.rvt'), ('text/x-tcl', 'text/x-script.tcl', 'application/x-tcl')),
'TcshLexer': ('pygments.lexers.shell', 'Tcsh', ('tcsh', 'csh'), ('*.tcsh', '*.csh'), ('application/x-csh',)),
diff --git a/pygments/lexers/tal.py b/pygments/lexers/tal.py
new file mode 100644
index 00000000..7bc3fcb1
--- /dev/null
+++ b/pygments/lexers/tal.py
@@ -0,0 +1,73 @@
+"""
+ pygments.lexers.tal
+ ~~~~~~~~~~~~~~~~~~~
+
+ Lexer for Uxntal
+
+ .. versionadded:: 2.12
+
+ :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+import re
+
+from pygments.lexer import RegexLexer, words
+from pygments.token import Comment, Keyword, Name, String, Number, Punctuation, Whitespace, Literal
+
+__all__ = ['TalLexer']
+
+class TalLexer(RegexLexer):
+ """
+ For `Uxntal <https://wiki.xxiivv.com/site/uxntal.html>`_ source code.
+
+ .. versionadded:: 2.12
+ """
+
+ name = 'Tal'
+ aliases = ['tal', 'uxntal']
+ filenames = ['*.tal']
+ mimetypes = ['text/x-uxntal']
+
+ instructions = [
+ 'BRK', 'LIT', 'INC', 'POP', 'DUP', 'NIP', 'SWP', 'OVR', 'ROT',
+ 'EQU', 'NEQ', 'GTH', 'LTH', 'JMP', 'JCN', 'JSR', 'STH',
+ 'LDZ', 'STZ', 'LDR', 'STR', 'LDA', 'STA', 'DEI', 'DEO',
+ 'ADD', 'SUB', 'MUL', 'DIV', 'AND', 'ORA', 'EOR', 'SFT'
+ ]
+
+ tokens = {
+ # the comment delimiters must not be adjacent to non-space characters.
+ # this means ( foo ) is a valid comment but (foo) is not. this also
+ # applies to nested comments.
+ 'comment': [
+ (r'(?<!\S)\((?!\S)', Comment.Multiline, '#push'), # nested comments
+ (r'(?<!\S)\)(?!\S)', Comment.Multiline, '#pop'), # nested comments
+ (r'[^()]+', Comment.Multiline), # comments
+ (r'[()]+', Comment.Multiline), # comments
+ ],
+ 'root': [
+ (r'\s+', Whitespace), # spaces
+ (r'(?<!\S)\((?!\S)', Comment.Multiline, 'comment'), # comments
+ (words(instructions, prefix=r'(?<!\S)', suffix=r'2?k?r?(?!\S)'), Keyword.Reserved), # instructions
+ (r'[][{}](?!\S)', Punctuation), # delimiters
+ (r'#([0-9a-f]{2}){1,2}(?!\S)', Number.Hex), # integer
+ (r'"\S+', String), # raw string
+ (r"'\S(?!\S)", String.Char), # raw char
+ (r'([0-9a-f]{2}){1,2}(?!\S)', Literal), # raw integer
+ (r'[|$][0-9a-f]{1,4}(?!\S)', Keyword.Declaration), # abs/rel pad
+ (r'%\S+', Name.Decorator), # macro
+ (r'@\S+', Name.Function), # label
+ (r'&\S+', Name.Label), # sublabel
+ (r'/\S+', Name.Tag), # spacer
+ (r'\.\S+', Name.Variable.Magic), # zero page addr
+ (r',\S+', Name.Variable.Instance), # rel addr
+ (r';\S+', Name.Variable.Global), # abs addr
+ (r':\S+', Literal), # raw addr
+ (r'~\S+', Keyword.Namespace), # include
+ (r'\S+', Name),
+ ]
+ }
+
+ def analyse_text(text):
+ return '|0100' in text[:500]
diff --git a/tests/examplefiles/tal/piano.tal b/tests/examplefiles/tal/piano.tal
new file mode 100644
index 00000000..a7472135
--- /dev/null
+++ b/tests/examplefiles/tal/piano.tal
@@ -0,0 +1,559 @@
+( piano )
+
+%+ { ADD } %- { SUB } %* { MUL } %/ { DIV }
+%< { LTH } %> { GTH } %= { EQU } %! { NEQ }
+%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
+%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
+%!~ { NEQk NIP }
+
+%HALT { #010f DEO }
+
+%RTN { JMP2r }
+%TOS { #00 SWP }
+%MOD { DUP2 / * - }
+%GTS2 { #8000 ++ SWP2 #8000 ++ << }
+%2/ { #01 SFT }
+%2// { #01 SFT2 }
+%4// { #02 SFT2 }
+%8// { #03 SFT2 }
+%8** { #30 SFT2 }
+
+%AUTO-NONE { #00 .Screen/auto DEO }
+%AUTO-X { #01 .Screen/auto DEO }
+%AUTO-YADDR { #06 .Screen/auto DEO }
+
+( devices )
+
+|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1
+|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1
+|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
+|30 @Audio0 &vector $2 &position $2 &output $1 &pad $3 &adsr $2 &length $2 &addr $2 &volume $1 &pitch $1
+|80 @Controller &vector $2 &button $1 &key $1
+|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &pad $3 &modx $2 &mody $2
+|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
+
+( variables )
+
+|0000
+
+@last-note $1
+@octave $1
+@pointer
+ &x $2 &y $2
+@center
+ &x $2 &y $2
+@adsr-view
+ &x1 $2 &y1 $2 &x2 $2 &y2 $2
+@wave-view
+ &x1 $2 &y1 $2 &x2 $2 &y2 $2
+@octave-view
+ &x1 $2 &y1 $2 &x2 $2 &y2 $2
+
+( program )
+
+|0100 ( -> )
+
+ ( theme )
+ #0fe5 .System/r DEO2
+ #0fc5 .System/g DEO2
+ #0f25 .System/b DEO2
+
+ ( vectors )
+ ;on-frame .Screen/vector DEO2
+ ;on-control .Controller/vector DEO2
+ ;on-mouse .Mouse/vector DEO2
+ ;on-message .Console/vector DEO2
+
+ ( find center )
+ .Screen/width DEI2 2// .center/x STZ2
+ .Screen/height DEI2 2// .center/y STZ2
+
+ ( place octave )
+ .center/x LDZ2 #0080 -- .octave-view/x1 STZ2
+ .center/y LDZ2 #0008 ++ .octave-view/y1 STZ2
+ .octave-view/x1 LDZ2 #0050 ++ .octave-view/x2 STZ2
+ .octave-view/y1 LDZ2 #0018 ++ .octave-view/y2 STZ2
+
+ ( place adsr )
+ .center/x LDZ2 #0020 -- .adsr-view/x1 STZ2
+ .center/y LDZ2 #0008 ++ .adsr-view/y1 STZ2
+ .adsr-view/x1 LDZ2 #00a0 ++ .adsr-view/x2 STZ2
+ .adsr-view/y1 LDZ2 #0018 ++ .adsr-view/y2 STZ2
+
+ ( place waveform )
+ .center/x LDZ2 #0080 -- .wave-view/x1 STZ2
+ .center/y LDZ2 #0020 -- .wave-view/y1 STZ2
+ .wave-view/x1 LDZ2 #0100 ++ .wave-view/x2 STZ2
+ .wave-view/y1 LDZ2 #0020 ++ .wave-view/y2 STZ2
+
+ ( default settings )
+ #ff .last-note STZ
+ #041c .Audio0/adsr DEO2
+ #dd .Audio0/volume DEO
+ ;sin-pcm .Audio0/addr DEO2
+ #0100 .Audio0/length DEO2
+
+ ( inital drawing )
+ ;draw-octave JSR2
+ ;draw-adsr JSR2
+ ;draw-wave JSR2
+
+BRK
+
+( this data exists to test literals
+ as well as multi-line ( and nested )
+ comments )
+@test-dat "this 20 "is 20 'a 20 "test 00
+@test-ptr :test-dat
+
+@on-frame ( -> )
+
+ .adsr-view/y2 LDZ2 #0020 -- .Screen/y DEO2
+
+ #10 #00
+ &loop
+ .adsr-view/x2 LDZ2 #003a -- .Screen/x DEO2
+ #10 OVR - .Audio0/output DEI #0f AND < .Screen/pixel DEO
+ .adsr-view/x2 LDZ2 #003a -- INC2 INC2 .Screen/x DEO2
+ #10 OVR - .Audio0/output DEI #04 SFT < .Screen/pixel DEO
+ .Screen/y DEI2 INC2 INC2 .Screen/y DEO2
+ INC GTHk ,&loop JCN
+ POP2
+
+BRK
+
+@on-control ( -> )
+
+ ( clear last cursor )
+ .pointer/x LDZ2 .Screen/x DEO2
+ .pointer/y LDZ2 .Screen/y DEO2
+ #40 .Screen/sprite DEO
+
+ .Controller/key DEI
+ [ LIT 'a ] !~ ,&no-c JCN
+ #30 .octave LDZ #0c * + ;play JSR2 &no-c
+ [ LIT 's ] !~ ,&no-d JCN
+ #32 .octave LDZ #0c * + ;play JSR2 &no-d
+ [ LIT 'd ] !~ ,&no-e JCN
+ #34 .octave LDZ #0c * + ;play JSR2 &no-e
+ [ LIT 'f ] !~ ,&no-f JCN
+ #35 .octave LDZ #0c * + ;play JSR2 &no-f
+ [ LIT 'g ] !~ ,&no-g JCN
+ #37 .octave LDZ #0c * + ;play JSR2 &no-g
+ [ LIT 'h ] !~ ,&no-a JCN
+ #39 .octave LDZ #0c * + ;play JSR2 &no-a
+ [ LIT 'j ] !~ ,&no-b JCN
+ #3b .octave LDZ #0c * + ;play JSR2 &no-b
+ [ LIT 'k ] !~ ,&no-c2 JCN
+ #3c .octave LDZ #0c * + ;play JSR2 &no-c2
+ [ #1b ] !~ ,&no-esc JCN HALT &no-esc
+ POP
+
+ ( release )
+ #00 .Controller/key DEO
+
+ .Controller/button DEI
+ DUP #11 ! ,&cu JCN #3c ;play JSR2 &cu
+ DUP #21 ! ,&cd JCN #3d ;play JSR2 &cd
+ DUP #41 ! ,&cl JCN #3e ;play JSR2 &cl
+ DUP #81 ! ,&cr JCN #3f ;play JSR2 &cr
+ DUP #12 ! ,&au JCN #40 ;play JSR2 &au
+ DUP #22 ! ,&ad JCN #41 ;play JSR2 &ad
+ DUP #42 ! ,&al JCN #42 ;play JSR2 &al
+ DUP #82 ! ,&ar JCN #43 ;play JSR2 &ar
+ DUP #14 ! ,&su JCN #44 ;play JSR2 &su
+ DUP #24 ! ,&sd JCN #45 ;play JSR2 &sd
+ DUP #44 ! ,&sl JCN #46 ;play JSR2 &sl
+ DUP #84 ! ,&sr JCN #47 ;play JSR2 &sr
+ DUP #40 ! ,&l JCN .Audio0/addr DEI2 #0010 -- .Audio0/addr DEO2 &l
+ DUP #80 ! ,&r JCN .Audio0/addr DEI2 #0010 ++ .Audio0/addr DEO2 &r
+ POP
+
+ ;draw-octave JSR2
+ ;draw-wave JSR2
+
+BRK
+
+@on-message ( -> )
+
+ .Console/read DEI ;play JSR2
+ ;draw-octave JSR2
+
+BRK
+
+@on-mouse ( -> )
+
+ ;draw-cursor JSR2
+
+ .Mouse/state DEI #00 ! #01 JCN [ BRK ]
+
+ .Mouse/x DEI2 .Mouse/y DEI2 .wave-view ;within-rect JSR2
+ ;on-touch-wave-view JCN2
+ .Mouse/x DEI2 .Mouse/y DEI2 .adsr-view ;within-rect JSR2
+ ;on-touch-adsr-view JCN2
+ .Mouse/x DEI2 .Mouse/y DEI2 .octave-view ;within-rect JSR2
+ ;on-touch-octave-view JCN2
+
+BRK
+
+@on-touch-wave-view ( -> )
+
+ .Mouse/x DEI2 .wave-view/x1 LDZ2 -- .Audio0/length DEO2
+ ;draw-wave JSR2
+ ;draw-cursor JSR2
+
+BRK
+
+@on-touch-octave-view ( -> )
+
+ .Mouse/x DEI2 .octave-view/x1 LDZ2 -- 8// NIP #09 ! ,&no-mod JCN
+ .Mouse/y DEI2 .octave-view/y1 LDZ2 -- 8// NIP
+ [ #00 ] !~ ,&no-incr JCN
+ .octave LDZ #03 = ,&no-incr JCN
+ .octave LDZ INC .octave STZ &no-incr
+ [ #02 ] !~ ,&no-decr JCN
+ .octave LDZ #ff = ,&no-decr JCN
+ .octave LDZ #01 - .octave STZ &no-decr
+ POP
+ ( release ) #00 .Mouse/state DEO
+ ;draw-octave JSR2
+ BRK
+ &no-mod
+
+ .Mouse/x DEI2 .octave-view/x1 LDZ2 -- 8// NIP #06 > ,&no-key JCN
+ .Mouse/x DEI2 .octave-view/x1 LDZ2 -- 8// ;notes ++ LDA .octave LDZ #0c * + ;play JSR2
+ ( release ) #00 .Mouse/state DEO
+ ;draw-octave JSR2
+ &no-key
+
+BRK
+
+@on-touch-adsr-view ( -> )
+
+ .Mouse/x DEI2 .adsr-view/x1 LDZ2 -- 8// NIP #03 /
+ [ #00 ] !~ ,&no-a JCN
+ .Audio0/adsr DEI
+ #10 .Mouse/state DEI #10 = #e0 * + +
+ .Audio0/adsr DEO &no-a
+ [ #01 ] !~ ,&no-d JCN
+ .Audio0/adsr DEI
+ DUP #f0 AND STH #01 .Mouse/state DEI #10 = #0e * + + #0f AND STHr +
+ .Audio0/adsr DEO &no-d
+ [ #02 ] !~ ,&no-s JCN
+ .Audio0/adsr INC DEI
+ #10 .Mouse/state DEI #10 = #e0 * + +
+ .Audio0/adsr INC DEO &no-s
+ [ #03 ] !~ ,&no-r JCN
+ .Audio0/adsr INC DEI
+ DUP #f0 AND STH #01 .Mouse/state DEI #10 = #0e * + + #0f AND STHr +
+ .Audio0/adsr INC DEO &no-r
+ [ #05 ] !~ ,&no-left JCN
+ .Audio0/volume DEI
+ #10 .Mouse/state DEI #10 = #e0 * + +
+ .Audio0/volume DEO &no-left
+ [ #06 ] !~ ,&no-right JCN
+ .Audio0/volume DEI
+ DUP #f0 AND STH #01 .Mouse/state DEI #10 = #0e * + + #0f AND STHr +
+ .Audio0/volume DEO &no-right
+ POP
+
+ ( release ) #00 .Mouse/state DEO
+ ;draw-adsr JSR2
+ ;draw-cursor JSR2
+
+BRK
+
+@play ( pitch -- )
+
+ DUP #0c MOD .last-note STZ
+ .Audio0/pitch DEO
+
+RTN
+
+@draw-cursor ( -- )
+
+ ( clear last cursor )
+ ;cursor .Screen/addr DEO2
+ .pointer/x LDZ2 .Screen/x DEO2
+ .pointer/y LDZ2 .Screen/y DEO2
+ #40 .Screen/sprite DEO
+ ( record pointer positions )
+ .Mouse/x DEI2 DUP2 .pointer/x STZ2 .Screen/x DEO2
+ .Mouse/y DEI2 DUP2 .pointer/y STZ2 .Screen/y DEO2
+ ( colorize on state )
+ #41 [ .Mouse/state DEI #00 ! ] + .Screen/sprite DEO
+
+RTN
+
+@draw-octave ( -- )
+
+ .octave-view/x1 LDZ2 #0048 ++ .Screen/x DEO2
+
+ ;arrow-icns .Screen/addr DEO2
+ .octave-view/y1 LDZ2 .Screen/y DEO2
+ #01 .Screen/sprite DEO
+
+ ;arrow-icns #0008 ++ .Screen/addr DEO2
+ .octave-view/y1 LDZ2 #0010 ++ .Screen/y DEO2
+ #01 .Screen/sprite DEO
+
+ ;font-hex .octave LDZ #03 + #00 SWP 8** ++ .Screen/addr DEO2
+ .octave-view/y1 LDZ2 #0008 ++ .Screen/y DEO2
+ #03 .Screen/sprite DEO
+
+ .octave-view/x1 LDZ2 .Screen/x DEO2
+ .octave-view/y1 LDZ2 .Screen/y DEO2
+ AUTO-YADDR
+ .last-note LDZ STH
+ ;keys-left-icns STHkr #00 = INC ,draw-key JSR
+ ;keys-middle-icns STHkr #02 = INC ,draw-key JSR
+ ;keys-right-icns STHkr #04 = INC ,draw-key JSR
+ ;keys-left-icns STHkr #05 = INC ,draw-key JSR
+ ;keys-middle-icns STHkr #07 = INC ,draw-key JSR
+ ;keys-middle-icns STHkr #09 = INC ,draw-key JSR
+ ;keys-right-icns STHr #0b = INC ,draw-key JSR
+ AUTO-NONE
+
+RTN
+
+@draw-key ( addr* color -- )
+
+ STH
+ .Screen/addr DEO2
+ .Screen/y DEI2
+ STHr .Screen/sprite DEOk DEOk DEO
+ .Screen/x DEI2k #0008 ++ ROT DEO2
+ .Screen/y DEO2
+
+RTN
+
+@draw-adsr ( -- )
+
+ ( adsr )
+ .adsr-view/x1 LDZ2 .adsr-view/y1 LDZ2
+ .Audio0/adsr DEI #04 SFT
+ ;draw-knob JSR2
+ .adsr-view/x1 LDZ2 #0018 ++ .adsr-view/y1 LDZ2
+ .Audio0/adsr DEI #0f AND
+ ;draw-knob JSR2
+ .adsr-view/x1 LDZ2 #0030 ++ .adsr-view/y1 LDZ2
+ .Audio0/adsr INC DEI #04 SFT
+ ;draw-knob JSR2
+ .adsr-view/x1 LDZ2 #0048 ++ .adsr-view/y1 LDZ2
+ .Audio0/adsr INC DEI #0f AND
+ ;draw-knob JSR2
+ ( volume )
+ .adsr-view/x2 LDZ2 #0028 -- .adsr-view/y1 LDZ2
+ .Audio0/volume DEI #04 SFT
+ ;draw-knob JSR2
+ .adsr-view/x2 LDZ2 #0010 -- .adsr-view/y1 LDZ2
+ .Audio0/volume DEI #0f AND
+ ;draw-knob JSR2
+
+RTN
+
+@draw-wave ( -- )
+
+ ( clear )
+ .wave-view/x1 LDZ2
+ .wave-view/y1 LDZ2
+ .wave-view/x2 LDZ2 INC2
+ .wave-view/y2 LDZ2
+ #00 ;fill-rect JSR2
+
+ #01 ;draw-wave-length JSR2
+
+ .wave-view/x1 LDZ2 .Screen/x DEO2
+
+ ( waveform )
+ #ff #00
+ &loop
+ ( dotted line )
+ DUP #01 AND ,&no-dot JCN
+ .wave-view/y1 LDZ2 #0010 ++ .Screen/y DEO2
+ #03 .Screen/pixel DEO
+ &no-dot
+ #00 OVR .Audio0/addr DEI2 ++ LDA
+ 2/
+ TOS 4// .wave-view/y1 LDZ2 ++ .Screen/y DEO2
+ .Screen/x DEI2 INC2 .Screen/x DEO2
+ ( draw ) DUP
+ .Audio0/length DEI2 NIP >
+ .Audio0/length DEI2 #0100 !! #0101 == DUP ADD INC .Screen/pixel DEO
+ INC GTHk ,&loop JCN
+ POP2
+
+ ( range )
+ AUTO-X
+ .wave-view/x1 LDZ2 .Screen/x DEO2
+ .wave-view/y1 LDZ2 #0010 -- .Screen/y DEO2
+ .Audio0/addr DEI2 #02 ;draw-short JSR2
+ .wave-view/x2 LDZ2 #0020 -- .Screen/x DEO2
+ .Audio0/length DEI2 #02 ;draw-short JSR2
+ AUTO-NONE
+
+RTN
+
+@draw-wave-length ( color -- )
+
+ STH
+ .wave-view/x1 LDZ2 .Audio0/length DEI2 ++ .Screen/x DEO2
+ .wave-view/y1 LDZ2 DUP2 #0020 ++ SWP2
+ &loop
+ DUP2 .Screen/y DEO2
+ ( draw ) STHkr .Screen/pixel DEO
+ INC2 GTH2k ,&loop JCN
+ POP2 POP2
+ POPr
+
+RTN
+
+@draw-knob ( x* y* value -- )
+
+ ( load ) STH .Screen/y DEO2 .Screen/x DEO2
+ ;knob-icns .Screen/addr DEO2
+ ( draw ) #01 .Screen/sprite DEO
+ .Screen/x DEI2 #0008 ++ .Screen/x DEO2
+ ;knob-icns #0008 ++ .Screen/addr DEO2
+ ( draw ) #01 .Screen/sprite DEO
+ .Screen/y DEI2 #0008 ++ .Screen/y DEO2
+ ;knob-icns #0018 ++ .Screen/addr DEO2
+ ( draw ) #01 .Screen/sprite DEO
+ .Screen/x DEI2 #0008 -- .Screen/x DEO2
+ ;knob-icns #0010 ++ .Screen/addr DEO2
+ ( draw ) #01 .Screen/sprite DEO
+ .Screen/x DEI2 #0004 ++ .Screen/x DEO2
+ .Screen/y DEI2 #0008 ++ .Screen/y DEO2
+ ;font-hex #00 STHkr #30 SFT ++ .Screen/addr DEO2
+ ( draw ) #01 .Screen/sprite DEO
+ .Screen/x DEI2 #0004 -- #00 #00 STHkr ;knob-offsetx ++ LDA ++ .Screen/x DEO2
+ .Screen/y DEI2 #0010 -- #00 #00 STHr ;knob-offsety ++ LDA ++ .Screen/y DEO2
+ ;knob-icns #0020 ++ .Screen/addr DEO2
+ ( draw ) #05 .Screen/sprite DEO
+
+RTN
+
+@draw-short ( short* color -- )
+
+ STH
+ SWP STHkr ,draw-byte JSR
+ STHr
+
+@draw-byte ( byte color -- )
+
+ STH
+ DUP #04 SFT STHkr ,draw-hex JSR #0f AND
+ STHr
+
+@draw-hex ( char color -- )
+
+ SWP TOS 8** ;font-hex ++ .Screen/addr DEO2
+ .Screen/sprite DEO
+
+RTN
+
+@fill-rect ( x1* y1* x2* y2* color -- )
+
+ ,&color STR
+ ( x1 x2 y1 y2 ) ROT2
+ &ver
+ ( save ) DUP2 .Screen/y DEO2
+ STH2 STH2 OVR2 OVR2 SWP2
+ &hor
+ ( save ) DUP2 .Screen/x DEO2
+ ( draw ) ,&color LDR .Screen/pixel DEO
+ ( incr ) INC2
+ OVR2 OVR2 GTS2 ,&hor JCN
+ POP2 POP2 STH2r STH2r
+ ( incr ) INC2
+ OVR2 OVR2 GTS2 ,&ver JCN
+ POP2 POP2 POP2 POP2
+
+RTN
+ &color $1
+
+@within-rect ( x* y* rect -- flag )
+
+ STH
+ ( y < rect.y1 ) DUP2 STHkr #02 ADD LDZ2 LTH2 ,&skip JCN
+ ( y > rect.y2 ) DUP2 STHkr #06 ADD LDZ2 GTH2 ,&skip JCN
+ SWP2
+ ( x < rect.x1 ) DUP2 STHkr LDZ2 LTH2 ,&skip JCN
+ ( x > rect.x2 ) DUP2 STHkr #04 ADD LDZ2 GTH2 ,&skip JCN
+ POP2 POP2 POPr
+ #01
+RTN
+ &skip
+ POP2 POP2 POPr
+ #00
+
+RTN
+
+@cursor
+ 80c0 e0f0 f8e0 1000
+
+@arrow-icns
+ 0010 387c fe10 1000
+ 0010 1010 fe7c 3810
+
+@notes
+ 30 32 34 35
+ 37 39 3b 3c
+
+@keys-left-icns
+ 7c7c 7c7c 7c7c 7c7c
+ 7c7c 7c7c 7c7c 7e7f
+ 7f7f 7f7f 7f7f 3e00
+
+@keys-middle-icns
+ 1c1c 1c1c 1c1c 1c1c
+ 1c1c 1c1c 1c1c 3e7f
+ 7f7f 7f7f 7f7f 3e00
+
+@keys-right-icns
+ 1f1f 1f1f 1f1f 1f1f
+ 1f1f 1f1f 1f1f 3f7f
+ 7f7f 7f7f 7f7f 3e00
+
+@knob-icns
+ 0003 0c10 2020 4040
+ 00c0 3008 0404 0202
+ 4040 2020 100c 0300
+ 0202 0404 0830 c000
+ 0000 183c 3c18 0000
+
+@knob-offsetx
+ 01 00 00 00 00 01 02 03
+ 05 06 07 08 08 08 08 07
+
+@knob-offsety
+ 07 06 05 03 02 01 00 00
+ 00 00 01 02 03 05 06 07
+
+@font-hex ( 0-F )
+ 007c 8282 8282 827c 0030 1010 1010 1010
+ 007c 8202 7c80 80fe 007c 8202 1c02 827c
+ 000c 1424 4484 fe04 00fe 8080 7c02 827c
+ 007c 8280 fc82 827c 007c 8202 1e02 0202
+ 007c 8282 7c82 827c 007c 8282 7e02 827c
+ 007c 8202 7e82 827e 00fc 8282 fc82 82fc
+ 007c 8280 8080 827c 00fc 8282 8282 82fc
+ 007c 8280 f080 827c 007c 8280 f080 8080
+
+@sin-pcm
+ 8083 8689 8c8f 9295 989b 9ea1 a4a7 aaad
+ b0b3 b6b9 bbbe c1c3 c6c9 cbce d0d2 d5d7
+ d9db dee0 e2e4 e6e7 e9eb ecee f0f1 f2f4
+ f5f6 f7f8 f9fa fbfb fcfd fdfe fefe fefe
+ fffe fefe fefe fdfd fcfb fbfa f9f8 f7f6
+ f5f4 f2f1 f0ee eceb e9e7 e6e4 e2e0 dedb
+ d9d7 d5d2 d0ce cbc9 c6c3 c1be bbb9 b6b3
+ b0ad aaa7 a4a1 9e9b 9895 928f 8c89 8683
+ 807d 7a77 7471 6e6b 6865 625f 5c59 5653
+ 504d 4a47 4542 3f3d 3a37 3532 302e 2b29
+ 2725 2220 1e1c 1a19 1715 1412 100f 0e0c
+ 0b0a 0908 0706 0505 0403 0302 0202 0202
+ 0102 0202 0202 0303 0405 0506 0708 090a
+ 0b0c 0e0f 1012 1415 1719 1a1c 1e20 2225
+ 2729 2b2e 3032 3537 3a3d 3f42 4547 4a4d
+ 5053 5659 5c5f 6265 686b 6e71 7477 7a7d
diff --git a/tests/examplefiles/tal/piano.tal.output b/tests/examplefiles/tal/piano.tal.output
new file mode 100644
index 00000000..9a7e8041
--- /dev/null
+++ b/tests/examplefiles/tal/piano.tal.output
@@ -0,0 +1,4465 @@
+'(' Comment.Multiline
+' piano ' Comment.Multiline
+')' Comment.Multiline
+'\n\n' Text.Whitespace
+
+'%+' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'ADD' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'%-' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'SUB' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'%*' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'MUL' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'%/' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'DIV' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%<' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'LTH' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'%>' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'GTH' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'%=' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'EQU' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'%!' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'NEQ' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%++' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'ADD2' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'%--' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'SUB2' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'%**' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'MUL2' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'%//' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'DIV2' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%<<' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'LTH2' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'%>>' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'GTH2' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'%==' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'EQU2' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'%!!' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'NEQ2' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%!~' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'NEQk' Keyword.Reserved
+' ' Text.Whitespace
+'NIP' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n\n' Text.Whitespace
+
+'%HALT' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'#010f' Literal.Number.Hex
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n\n' Text.Whitespace
+
+'%RTN' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'JMP2r' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%TOS' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'SWP' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%MOD' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'DUP2' Keyword.Reserved
+' ' Text.Whitespace
+'/' Name
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'-' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%GTS2' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'#8000' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'SWP2' Keyword.Reserved
+' ' Text.Whitespace
+'#8000' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'<<' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%2/' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'SFT' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%2//' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'SFT2' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%4//' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'#02' Literal.Number.Hex
+' ' Text.Whitespace
+'SFT2' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%8//' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'#03' Literal.Number.Hex
+' ' Text.Whitespace
+'SFT2' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%8**' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'#30' Literal.Number.Hex
+' ' Text.Whitespace
+'SFT2' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n\n' Text.Whitespace
+
+'%AUTO-NONE' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/auto' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%AUTO-X' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/auto' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'%AUTO-YADDR' Name.Decorator
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'#06' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/auto' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+' ' Text.Whitespace
+'}' Punctuation
+'\n\n' Text.Whitespace
+
+'(' Comment.Multiline
+' devices ' Comment.Multiline
+')' Comment.Multiline
+'\n\n' Text.Whitespace
+
+'|00' Keyword.Declaration
+' ' Text.Whitespace
+'@System' Name.Function
+' ' Text.Whitespace
+'&vector' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&wst' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&rst' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&pad' Name.Label
+' ' Text.Whitespace
+'$4' Keyword.Declaration
+' ' Text.Whitespace
+'&r' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&g' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&b' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&debug' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&halt' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+'\n' Text.Whitespace
+
+'|10' Keyword.Declaration
+' ' Text.Whitespace
+'@Console' Name.Function
+' ' Text.Whitespace
+'&vector' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&read' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&pad' Name.Label
+' ' Text.Whitespace
+'$5' Keyword.Declaration
+' ' Text.Whitespace
+'&write' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&error' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+'\n' Text.Whitespace
+
+'|20' Keyword.Declaration
+' ' Text.Whitespace
+'@Screen' Name.Function
+' ' Text.Whitespace
+'&vector' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&width' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&height' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&auto' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&pad' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&x' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&y' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&addr' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&pixel' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&sprite' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+'\n' Text.Whitespace
+
+'|30' Keyword.Declaration
+' ' Text.Whitespace
+'@Audio0' Name.Function
+' ' Text.Whitespace
+'&vector' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&position' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&output' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&pad' Name.Label
+' ' Text.Whitespace
+'$3' Keyword.Declaration
+' ' Text.Whitespace
+'&adsr' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&length' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&addr' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&volume' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&pitch' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+'\n' Text.Whitespace
+
+'|80' Keyword.Declaration
+' ' Text.Whitespace
+'@Controller' Name.Function
+' ' Text.Whitespace
+'&vector' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&button' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&key' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+'\n' Text.Whitespace
+
+'|90' Keyword.Declaration
+' ' Text.Whitespace
+'@Mouse' Name.Function
+' ' Text.Whitespace
+'&vector' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&x' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&y' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&state' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&pad' Name.Label
+' ' Text.Whitespace
+'$3' Keyword.Declaration
+' ' Text.Whitespace
+'&modx' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&mody' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+'\n' Text.Whitespace
+
+'|a0' Keyword.Declaration
+' ' Text.Whitespace
+'@File' Name.Function
+' ' Text.Whitespace
+'&vector' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&success' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&stat' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&delete' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&append' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+' ' Text.Whitespace
+'&name' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&length' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&read' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&write' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+'\n\n' Text.Whitespace
+
+'(' Comment.Multiline
+' variables ' Comment.Multiline
+')' Comment.Multiline
+'\n\n' Text.Whitespace
+
+'|0000' Keyword.Declaration
+'\n\n' Text.Whitespace
+
+'@last-note' Name.Function
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+'\n' Text.Whitespace
+
+'@octave' Name.Function
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+'\n' Text.Whitespace
+
+'@pointer' Name.Function
+' \n\t' Text.Whitespace
+'&x' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&y' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+'\n' Text.Whitespace
+
+'@center' Name.Function
+' \n\t' Text.Whitespace
+'&x' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&y' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+'\n' Text.Whitespace
+
+'@adsr-view' Name.Function
+' \n\t' Text.Whitespace
+'&x1' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&y1' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&x2' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&y2' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+'\n' Text.Whitespace
+
+'@wave-view' Name.Function
+' \n\t' Text.Whitespace
+'&x1' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&y1' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&x2' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&y2' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+'\n' Text.Whitespace
+
+'@octave-view' Name.Function
+' \n\t' Text.Whitespace
+'&x1' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&y1' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&x2' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+' ' Text.Whitespace
+'&y2' Name.Label
+' ' Text.Whitespace
+'$2' Keyword.Declaration
+'\n\n' Text.Whitespace
+
+'(' Comment.Multiline
+' program ' Comment.Multiline
+')' Comment.Multiline
+'\n\n' Text.Whitespace
+
+'|0100' Keyword.Declaration
+' ' Text.Whitespace
+'(' Comment.Multiline
+' -> ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\n\t' Text.Whitespace
+'(' Comment.Multiline
+' theme ' Comment.Multiline
+')' Comment.Multiline
+' \n\t' Text.Whitespace
+'#0fe5' Literal.Number.Hex
+' ' Text.Whitespace
+'.System/r' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t' Text.Whitespace
+'#0fc5' Literal.Number.Hex
+' ' Text.Whitespace
+'.System/g' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t' Text.Whitespace
+'#0f25' Literal.Number.Hex
+' ' Text.Whitespace
+'.System/b' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' vectors ' Comment.Multiline
+')' Comment.Multiline
+' \n\t' Text.Whitespace
+';on-frame' Name.Variable.Global
+' ' Text.Whitespace
+'.Screen/vector' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';on-control' Name.Variable.Global
+' ' Text.Whitespace
+'.Controller/vector' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';on-mouse' Name.Variable.Global
+' ' Text.Whitespace
+'.Mouse/vector' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';on-message' Name.Variable.Global
+' ' Text.Whitespace
+'.Console/vector' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' find center ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'.Screen/width' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'2//' Name
+' ' Text.Whitespace
+'.center/x' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/height' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'2//' Name
+' ' Text.Whitespace
+'.center/y' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' place octave ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'.center/x' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0080' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.octave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.center/y' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0008' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.octave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.octave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0050' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.octave-view/x2' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.octave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0018' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.octave-view/y2' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' place adsr ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'.center/x' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0020' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.adsr-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.center/y' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0008' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.adsr-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.adsr-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#00a0' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.adsr-view/x2' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.adsr-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0018' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.adsr-view/y2' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' place waveform ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'.center/x' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0080' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.wave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.center/y' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0020' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.wave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.wave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0100' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.wave-view/x2' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.wave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0020' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.wave-view/y2' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' default settings ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'#ff' Literal.Number.Hex
+' ' Text.Whitespace
+'.last-note' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ' Keyword.Reserved
+'\n\t' Text.Whitespace
+'#041c' Literal.Number.Hex
+' ' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'#dd' Literal.Number.Hex
+' ' Text.Whitespace
+'.Audio0/volume' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t' Text.Whitespace
+';sin-pcm' Name.Variable.Global
+' ' Text.Whitespace
+'.Audio0/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'#0100' Literal.Number.Hex
+' ' Text.Whitespace
+'.Audio0/length' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' inital drawing ' Comment.Multiline
+')' Comment.Multiline
+' \n\t' Text.Whitespace
+';draw-octave' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';draw-adsr' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';draw-wave' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'BRK' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'(' Comment.Multiline
+' this data exists to test literals\n as well as multi-line ' Comment.Multiline
+'(' Comment.Multiline
+' and nested ' Comment.Multiline
+')' Comment.Multiline
+'\n comments ' Comment.Multiline
+')' Comment.Multiline
+'\n' Text.Whitespace
+
+'@test-dat' Name.Function
+' ' Text.Whitespace
+'"this' Literal.String
+' ' Text.Whitespace
+'20' Literal
+' ' Text.Whitespace
+'"is' Literal.String
+' ' Text.Whitespace
+'20' Literal
+' ' Text.Whitespace
+"'a" Literal.String.Char
+' ' Text.Whitespace
+'20' Literal
+' ' Text.Whitespace
+'"test' Literal.String
+' ' Text.Whitespace
+'00' Literal
+'\n' Text.Whitespace
+
+'@test-ptr' Name.Function
+' ' Text.Whitespace
+':test-dat' Literal
+'\n\n' Text.Whitespace
+
+'@on-frame' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' -> ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\n\t' Text.Whitespace
+'.adsr-view/y2' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0020' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'#10' Literal.Number.Hex
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' \n\t' Text.Whitespace
+'&loop' Name.Label
+'\n\t\t' Text.Whitespace
+'.adsr-view/x2' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#003a' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'#10' Literal.Number.Hex
+' ' Text.Whitespace
+'OVR' Keyword.Reserved
+' ' Text.Whitespace
+'-' Name
+' ' Text.Whitespace
+'.Audio0/output' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#0f' Literal.Number.Hex
+' ' Text.Whitespace
+'AND' Keyword.Reserved
+' ' Text.Whitespace
+'<' Name
+' ' Text.Whitespace
+'.Screen/pixel' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.adsr-view/x2' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#003a' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'INC2' Keyword.Reserved
+' ' Text.Whitespace
+'INC2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'#10' Literal.Number.Hex
+' ' Text.Whitespace
+'OVR' Keyword.Reserved
+' ' Text.Whitespace
+'-' Name
+' ' Text.Whitespace
+'.Audio0/output' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#04' Literal.Number.Hex
+' ' Text.Whitespace
+'SFT' Keyword.Reserved
+' ' Text.Whitespace
+'<' Name
+' ' Text.Whitespace
+'.Screen/pixel' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'INC2' Keyword.Reserved
+' ' Text.Whitespace
+'INC2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+'GTHk' Keyword.Reserved
+' ' Text.Whitespace
+',&loop' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t' Text.Whitespace
+'POP2' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'BRK' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'@on-control' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' -> ' Comment.Multiline
+')' Comment.Multiline
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' clear last cursor ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'.pointer/x' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t' Text.Whitespace
+'.pointer/y' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t' Text.Whitespace
+'#40' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'.Controller/key' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'LIT' Keyword.Reserved
+' ' Text.Whitespace
+"'a" Literal.String.Char
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-c' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'#30' Literal.Number.Hex
+' ' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#0c' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&no-c' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'LIT' Keyword.Reserved
+' ' Text.Whitespace
+"'s" Literal.String.Char
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-d' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'#32' Literal.Number.Hex
+' ' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#0c' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&no-d' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'LIT' Keyword.Reserved
+' ' Text.Whitespace
+"'d" Literal.String.Char
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-e' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'#34' Literal.Number.Hex
+' ' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#0c' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&no-e' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'LIT' Keyword.Reserved
+' ' Text.Whitespace
+"'f" Literal.String.Char
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-f' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'#35' Literal.Number.Hex
+' ' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#0c' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&no-f' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'LIT' Keyword.Reserved
+' ' Text.Whitespace
+"'g" Literal.String.Char
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-g' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'#37' Literal.Number.Hex
+' ' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#0c' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&no-g' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'LIT' Keyword.Reserved
+' ' Text.Whitespace
+"'h" Literal.String.Char
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-a' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'#39' Literal.Number.Hex
+' ' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#0c' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&no-a' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'LIT' Keyword.Reserved
+' ' Text.Whitespace
+"'j" Literal.String.Char
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-b' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'#3b' Literal.Number.Hex
+' ' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#0c' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&no-b' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'LIT' Keyword.Reserved
+' ' Text.Whitespace
+"'k" Literal.String.Char
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-c2' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'#3c' Literal.Number.Hex
+' ' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#0c' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&no-c2' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'#1b' Literal.Number.Hex
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-esc' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'HALT' Name
+' ' Text.Whitespace
+'&no-esc' Name.Label
+'\n\t' Text.Whitespace
+'POP' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' release ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'.Controller/key' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'.Controller/button' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' \n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#11' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&cu' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'#3c' Literal.Number.Hex
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&cu' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#21' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&cd' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'#3d' Literal.Number.Hex
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&cd' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#41' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&cl' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'#3e' Literal.Number.Hex
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&cl' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#81' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&cr' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'#3f' Literal.Number.Hex
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&cr' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#12' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&au' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'#40' Literal.Number.Hex
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&au' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#22' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&ad' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'#41' Literal.Number.Hex
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&ad' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#42' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&al' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'#42' Literal.Number.Hex
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&al' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#82' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&ar' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'#43' Literal.Number.Hex
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&ar' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#14' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&su' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'#44' Literal.Number.Hex
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&su' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#24' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&sd' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'#45' Literal.Number.Hex
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&sd' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#44' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&sl' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'#46' Literal.Number.Hex
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&sl' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#84' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&sr' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'#47' Literal.Number.Hex
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' ' Text.Whitespace
+'&sr' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#40' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&l' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'.Audio0/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'#0010' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.Audio0/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' ' Text.Whitespace
+'&l' Name.Label
+'\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#80' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&r' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'.Audio0/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'#0010' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Audio0/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' ' Text.Whitespace
+'&r' Name.Label
+'\n\t' Text.Whitespace
+'POP' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+';draw-octave' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';draw-wave' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'BRK' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'@on-message' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' -> ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\n\t' Text.Whitespace
+'.Console/read' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';draw-octave' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'BRK' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'@on-mouse' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' -> ' Comment.Multiline
+')' Comment.Multiline
+'\n\n\t' Text.Whitespace
+';draw-cursor' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' \n\t\n\t' Text.Whitespace
+'.Mouse/state' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' ' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'BRK' Keyword.Reserved
+' ' Text.Whitespace
+']' Punctuation
+'\n\n\t' Text.Whitespace
+'.Mouse/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'.Mouse/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'.wave-view' Name.Variable.Magic
+' ' Text.Whitespace
+';within-rect' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' \n\t\t' Text.Whitespace
+';on-touch-wave-view' Name.Variable.Global
+' ' Text.Whitespace
+'JCN2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Mouse/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'.Mouse/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'.adsr-view' Name.Variable.Magic
+' ' Text.Whitespace
+';within-rect' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' \n\t\t' Text.Whitespace
+';on-touch-adsr-view' Name.Variable.Global
+' ' Text.Whitespace
+'JCN2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Mouse/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'.Mouse/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'.octave-view' Name.Variable.Magic
+' ' Text.Whitespace
+';within-rect' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' \n\t\t' Text.Whitespace
+';on-touch-octave-view' Name.Variable.Global
+' ' Text.Whitespace
+'JCN2' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'BRK' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'@on-touch-wave-view' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' -> ' Comment.Multiline
+')' Comment.Multiline
+'\n\n\t' Text.Whitespace
+'.Mouse/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'.wave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.Audio0/length' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';draw-wave' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';draw-cursor' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' \n\n' Text.Whitespace
+
+'BRK' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'@on-touch-octave-view' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' -> ' Comment.Multiline
+')' Comment.Multiline
+'\n\n\t' Text.Whitespace
+'.Mouse/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'.octave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'8//' Name
+' ' Text.Whitespace
+'NIP' Keyword.Reserved
+' ' Text.Whitespace
+'#09' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+',&no-mod' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Mouse/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'.octave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'8//' Name
+' ' Text.Whitespace
+'NIP' Keyword.Reserved
+' \n\t\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-incr' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t\t' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#03' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+',&no-incr' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t\t' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ' Keyword.Reserved
+' ' Text.Whitespace
+'&no-incr' Name.Label
+'\n\t\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'#02' Literal.Number.Hex
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-decr' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t\t' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#ff' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+',&no-decr' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t\t' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'-' Name
+' ' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ' Keyword.Reserved
+' ' Text.Whitespace
+'&no-decr' Name.Label
+'\n\t\t' Text.Whitespace
+'POP' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' release ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'.Mouse/state' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+';draw-octave' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'BRK' Keyword.Reserved
+'\n\t' Text.Whitespace
+'&no-mod' Name.Label
+'\n\n\t' Text.Whitespace
+'.Mouse/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'.octave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'8//' Name
+' ' Text.Whitespace
+'NIP' Keyword.Reserved
+' ' Text.Whitespace
+'#06' Literal.Number.Hex
+' ' Text.Whitespace
+'>' Name
+' ' Text.Whitespace
+',&no-key' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Mouse/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'.octave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'8//' Name
+' ' Text.Whitespace
+';notes' Name.Variable.Global
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'LDA' Keyword.Reserved
+' ' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#0c' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+';play' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' release ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'.Mouse/state' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+';draw-octave' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'&no-key' Name.Label
+'\n\n' Text.Whitespace
+
+'BRK' Keyword.Reserved
+' \n\n' Text.Whitespace
+
+'@on-touch-adsr-view' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' -> ' Comment.Multiline
+')' Comment.Multiline
+'\n\n\t' Text.Whitespace
+'.Mouse/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'.adsr-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'8//' Name
+' ' Text.Whitespace
+'NIP' Keyword.Reserved
+' ' Text.Whitespace
+'#03' Literal.Number.Hex
+' ' Text.Whitespace
+'/' Name
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-a' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'#10' Literal.Number.Hex
+' ' Text.Whitespace
+'.Mouse/state' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#10' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'#e0' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+'+' Name
+'\n\t\t' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+' ' Text.Whitespace
+'&no-a' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-d' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#f0' Literal.Number.Hex
+' ' Text.Whitespace
+'AND' Keyword.Reserved
+' ' Text.Whitespace
+'STH' Keyword.Reserved
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'.Mouse/state' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#10' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'#0e' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+'#0f' Literal.Number.Hex
+' ' Text.Whitespace
+'AND' Keyword.Reserved
+' ' Text.Whitespace
+'STHr' Keyword.Reserved
+' ' Text.Whitespace
+'+' Name
+'\n\t\t' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+' ' Text.Whitespace
+'&no-d' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'#02' Literal.Number.Hex
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-s' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'#10' Literal.Number.Hex
+' ' Text.Whitespace
+'.Mouse/state' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#10' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'#e0' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+'+' Name
+'\n\t\t' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+' ' Text.Whitespace
+'&no-s' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'#03' Literal.Number.Hex
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-r' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#f0' Literal.Number.Hex
+' ' Text.Whitespace
+'AND' Keyword.Reserved
+' ' Text.Whitespace
+'STH' Keyword.Reserved
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'.Mouse/state' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#10' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'#0e' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+'#0f' Literal.Number.Hex
+' ' Text.Whitespace
+'AND' Keyword.Reserved
+' ' Text.Whitespace
+'STHr' Keyword.Reserved
+' ' Text.Whitespace
+'+' Name
+'\n\t\t' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+' ' Text.Whitespace
+'&no-r' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'#05' Literal.Number.Hex
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-left' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Audio0/volume' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' \n\t\t' Text.Whitespace
+'#10' Literal.Number.Hex
+' ' Text.Whitespace
+'.Mouse/state' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#10' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'#e0' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+'+' Name
+'\n\t\t' Text.Whitespace
+'.Audio0/volume' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+' ' Text.Whitespace
+'&no-left' Name.Label
+'\n\t' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'#06' Literal.Number.Hex
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'!~' Name
+' ' Text.Whitespace
+',&no-right' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Audio0/volume' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#f0' Literal.Number.Hex
+' ' Text.Whitespace
+'AND' Keyword.Reserved
+' ' Text.Whitespace
+'STH' Keyword.Reserved
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'.Mouse/state' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#10' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'#0e' Literal.Number.Hex
+' ' Text.Whitespace
+'*' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+'#0f' Literal.Number.Hex
+' ' Text.Whitespace
+'AND' Keyword.Reserved
+' ' Text.Whitespace
+'STHr' Keyword.Reserved
+' ' Text.Whitespace
+'+' Name
+'\n\t\t' Text.Whitespace
+'.Audio0/volume' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+' ' Text.Whitespace
+'&no-right' Name.Label
+'\n\t' Text.Whitespace
+'POP' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' release ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'.Mouse/state' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t' Text.Whitespace
+';draw-adsr' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';draw-cursor' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+' \n\n' Text.Whitespace
+
+'BRK' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'@play' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' pitch -- ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#0c' Literal.Number.Hex
+' ' Text.Whitespace
+'MOD' Name
+' ' Text.Whitespace
+'.last-note' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ' Keyword.Reserved
+' \n\t' Text.Whitespace
+'.Audio0/pitch' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'RTN' Name
+'\n\n' Text.Whitespace
+
+'@draw-cursor' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' -- ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\n\t' Text.Whitespace
+'(' Comment.Multiline
+' clear last cursor ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+';cursor' Name.Variable.Global
+' ' Text.Whitespace
+'.Screen/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t' Text.Whitespace
+'.pointer/x' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t' Text.Whitespace
+'.pointer/y' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t' Text.Whitespace
+'#40' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t' Text.Whitespace
+'(' Comment.Multiline
+' record pointer positions ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'.Mouse/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'DUP2' Keyword.Reserved
+' ' Text.Whitespace
+'.pointer/x' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t' Text.Whitespace
+'.Mouse/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'DUP2' Keyword.Reserved
+' ' Text.Whitespace
+'.pointer/y' Name.Variable.Magic
+' ' Text.Whitespace
+'STZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t' Text.Whitespace
+'(' Comment.Multiline
+' colorize on state ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'#41' Literal.Number.Hex
+' ' Text.Whitespace
+'[' Punctuation
+' ' Text.Whitespace
+'.Mouse/state' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'!' Name
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'RTN' Name
+'\n\n' Text.Whitespace
+
+'@draw-octave' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' -- ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\n\t' Text.Whitespace
+'.octave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0048' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+';arrow-icns' Name.Variable.Global
+' ' Text.Whitespace
+'.Screen/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.octave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+';arrow-icns' Name.Variable.Global
+' ' Text.Whitespace
+'#0008' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.octave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0010' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+';font-hex' Name.Variable.Global
+' ' Text.Whitespace
+'.octave' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'#03' Literal.Number.Hex
+' ' Text.Whitespace
+'+' Name
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'SWP' Keyword.Reserved
+' ' Text.Whitespace
+'8**' Name
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.octave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0008' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'#03' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'.octave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.octave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'AUTO-YADDR' Name
+'\n\t' Text.Whitespace
+'.last-note' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ' Keyword.Reserved
+' ' Text.Whitespace
+'STH' Keyword.Reserved
+'\n\t' Text.Whitespace
+';keys-left-icns' Name.Variable.Global
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+',draw-key' Name.Variable.Instance
+' ' Text.Whitespace
+'JSR' Keyword.Reserved
+'\n\t' Text.Whitespace
+';keys-middle-icns' Name.Variable.Global
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+'#02' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+',draw-key' Name.Variable.Instance
+' ' Text.Whitespace
+'JSR' Keyword.Reserved
+'\n\t' Text.Whitespace
+';keys-right-icns' Name.Variable.Global
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+'#04' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+',draw-key' Name.Variable.Instance
+' ' Text.Whitespace
+'JSR' Keyword.Reserved
+'\n\t' Text.Whitespace
+';keys-left-icns' Name.Variable.Global
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+'#05' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+',draw-key' Name.Variable.Instance
+' ' Text.Whitespace
+'JSR' Keyword.Reserved
+'\n\t' Text.Whitespace
+';keys-middle-icns' Name.Variable.Global
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+'#07' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+',draw-key' Name.Variable.Instance
+' ' Text.Whitespace
+'JSR' Keyword.Reserved
+'\n\t' Text.Whitespace
+';keys-middle-icns' Name.Variable.Global
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+'#09' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+',draw-key' Name.Variable.Instance
+' ' Text.Whitespace
+'JSR' Keyword.Reserved
+'\n\t' Text.Whitespace
+';keys-right-icns' Name.Variable.Global
+' ' Text.Whitespace
+'STHr' Keyword.Reserved
+' ' Text.Whitespace
+'#0b' Literal.Number.Hex
+' ' Text.Whitespace
+'=' Name
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+',draw-key' Name.Variable.Instance
+' ' Text.Whitespace
+'JSR' Keyword.Reserved
+'\n\t' Text.Whitespace
+'AUTO-NONE' Name
+'\n\n' Text.Whitespace
+
+'RTN' Name
+'\n\n' Text.Whitespace
+
+'@draw-key' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' addr* color -- ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\t\n\t' Text.Whitespace
+'STH' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'STHr' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEOk' Keyword.Reserved
+' ' Text.Whitespace
+'DEOk' Keyword.Reserved
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2k' Keyword.Reserved
+' ' Text.Whitespace
+'#0008' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'ROT' Keyword.Reserved
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'RTN' Name
+'\n\n' Text.Whitespace
+
+'@draw-adsr' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' -- ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\n\t' Text.Whitespace
+'(' Comment.Multiline
+' adsr ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'.adsr-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.adsr-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#04' Literal.Number.Hex
+' ' Text.Whitespace
+'SFT' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+';draw-knob' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.adsr-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0018' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.adsr-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#0f' Literal.Number.Hex
+' ' Text.Whitespace
+'AND' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+';draw-knob' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.adsr-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0030' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.adsr-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#04' Literal.Number.Hex
+' ' Text.Whitespace
+'SFT' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+';draw-knob' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.adsr-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0048' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.adsr-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Audio0/adsr' Name.Variable.Magic
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#0f' Literal.Number.Hex
+' ' Text.Whitespace
+'AND' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+';draw-knob' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'(' Comment.Multiline
+' volume ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'.adsr-view/x2' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0028' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.adsr-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Audio0/volume' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#04' Literal.Number.Hex
+' ' Text.Whitespace
+'SFT' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+';draw-knob' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.adsr-view/x2' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0010' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.adsr-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Audio0/volume' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI' Keyword.Reserved
+' ' Text.Whitespace
+'#0f' Literal.Number.Hex
+' ' Text.Whitespace
+'AND' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+';draw-knob' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'RTN' Name
+'\n\n' Text.Whitespace
+
+'@draw-wave' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' -- ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\n\t' Text.Whitespace
+'(' Comment.Multiline
+' clear ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'.wave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.wave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.wave-view/x2' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'INC2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.wave-view/y2' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+';fill-rect' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+';draw-wave-length' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'.wave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' waveform ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'#ff' Literal.Number.Hex
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' \n\t' Text.Whitespace
+'&loop' Name.Label
+'\n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' dotted line ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'AND' Keyword.Reserved
+' ' Text.Whitespace
+',&no-dot' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+' \n\t\t\t' Text.Whitespace
+'.wave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0010' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t\t\t' Text.Whitespace
+'#03' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/pixel' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'&no-dot' Name.Label
+'\n\t\t' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'OVR' Keyword.Reserved
+' ' Text.Whitespace
+'.Audio0/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'LDA' Keyword.Reserved
+' \n\t\t' Text.Whitespace
+'2/' Name
+'\n\t\t' Text.Whitespace
+'TOS' Name
+' ' Text.Whitespace
+'4//' Name
+' ' Text.Whitespace
+'.wave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'INC2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' draw ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'DUP' Keyword.Reserved
+' \n\t\t\t' Text.Whitespace
+'.Audio0/length' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'NIP' Keyword.Reserved
+' ' Text.Whitespace
+'>' Name
+' \n\t\t\t' Text.Whitespace
+'.Audio0/length' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'#0100' Literal.Number.Hex
+' ' Text.Whitespace
+'!!' Name
+' ' Text.Whitespace
+'#0101' Literal.Number.Hex
+' ' Text.Whitespace
+'==' Name
+' ' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'ADD' Keyword.Reserved
+' ' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/pixel' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'INC' Keyword.Reserved
+' ' Text.Whitespace
+'GTHk' Keyword.Reserved
+' ' Text.Whitespace
+',&loop' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t' Text.Whitespace
+'POP2' Keyword.Reserved
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' range ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'AUTO-X' Name
+'\n\t' Text.Whitespace
+'.wave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.wave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0010' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Audio0/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'#02' Literal.Number.Hex
+' ' Text.Whitespace
+';draw-short' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.wave-view/x2' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'#0020' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Audio0/length' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'#02' Literal.Number.Hex
+' ' Text.Whitespace
+';draw-short' Name.Variable.Global
+' ' Text.Whitespace
+'JSR2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'AUTO-NONE' Name
+'\n\n' Text.Whitespace
+
+'RTN' Name
+'\n\n' Text.Whitespace
+
+'@draw-wave-length' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' color -- ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\n\t' Text.Whitespace
+'STH' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.wave-view/x1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'.Audio0/length' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.wave-view/y1' Name.Variable.Magic
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'DUP2' Keyword.Reserved
+' ' Text.Whitespace
+'#0020' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'SWP2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'&loop' Name.Label
+'\n\t\t' Text.Whitespace
+'DUP2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' draw ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/pixel' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'INC2' Keyword.Reserved
+' ' Text.Whitespace
+'GTH2k' Keyword.Reserved
+' ' Text.Whitespace
+',&loop' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t' Text.Whitespace
+'POP2' Keyword.Reserved
+' ' Text.Whitespace
+'POP2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'POPr' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'RTN' Name
+'\n\n' Text.Whitespace
+
+'@draw-knob' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' x* y* value -- ' Comment.Multiline
+')' Comment.Multiline
+'\n\n\t' Text.Whitespace
+'(' Comment.Multiline
+' load ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'STH' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';knob-icns' Name.Variable.Global
+' ' Text.Whitespace
+'.Screen/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' draw ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'#0008' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t' Text.Whitespace
+';knob-icns' Name.Variable.Global
+' ' Text.Whitespace
+'#0008' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' draw ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'#0008' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t' Text.Whitespace
+';knob-icns' Name.Variable.Global
+' ' Text.Whitespace
+'#0018' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' draw ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'#0008' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t' Text.Whitespace
+';knob-icns' Name.Variable.Global
+' ' Text.Whitespace
+'#0010' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+' \n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' draw ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'#0004' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'#0008' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';font-hex' Name.Variable.Global
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+'#30' Literal.Number.Hex
+' ' Text.Whitespace
+'SFT' Keyword.Reserved
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' draw ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'#01' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'#0004' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+';knob-offsetx' Name.Variable.Global
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'LDA' Keyword.Reserved
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEI2' Keyword.Reserved
+' ' Text.Whitespace
+'#0010' Literal.Number.Hex
+' ' Text.Whitespace
+'--' Name
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'#00' Literal.Number.Hex
+' ' Text.Whitespace
+'STHr' Keyword.Reserved
+' ' Text.Whitespace
+';knob-offsety' Name.Variable.Global
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'LDA' Keyword.Reserved
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+';knob-icns' Name.Variable.Global
+' ' Text.Whitespace
+'#0020' Literal.Number.Hex
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' draw ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'#05' Literal.Number.Hex
+' ' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'RTN' Name
+'\n\n' Text.Whitespace
+
+'@draw-short' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' short* color -- ' Comment.Multiline
+')' Comment.Multiline
+'\n\n\t' Text.Whitespace
+'STH' Keyword.Reserved
+' \n\t' Text.Whitespace
+'SWP' Keyword.Reserved
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+',draw-byte' Name.Variable.Instance
+' ' Text.Whitespace
+'JSR' Keyword.Reserved
+' \n\t' Text.Whitespace
+'STHr' Keyword.Reserved
+' \n\n' Text.Whitespace
+
+'@draw-byte' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' byte color -- ' Comment.Multiline
+')' Comment.Multiline
+'\n\n\t' Text.Whitespace
+'STH' Keyword.Reserved
+' \n\t' Text.Whitespace
+'DUP' Keyword.Reserved
+' ' Text.Whitespace
+'#04' Literal.Number.Hex
+' ' Text.Whitespace
+'SFT' Keyword.Reserved
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+',draw-hex' Name.Variable.Instance
+' ' Text.Whitespace
+'JSR' Keyword.Reserved
+' ' Text.Whitespace
+'#0f' Literal.Number.Hex
+' ' Text.Whitespace
+'AND' Keyword.Reserved
+' \n\t' Text.Whitespace
+'STHr' Keyword.Reserved
+' \n\n' Text.Whitespace
+
+'@draw-hex' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' char color -- ' Comment.Multiline
+')' Comment.Multiline
+'\n\n\t' Text.Whitespace
+'SWP' Keyword.Reserved
+' ' Text.Whitespace
+'TOS' Name
+' ' Text.Whitespace
+'8**' Name
+' ' Text.Whitespace
+';font-hex' Name.Variable.Global
+' ' Text.Whitespace
+'++' Name
+' ' Text.Whitespace
+'.Screen/addr' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'.Screen/sprite' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'RTN' Name
+'\n\n' Text.Whitespace
+
+'@fill-rect' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' x1* y1* x2* y2* color -- ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\n\t' Text.Whitespace
+',&color' Name.Variable.Instance
+' ' Text.Whitespace
+'STR' Keyword.Reserved
+'\n\t' Text.Whitespace
+'(' Comment.Multiline
+' x1 x2 y1 y2 ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'ROT2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'&ver' Name.Label
+'\n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' save ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'DUP2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/y' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'STH2' Keyword.Reserved
+' ' Text.Whitespace
+'STH2' Keyword.Reserved
+' ' Text.Whitespace
+'OVR2' Keyword.Reserved
+' ' Text.Whitespace
+'OVR2' Keyword.Reserved
+' ' Text.Whitespace
+'SWP2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'&hor' Name.Label
+'\n\t\t\t' Text.Whitespace
+'(' Comment.Multiline
+' save ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'DUP2' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/x' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO2' Keyword.Reserved
+'\n\t\t\t' Text.Whitespace
+'(' Comment.Multiline
+' draw ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+',&color' Name.Variable.Instance
+' ' Text.Whitespace
+'LDR' Keyword.Reserved
+' ' Text.Whitespace
+'.Screen/pixel' Name.Variable.Magic
+' ' Text.Whitespace
+'DEO' Keyword.Reserved
+'\n\t\t\t' Text.Whitespace
+'(' Comment.Multiline
+' incr ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'INC2' Keyword.Reserved
+'\n\t\t\t' Text.Whitespace
+'OVR2' Keyword.Reserved
+' ' Text.Whitespace
+'OVR2' Keyword.Reserved
+' ' Text.Whitespace
+'GTS2' Name
+' ' Text.Whitespace
+',&hor' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'POP2' Keyword.Reserved
+' ' Text.Whitespace
+'POP2' Keyword.Reserved
+' ' Text.Whitespace
+'STH2r' Keyword.Reserved
+' ' Text.Whitespace
+'STH2r' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'(' Comment.Multiline
+' incr ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'INC2' Keyword.Reserved
+'\n\t\t' Text.Whitespace
+'OVR2' Keyword.Reserved
+' ' Text.Whitespace
+'OVR2' Keyword.Reserved
+' ' Text.Whitespace
+'GTS2' Name
+' ' Text.Whitespace
+',&ver' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t' Text.Whitespace
+'POP2' Keyword.Reserved
+' ' Text.Whitespace
+'POP2' Keyword.Reserved
+' ' Text.Whitespace
+'POP2' Keyword.Reserved
+' ' Text.Whitespace
+'POP2' Keyword.Reserved
+'\n\n' Text.Whitespace
+
+'RTN' Name
+'\n\t' Text.Whitespace
+'&color' Name.Label
+' ' Text.Whitespace
+'$1' Keyword.Declaration
+'\n\n' Text.Whitespace
+
+'@within-rect' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' x* y* rect -- flag ' Comment.Multiline
+')' Comment.Multiline
+'\n\t\n\t' Text.Whitespace
+'STH' Keyword.Reserved
+'\n\t' Text.Whitespace
+'(' Comment.Multiline
+' y < rect.y1 ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'DUP2' Keyword.Reserved
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+'#02' Literal.Number.Hex
+' ' Text.Whitespace
+'ADD' Keyword.Reserved
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'LTH2' Keyword.Reserved
+' ' Text.Whitespace
+',&skip' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t' Text.Whitespace
+'(' Comment.Multiline
+' y > rect.y2 ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'DUP2' Keyword.Reserved
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+'#06' Literal.Number.Hex
+' ' Text.Whitespace
+'ADD' Keyword.Reserved
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'GTH2' Keyword.Reserved
+' ' Text.Whitespace
+',&skip' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t' Text.Whitespace
+'SWP2' Keyword.Reserved
+'\n\t' Text.Whitespace
+'(' Comment.Multiline
+' x < rect.x1 ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'DUP2' Keyword.Reserved
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'LTH2' Keyword.Reserved
+' ' Text.Whitespace
+',&skip' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t' Text.Whitespace
+'(' Comment.Multiline
+' x > rect.x2 ' Comment.Multiline
+')' Comment.Multiline
+' ' Text.Whitespace
+'DUP2' Keyword.Reserved
+' ' Text.Whitespace
+'STHkr' Keyword.Reserved
+' ' Text.Whitespace
+'#04' Literal.Number.Hex
+' ' Text.Whitespace
+'ADD' Keyword.Reserved
+' ' Text.Whitespace
+'LDZ2' Keyword.Reserved
+' ' Text.Whitespace
+'GTH2' Keyword.Reserved
+' ' Text.Whitespace
+',&skip' Name.Variable.Instance
+' ' Text.Whitespace
+'JCN' Keyword.Reserved
+'\n\t' Text.Whitespace
+'POP2' Keyword.Reserved
+' ' Text.Whitespace
+'POP2' Keyword.Reserved
+' ' Text.Whitespace
+'POPr' Keyword.Reserved
+'\n\t' Text.Whitespace
+'#01' Literal.Number.Hex
+' \n' Text.Whitespace
+
+'RTN' Name
+'\n\t' Text.Whitespace
+'&skip' Name.Label
+'\n\t' Text.Whitespace
+'POP2' Keyword.Reserved
+' ' Text.Whitespace
+'POP2' Keyword.Reserved
+' ' Text.Whitespace
+'POPr' Keyword.Reserved
+'\n\t' Text.Whitespace
+'#00' Literal.Number.Hex
+'\n\n' Text.Whitespace
+
+'RTN' Name
+'\n\n' Text.Whitespace
+
+'@cursor' Name.Function
+' \n\t' Text.Whitespace
+'80c0' Literal
+' ' Text.Whitespace
+'e0f0' Literal
+' ' Text.Whitespace
+'f8e0' Literal
+' ' Text.Whitespace
+'1000' Literal
+' \n\n' Text.Whitespace
+
+'@arrow-icns' Name.Function
+' \n\t' Text.Whitespace
+'0010' Literal
+' ' Text.Whitespace
+'387c' Literal
+' ' Text.Whitespace
+'fe10' Literal
+' ' Text.Whitespace
+'1000' Literal
+'\n\t' Text.Whitespace
+'0010' Literal
+' ' Text.Whitespace
+'1010' Literal
+' ' Text.Whitespace
+'fe7c' Literal
+' ' Text.Whitespace
+'3810' Literal
+' \n\n' Text.Whitespace
+
+'@notes' Name.Function
+' \n\t' Text.Whitespace
+'30' Literal
+' ' Text.Whitespace
+'32' Literal
+' ' Text.Whitespace
+'34' Literal
+' ' Text.Whitespace
+'35' Literal
+'\n\t' Text.Whitespace
+'37' Literal
+' ' Text.Whitespace
+'39' Literal
+' ' Text.Whitespace
+'3b' Literal
+' ' Text.Whitespace
+'3c' Literal
+'\n\n' Text.Whitespace
+
+'@keys-left-icns' Name.Function
+' \n\t' Text.Whitespace
+'7c7c' Literal
+' ' Text.Whitespace
+'7c7c' Literal
+' ' Text.Whitespace
+'7c7c' Literal
+' ' Text.Whitespace
+'7c7c' Literal
+'\n\t' Text.Whitespace
+'7c7c' Literal
+' ' Text.Whitespace
+'7c7c' Literal
+' ' Text.Whitespace
+'7c7c' Literal
+' ' Text.Whitespace
+'7e7f' Literal
+'\n\t' Text.Whitespace
+'7f7f' Literal
+' ' Text.Whitespace
+'7f7f' Literal
+' ' Text.Whitespace
+'7f7f' Literal
+' ' Text.Whitespace
+'3e00' Literal
+' \n\n' Text.Whitespace
+
+'@keys-middle-icns' Name.Function
+' \n\t' Text.Whitespace
+'1c1c' Literal
+' ' Text.Whitespace
+'1c1c' Literal
+' ' Text.Whitespace
+'1c1c' Literal
+' ' Text.Whitespace
+'1c1c' Literal
+'\n\t' Text.Whitespace
+'1c1c' Literal
+' ' Text.Whitespace
+'1c1c' Literal
+' ' Text.Whitespace
+'1c1c' Literal
+' ' Text.Whitespace
+'3e7f' Literal
+'\n\t' Text.Whitespace
+'7f7f' Literal
+' ' Text.Whitespace
+'7f7f' Literal
+' ' Text.Whitespace
+'7f7f' Literal
+' ' Text.Whitespace
+'3e00' Literal
+' \n\n' Text.Whitespace
+
+'@keys-right-icns' Name.Function
+' \n\t' Text.Whitespace
+'1f1f' Literal
+' ' Text.Whitespace
+'1f1f' Literal
+' ' Text.Whitespace
+'1f1f' Literal
+' ' Text.Whitespace
+'1f1f' Literal
+'\n\t' Text.Whitespace
+'1f1f' Literal
+' ' Text.Whitespace
+'1f1f' Literal
+' ' Text.Whitespace
+'1f1f' Literal
+' ' Text.Whitespace
+'3f7f' Literal
+'\n\t' Text.Whitespace
+'7f7f' Literal
+' ' Text.Whitespace
+'7f7f' Literal
+' ' Text.Whitespace
+'7f7f' Literal
+' ' Text.Whitespace
+'3e00' Literal
+' \n\n' Text.Whitespace
+
+'@knob-icns' Name.Function
+' \n\t' Text.Whitespace
+'0003' Literal
+' ' Text.Whitespace
+'0c10' Literal
+' ' Text.Whitespace
+'2020' Literal
+' ' Text.Whitespace
+'4040' Literal
+'\n\t' Text.Whitespace
+'00c0' Literal
+' ' Text.Whitespace
+'3008' Literal
+' ' Text.Whitespace
+'0404' Literal
+' ' Text.Whitespace
+'0202' Literal
+'\n\t' Text.Whitespace
+'4040' Literal
+' ' Text.Whitespace
+'2020' Literal
+' ' Text.Whitespace
+'100c' Literal
+' ' Text.Whitespace
+'0300' Literal
+'\n\t' Text.Whitespace
+'0202' Literal
+' ' Text.Whitespace
+'0404' Literal
+' ' Text.Whitespace
+'0830' Literal
+' ' Text.Whitespace
+'c000' Literal
+'\n\t' Text.Whitespace
+'0000' Literal
+' ' Text.Whitespace
+'183c' Literal
+' ' Text.Whitespace
+'3c18' Literal
+' ' Text.Whitespace
+'0000' Literal
+' \n\n' Text.Whitespace
+
+'@knob-offsetx' Name.Function
+' \n\t' Text.Whitespace
+'01' Literal
+' ' Text.Whitespace
+'00' Literal
+' ' Text.Whitespace
+'00' Literal
+' ' Text.Whitespace
+'00' Literal
+' ' Text.Whitespace
+'00' Literal
+' ' Text.Whitespace
+'01' Literal
+' ' Text.Whitespace
+'02' Literal
+' ' Text.Whitespace
+'03' Literal
+'\n\t' Text.Whitespace
+'05' Literal
+' ' Text.Whitespace
+'06' Literal
+' ' Text.Whitespace
+'07' Literal
+' ' Text.Whitespace
+'08' Literal
+' ' Text.Whitespace
+'08' Literal
+' ' Text.Whitespace
+'08' Literal
+' ' Text.Whitespace
+'08' Literal
+' ' Text.Whitespace
+'07' Literal
+' \n\n' Text.Whitespace
+
+'@knob-offsety' Name.Function
+' \n\t' Text.Whitespace
+'07' Literal
+' ' Text.Whitespace
+'06' Literal
+' ' Text.Whitespace
+'05' Literal
+' ' Text.Whitespace
+'03' Literal
+' ' Text.Whitespace
+'02' Literal
+' ' Text.Whitespace
+'01' Literal
+' ' Text.Whitespace
+'00' Literal
+' ' Text.Whitespace
+'00' Literal
+'\n\t' Text.Whitespace
+'00' Literal
+' ' Text.Whitespace
+'00' Literal
+' ' Text.Whitespace
+'01' Literal
+' ' Text.Whitespace
+'02' Literal
+' ' Text.Whitespace
+'03' Literal
+' ' Text.Whitespace
+'05' Literal
+' ' Text.Whitespace
+'06' Literal
+' ' Text.Whitespace
+'07' Literal
+' \n\n' Text.Whitespace
+
+'@font-hex' Name.Function
+' ' Text.Whitespace
+'(' Comment.Multiline
+' 0-F ' Comment.Multiline
+')' Comment.Multiline
+'\n\t' Text.Whitespace
+'007c' Literal
+' ' Text.Whitespace
+'8282' Literal
+' ' Text.Whitespace
+'8282' Literal
+' ' Text.Whitespace
+'827c' Literal
+' ' Text.Whitespace
+'0030' Literal
+' ' Text.Whitespace
+'1010' Literal
+' ' Text.Whitespace
+'1010' Literal
+' ' Text.Whitespace
+'1010' Literal
+'\n\t' Text.Whitespace
+'007c' Literal
+' ' Text.Whitespace
+'8202' Literal
+' ' Text.Whitespace
+'7c80' Literal
+' ' Text.Whitespace
+'80fe' Literal
+' ' Text.Whitespace
+'007c' Literal
+' ' Text.Whitespace
+'8202' Literal
+' ' Text.Whitespace
+'1c02' Literal
+' ' Text.Whitespace
+'827c' Literal
+'\n\t' Text.Whitespace
+'000c' Literal
+' ' Text.Whitespace
+'1424' Literal
+' ' Text.Whitespace
+'4484' Literal
+' ' Text.Whitespace
+'fe04' Literal
+' ' Text.Whitespace
+'00fe' Literal
+' ' Text.Whitespace
+'8080' Literal
+' ' Text.Whitespace
+'7c02' Literal
+' ' Text.Whitespace
+'827c' Literal
+'\n\t' Text.Whitespace
+'007c' Literal
+' ' Text.Whitespace
+'8280' Literal
+' ' Text.Whitespace
+'fc82' Literal
+' ' Text.Whitespace
+'827c' Literal
+' ' Text.Whitespace
+'007c' Literal
+' ' Text.Whitespace
+'8202' Literal
+' ' Text.Whitespace
+'1e02' Literal
+' ' Text.Whitespace
+'0202' Literal
+'\n\t' Text.Whitespace
+'007c' Literal
+' ' Text.Whitespace
+'8282' Literal
+' ' Text.Whitespace
+'7c82' Literal
+' ' Text.Whitespace
+'827c' Literal
+' ' Text.Whitespace
+'007c' Literal
+' ' Text.Whitespace
+'8282' Literal
+' ' Text.Whitespace
+'7e02' Literal
+' ' Text.Whitespace
+'827c' Literal
+'\n\t' Text.Whitespace
+'007c' Literal
+' ' Text.Whitespace
+'8202' Literal
+' ' Text.Whitespace
+'7e82' Literal
+' ' Text.Whitespace
+'827e' Literal
+' ' Text.Whitespace
+'00fc' Literal
+' ' Text.Whitespace
+'8282' Literal
+' ' Text.Whitespace
+'fc82' Literal
+' ' Text.Whitespace
+'82fc' Literal
+'\n\t' Text.Whitespace
+'007c' Literal
+' ' Text.Whitespace
+'8280' Literal
+' ' Text.Whitespace
+'8080' Literal
+' ' Text.Whitespace
+'827c' Literal
+' ' Text.Whitespace
+'00fc' Literal
+' ' Text.Whitespace
+'8282' Literal
+' ' Text.Whitespace
+'8282' Literal
+' ' Text.Whitespace
+'82fc' Literal
+'\n\t' Text.Whitespace
+'007c' Literal
+' ' Text.Whitespace
+'8280' Literal
+' ' Text.Whitespace
+'f080' Literal
+' ' Text.Whitespace
+'827c' Literal
+' ' Text.Whitespace
+'007c' Literal
+' ' Text.Whitespace
+'8280' Literal
+' ' Text.Whitespace
+'f080' Literal
+' ' Text.Whitespace
+'8080' Literal
+' \n\n' Text.Whitespace
+
+'@sin-pcm' Name.Function
+'\n\t' Text.Whitespace
+'8083' Literal
+' ' Text.Whitespace
+'8689' Literal
+' ' Text.Whitespace
+'8c8f' Literal
+' ' Text.Whitespace
+'9295' Literal
+' ' Text.Whitespace
+'989b' Literal
+' ' Text.Whitespace
+'9ea1' Literal
+' ' Text.Whitespace
+'a4a7' Literal
+' ' Text.Whitespace
+'aaad' Literal
+'\n\t' Text.Whitespace
+'b0b3' Literal
+' ' Text.Whitespace
+'b6b9' Literal
+' ' Text.Whitespace
+'bbbe' Literal
+' ' Text.Whitespace
+'c1c3' Literal
+' ' Text.Whitespace
+'c6c9' Literal
+' ' Text.Whitespace
+'cbce' Literal
+' ' Text.Whitespace
+'d0d2' Literal
+' ' Text.Whitespace
+'d5d7' Literal
+'\n\t' Text.Whitespace
+'d9db' Literal
+' ' Text.Whitespace
+'dee0' Literal
+' ' Text.Whitespace
+'e2e4' Literal
+' ' Text.Whitespace
+'e6e7' Literal
+' ' Text.Whitespace
+'e9eb' Literal
+' ' Text.Whitespace
+'ecee' Literal
+' ' Text.Whitespace
+'f0f1' Literal
+' ' Text.Whitespace
+'f2f4' Literal
+'\n\t' Text.Whitespace
+'f5f6' Literal
+' ' Text.Whitespace
+'f7f8' Literal
+' ' Text.Whitespace
+'f9fa' Literal
+' ' Text.Whitespace
+'fbfb' Literal
+' ' Text.Whitespace
+'fcfd' Literal
+' ' Text.Whitespace
+'fdfe' Literal
+' ' Text.Whitespace
+'fefe' Literal
+' ' Text.Whitespace
+'fefe' Literal
+'\n\t' Text.Whitespace
+'fffe' Literal
+' ' Text.Whitespace
+'fefe' Literal
+' ' Text.Whitespace
+'fefe' Literal
+' ' Text.Whitespace
+'fdfd' Literal
+' ' Text.Whitespace
+'fcfb' Literal
+' ' Text.Whitespace
+'fbfa' Literal
+' ' Text.Whitespace
+'f9f8' Literal
+' ' Text.Whitespace
+'f7f6' Literal
+'\n\t' Text.Whitespace
+'f5f4' Literal
+' ' Text.Whitespace
+'f2f1' Literal
+' ' Text.Whitespace
+'f0ee' Literal
+' ' Text.Whitespace
+'eceb' Literal
+' ' Text.Whitespace
+'e9e7' Literal
+' ' Text.Whitespace
+'e6e4' Literal
+' ' Text.Whitespace
+'e2e0' Literal
+' ' Text.Whitespace
+'dedb' Literal
+'\n\t' Text.Whitespace
+'d9d7' Literal
+' ' Text.Whitespace
+'d5d2' Literal
+' ' Text.Whitespace
+'d0ce' Literal
+' ' Text.Whitespace
+'cbc9' Literal
+' ' Text.Whitespace
+'c6c3' Literal
+' ' Text.Whitespace
+'c1be' Literal
+' ' Text.Whitespace
+'bbb9' Literal
+' ' Text.Whitespace
+'b6b3' Literal
+'\n\t' Text.Whitespace
+'b0ad' Literal
+' ' Text.Whitespace
+'aaa7' Literal
+' ' Text.Whitespace
+'a4a1' Literal
+' ' Text.Whitespace
+'9e9b' Literal
+' ' Text.Whitespace
+'9895' Literal
+' ' Text.Whitespace
+'928f' Literal
+' ' Text.Whitespace
+'8c89' Literal
+' ' Text.Whitespace
+'8683' Literal
+'\n\t' Text.Whitespace
+'807d' Literal
+' ' Text.Whitespace
+'7a77' Literal
+' ' Text.Whitespace
+'7471' Literal
+' ' Text.Whitespace
+'6e6b' Literal
+' ' Text.Whitespace
+'6865' Literal
+' ' Text.Whitespace
+'625f' Literal
+' ' Text.Whitespace
+'5c59' Literal
+' ' Text.Whitespace
+'5653' Literal
+'\n\t' Text.Whitespace
+'504d' Literal
+' ' Text.Whitespace
+'4a47' Literal
+' ' Text.Whitespace
+'4542' Literal
+' ' Text.Whitespace
+'3f3d' Literal
+' ' Text.Whitespace
+'3a37' Literal
+' ' Text.Whitespace
+'3532' Literal
+' ' Text.Whitespace
+'302e' Literal
+' ' Text.Whitespace
+'2b29' Literal
+'\n\t' Text.Whitespace
+'2725' Literal
+' ' Text.Whitespace
+'2220' Literal
+' ' Text.Whitespace
+'1e1c' Literal
+' ' Text.Whitespace
+'1a19' Literal
+' ' Text.Whitespace
+'1715' Literal
+' ' Text.Whitespace
+'1412' Literal
+' ' Text.Whitespace
+'100f' Literal
+' ' Text.Whitespace
+'0e0c' Literal
+'\n\t' Text.Whitespace
+'0b0a' Literal
+' ' Text.Whitespace
+'0908' Literal
+' ' Text.Whitespace
+'0706' Literal
+' ' Text.Whitespace
+'0505' Literal
+' ' Text.Whitespace
+'0403' Literal
+' ' Text.Whitespace
+'0302' Literal
+' ' Text.Whitespace
+'0202' Literal
+' ' Text.Whitespace
+'0202' Literal
+'\n\t' Text.Whitespace
+'0102' Literal
+' ' Text.Whitespace
+'0202' Literal
+' ' Text.Whitespace
+'0202' Literal
+' ' Text.Whitespace
+'0303' Literal
+' ' Text.Whitespace
+'0405' Literal
+' ' Text.Whitespace
+'0506' Literal
+' ' Text.Whitespace
+'0708' Literal
+' ' Text.Whitespace
+'090a' Literal
+'\n\t' Text.Whitespace
+'0b0c' Literal
+' ' Text.Whitespace
+'0e0f' Literal
+' ' Text.Whitespace
+'1012' Literal
+' ' Text.Whitespace
+'1415' Literal
+' ' Text.Whitespace
+'1719' Literal
+' ' Text.Whitespace
+'1a1c' Literal
+' ' Text.Whitespace
+'1e20' Literal
+' ' Text.Whitespace
+'2225' Literal
+'\n\t' Text.Whitespace
+'2729' Literal
+' ' Text.Whitespace
+'2b2e' Literal
+' ' Text.Whitespace
+'3032' Literal
+' ' Text.Whitespace
+'3537' Literal
+' ' Text.Whitespace
+'3a3d' Literal
+' ' Text.Whitespace
+'3f42' Literal
+' ' Text.Whitespace
+'4547' Literal
+' ' Text.Whitespace
+'4a4d' Literal
+'\n\t' Text.Whitespace
+'5053' Literal
+' ' Text.Whitespace
+'5659' Literal
+' ' Text.Whitespace
+'5c5f' Literal
+' ' Text.Whitespace
+'6265' Literal
+' ' Text.Whitespace
+'686b' Literal
+' ' Text.Whitespace
+'6e71' Literal
+' ' Text.Whitespace
+'7477' Literal
+' ' Text.Whitespace
+'7a7d' Literal
+'\n' Text.Whitespace